다운로드 교육자료 문제해결 레퍼런스 구입방법

레퍼런스 매뉴얼 : 프로세싱 : 숙련자용 : Runner

개요
실행을 제어하기 위한 메소드를 정의합니다.
메소드
버전 1.1.2부터
void Runner.interval(int milliseconds)
repeat() 함수가 호출된 후 다시 repeat() 함수가 호출되기 전에 쉬는 시간을 설정한다.

쉬는 시간(milliseconds)은 1 이상의 값이어야 한다.

파라미터:
  • milliseconds: 쉬는 시간(1 이상 [msec], 초기 값: 10)

import org.roboid.runtime.*;
import org.roboid.hamster.*;
import org.roboid.robot.*;

Hamster hamster;

void setup() {
    hamster = Hamster.create(this);
    Runner.interval(10); // 쉬는 시간을 10msec로 설정한다.
}

void draw() {
}

// 반복하여 호출된다.
void repeat() {
    hamster.wheels(30, 30);
    delay(1000);

    hamster.wheels(-30, -30);
    delay(1000);
}
버전 1.1.1부터
void Runner.waitUntil(String evaluate)
조건을 만족할 때까지 기다린다.

evaluate는 boolean evaluate()의 형태를 가지며 true 또는 false를 반환하는 콜백 함수의 이름이다. 함수 이름이 evaluate일 필요는 없다. evaluate() 함수가 true를 반환하면 Runner.waitUntil 함수를 중지하고, false를 반환하면 Runner.waitUntil 함수에 계속 머물러 있는다. evaluate() 함수는 약 20msec마다 호출되는데, 함수 내에서 시간을 끌면 안 되고 20msec 내에 모두 처리가 되도록 하여야 한다.

파라미터:
  • evaluate: 조건을 검사하는 함수의 이름

import org.roboid.runtime.*;
import org.roboid.hamster.*;
import org.roboid.robot.*;

Hamster hamster;

void setup() {
    hamster = Hamster.create(this);
}

void draw() {
}

// 조건을 검사하여 true 또는 false를 반환한다.
boolean evaluate() {
    return hamster.leftProximity() > 50;
}

void run() {
    // 왼쪽 근접 센서의 값이 50보다 클 때까지 기다린다.
    Runner.waitUntil("evaluate");
}
버전 1.1.1부터
void Runner.waitUntilReady()
모든 로봇이 준비될 때까지 기다린다.

여러 대의 로봇이 동작을 시작하는 시점을 동일하게 하기 위해 사용한다. 예를 들어, 컴퓨터에 2개의 동글을 연결하고 Hamster 인스턴스를 2개 생성하였는데 햄스터 로봇의 전원을 하나만 켰다고 하자. Runner.waitUntilReady() 메소드를 호출하지 않으면 첫 번째 햄스터 로봇이 통신으로 연결되었을 때 동작을 먼저 시작하게 된다. 두 번째 햄스터 로봇의 전원을 켜서 모든 로봇이 통신으로 연결된 후 동작을 같이 시작하게 하려면 Hamster 인스턴스를 생성한 후 Runner.waitUntilReady() 메소드를 호출하면 된다. 생성된 인스턴스의 개수가 컴퓨터에 연결된 동글의 개수보다 적으면 생성된 인스턴스의 개수만큼 통신이 연결될 때까지 기다린다. 컴퓨터에 연결된 동글의 개수가 생성된 인스턴스의 개수보다 적으면 컴퓨터에 연결된 동글의 개수만큼 통신이 연결될 때까지 기다린다.

import org.roboid.runtime.*;
import org.roboid.hamster.*;
import org.roboid.robot.*;

Hamster hamster1;
Hamster hamster2;

void setup() {
    hamster1 = Hamster.create(this);
    hamster2 = Hamster.create(this);

    Runner.waitUntilReady();
}

void draw() {
}

void run() {
    hamster1.wheels(30, 30);
    hamster2.wheels(30, 30);
}
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(akaii@kw.ac.kr)에게 연락하세요.