News Download Tutorial FAQ Reference Buy

자바 : 숙련자용 : Robot

개요
로봇을 구성하는 로보이드 또는 디바이스를 찾거나 로봇을 제어하기 위한 메소드를 정의합니다.

상속 관계:
퍼블릭 메소드
요약
public abstract String getId()
public abstract int getIndex()
public abstract String getName()
public abstract void setName(String name)
public abstract Roboid findRoboidByName(String name)
public abstract Device findDeviceByName(String name)
public abstract Device findDeviceById(int deviceId)
public abstract boolean e(int deviceId)
public abstract int read(int deviceId)
public abstract int read(int deviceId, int index)
public abstract int read(int deviceId, int[] data)
public abstract float readFloat(int deviceId)
public abstract int readFloat(int deviceId, float[] data)
public abstract float readFloat(int deviceId, int index)
public abstract String readString(int deviceId)
public abstract String readString(int deviceId, int index)
public abstract int readString(int deviceId, String[] data)
public abstract boolean write(int deviceId, int data)
public abstract boolean write(int deviceId, int index, int data)
public abstract int write(int deviceId, int[] data)
public abstract boolean writeFloat(int deviceId, float data)
public abstract int writeFloat(int deviceId, float[] data)
public abstract boolean writeFloat(int deviceId, int index, float data)
public abstract boolean writeString(int deviceId, int index, String data)
public abstract boolean writeString(int deviceId, String data)
public abstract int writeString(int deviceId, String[] data)
public abstract void addDeviceDataChangedListener(DeviceDataChangedListener listener)
public abstract void removeDeviceDataChangedListener(DeviceDataChangedListener listener)
public abstract void clearDeviceDataChangedListeners()
public abstract void dispose()
버전 1.0.0부터
public abstract void addDeviceDataChangedListener(DeviceDataChangedListener listener)
디바이스의 데이터가 갱신되었을 때 호출되도록 listener를 등록한다.

파라미터:
  • listener: 등록할 리스너

DeviceDataChangedListener listener = new DeviceDataChangedListener() {
    public void onDeviceDataChanged(Device device, Object values, long timestamp) {
        int leftProximity = 0;
        if(device.getId() == Hamster.LEFT_PROXIMITY) {
            leftProximity = ((int[])values)[0];
        }
    }
};

Hamster hamster = new Hamster();
// 리스너를 등록한다.
hamster.addDeviceDataChangedListener(listener);
버전 1.1.0부터
public abstract void clearDeviceDataChangedListeners()
등록된 모든 리스너를 제거한다.
버전 1.1.0부터
public abstract void dispose()
로봇의 통신 연결을 종료한다.

로봇의 통신 연결을 종료한 이후에는 read 또는 write 메소드를 사용하여 데이터를 읽거나 쓸 수 없다.
버전 1.0.0부터
public abstract boolean e(int deviceId)
자식 디바이스 중에서 ID가 deviceId인 디바이스의 데이터가 갱신되었는지 확인한다.

ID가 deviceId인 자식 디바이스가 없으면 false를 반환한다. 센서 또는 이펙터 디바이스는 데이터가 계속 갱신되기 때문에 확인할 필요가 없지만, 커맨드 또는 이벤트 디바이스는 데이터를 읽기 전에 반드시 이 메소드를 사용하여 데이터가 갱신되었는지 확인해야 한다. 그렇지 않으면 커맨드 또는 이벤트가 발생한 시점을 알 수가 없기 때문에 현재 발생한 커맨드 또는 이벤트의 데이터가 아니라 과거에 발생하였던 커맨드 또는 이벤트의 데이터를 읽을 수도 있다.

파라미터:
  • deviceId: 디바이스 ID

반환 값:
    디바이스의 데이터가 갱신되었으면 true, 아니면 false

Hamster hamster = new Hamster();
int state = 0;
if(hamster.e(Hamster.LINE_TRACER_STATE)) { // 데이터가 갱신되었는지 확인한다.
    state = hamster.read(Hamster.LINE_TRACER_STATE); // 데이터를 읽는다.
}
버전 1.0.0부터
public abstract Device findDeviceById(int deviceId)
자식 디바이스 중에서 ID가 deviceId인 디바이스를 찾아 객체를 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 null을 반환한다.

파라미터:
  • deviceId: 찾을 디바이스의 ID

반환 값:
    Device 객체 또는 null

Hamster hamster = new Hamster();
// 왼쪽 바퀴 이펙터 디바이스의 객체를 얻는다.
Device device = hamster.findDeviceById(Hamster.LEFT_WHEEL);
버전 1.0.0부터
public abstract Device findDeviceByName(String name)
자식 디바이스 중에서 이름이 name인 디바이스를 찾아 객체를 반환한다.

이름이 name인 자식 디바이스가 없으면 null을 반환한다. 이 때, 자식 로보이드에 포함된 디바이스의 이름은 "자식로보이드.디바이스"와 같이 "."으로 구분된 형식을 사용한다. 예: "Hamster.LeftWheel"

파라미터:
  • name: 찾을 디바이스의 이름

반환 값:
    Device 객체 또는 null

Hamster hamster = new Hamster();
// 왼쪽 바퀴 이펙터 디바이스의 객체를 얻는다.
Device device = hamster.findDeviceByName("Hamster.LeftWheel");
버전 1.0.0부터
public abstract Roboid findRoboidByName(String name)
자식 로보이드 중에서 이름이 name인 로보이드를 찾아 객체를 반환한다.

이름이 name인 자식 로보이드가 없으면 null을 반환한다. 이 때, 자식 로보이드에 포함된 로보이드의 이름은 "자식로보이드.로보이드"와 같이 "."으로 구분된 형식을 사용한다. 예: "Child.Pen"

파라미터:
  • name: 찾을 로보이드의 이름

반환 값:
    Roboid 객체 또는 null

Hamster hamster = new Hamster();
Roboid roboid = hamster.findRoboidByName("Hamster");
버전 1.0.0부터
public abstract String getId()
로봇의 ID를 반환한다.

반환 값:
    로봇의 ID를 나타내는 문자열

Hamster hamster = new Hamster();
// 로봇의 ID를 얻는다.
String id = hamster.getId();
버전 1.0.0부터
public abstract int getIndex()
몇 번째 로봇인지를 나타내는 인덱스를 반환한다.

로봇의 인덱스는 론처에서 로봇이 등록된 순서대로 0부터 시작하는 일련 번호이다.
론처에서 '사용하지 않음'으로 설정한 로봇은 제외하고, 사용 중인 로봇들을 모델 기준으로 그룹핑하여 각 그룹 별로 순서대로 일련 번호가 부여된다. 즉, 로봇의 모델이 다르면 인덱스는 0부터 새로 시작한다.
따라서 로봇의 모델 ID와 인덱스, 또는 모델 코드와 인덱스를 사용하여 각각의 로봇을 구분할 수 있다.

예를 들어 햄스터 로봇 3대와 거북이 로봇 2대를 사용 중이라면, 햄스터 로봇 3대가 등록된 순서대로 0, 1, 2의 일련 번호(인덱스)를 가지고, 거북이 로봇 2대가 0, 1의 일련 번호(인덱스)를 가진다.

반환 값:
    몇 번째 로봇인지를 나타내는 인덱스

Hamster hamster = new Hamster();
// 첫 번째 로봇임을 확인한다.
if(hamster.getIndex() == 0) {
    ...
}
버전 1.0.0부터
public abstract String getName()
로봇의 이름을 반환한다.

반환 값:
    이름을 나타내는 문자열. 항상 null이 아니다.

Hamster hamster = new Hamster();
// 로봇의 이름을 얻는다.
String name = hamster.getName();
버전 1.0.0부터
public abstract int read(int deviceId)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 정수 값으로 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0을 반환한다. 디바이스의 데이터 배열 크기가 0인 경우에는 0을 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 0을 반환한다.

파라미터:
  • deviceId: 디바이스 ID

반환 값:
    디바이스의 데이터 또는 0

Hamster hamster = new Hamster();
// 왼쪽 근접 센서 값을 읽는다.
int leftProximity = hamster.read(Hamster.LEFT_PROXIMITY);
버전 1.0.0부터
public abstract int read(int deviceId, int index)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 정수 값으로 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0을 반환한다. index가 디바이스의 데이터 배열 크기보다 크거나 같은 경우, 혹은 index가 음수인 경우에는 0을 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 0을 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • index: 디바이스 데이터 배열의 인덱스

반환 값:
    디바이스의 데이터 또는 0

Hamster hamster = new Hamster();
// Y축 가속도 센서 값을 읽는다.
int accelerationY = hamster.read(Hamster.ACCELERATION, 1);
버전 1.0.0부터
public abstract int read(int deviceId, int[] data)
ID가 deviceId인 자식 디바이스의 데이터 배열을 정수형 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0을 반환한다. data 배열의 크기가 디바이스의 데이터 배열 크기보다 작은 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열 크기만큼만 복사한다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING인인 경우에는 복사하지 않고 0을 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스의 데이터 배열을 복사할 정수형 배열

반환 값:
    복사한 데이터의 개수

Hamster hamster = new Hamster();
int[] data = new int[3];
// 가속도 센서 디바이스의 데이터를 모두 읽는다.
hamster.read(Hamster.ACCELERATION, data);
버전 1.0.0부터
public abstract float readFloat(int deviceId)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 실수 값으로 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0.0을 반환한다. 디바이스의 데이터 배열 크기가 0인 경우에는 0.0을 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 0.0을 반환한다.

파라미터:
  • deviceId: 디바이스 ID

반환 값:
    디바이스의 데이터 또는 0.0
버전 1.0.0부터
public abstract int readFloat(int deviceId, float[] data)
ID가 deviceId인 자식 디바이스의 데이터 배열을 실수형 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0을 반환한다. data 배열의 크기가 디바이스의 데이터 배열 크기보다 작은 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열 크기만큼만 복사한다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING인 경우에는 복사하지 않고 0을 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스의 데이터 배열을 복사할 실수형 배열

반환 값:
    복사한 데이터의 개수
버전 1.0.0부터
public abstract float readFloat(int deviceId, int index)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 실수 값으로 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0.0을 반환한다. index가 디바이스의 데이터 배열 크기보다 크거나 같은 경우, 혹은 index가 음수인 경우에는 0.0을 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 0.0을 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • index: 디바이스 데이터 배열의 인덱스

반환 값:
    디바이스의 데이터 또는 0.0
버전 1.0.0부터
public abstract String readString(int deviceId)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 스트링으로 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 ""을 반환한다. 디바이스의 데이터 배열 크기가 0인 경우에는 ""을 반환한다. 디바이스의 데이터 형이 DataType.STRING이 아닌 경우에는 ""을 반환한다.

파라미터:
  • deviceId: 디바이스 ID

반환 값:
    디바이스의 데이터 또는 ""
버전 1.0.0부터
public abstract String readString(int deviceId, int index)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 스트링으로 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 ""을 반환한다. index가 디바이스의 데이터 배열 크기보다 크거나 같은 경우, 혹은 index가 음수인 경우에는 ""을 반환한다. 디바이스의 데이터 형이 DataType.STRING이 아닌 경우에는 ""을 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • index: 디바이스 데이터 배열의 인덱스

반환 값:
    디바이스의 데이터 또는 ""
버전 1.0.0부터
public abstract int readString(int deviceId, String[] data)
ID가 deviceId인 자식 디바이스의 데이터 배열을 스트링 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0을 반환한다. data 배열의 크기가 디바이스의 데이터 배열 크기보다 작은 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열 크기만큼만 복사한다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING이 아닌 경우에는 복사하지 않고 0을 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스의 데이터 배열을 복사할 스트링 배열

반환 값:
    복사한 데이터의 개수
버전 1.0.0부터
public abstract void removeDeviceDataChangedListener(DeviceDataChangedListener listener)
등록된 리스너 목록에서 listener를 제거한다.

파라미터:
  • listener: 제거할 리스너

DeviceDataChangedListener listener = new DeviceDataChangedListener() {
    private int leftProximity;

    public void onDeviceDataChanged(Device device, Object values, long timestamp) {
        if(device.getId() == Hamster.LEFT_PROXIMITY) {
            leftProximity = ((int[])values)[0];
        }
    }
};

Hamster hamster = new Hamster();
// 리스너를 제거한다.
hamster.removeDeviceDataChangedListener(listener);
버전 1.1.0부터
public abstract void setName(String name)
로봇의 이름을 name으로 설정한다.

파라미터:
  • name: 설정할 이름. null을 입력한 경우에는 이름이 ""로 설정된다.

Hamster hamster = new Hamster();
// 로봇의 이름을 "Hamster"로 설정한다.
hamster.setName("Hamster");
버전 1.0.0부터
public abstract boolean write(int deviceId, int data)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스 0의 위치에 정수 값 data를 쓴다.

ID가 deviceId인 자식 디바이스가 없으면 false를 반환한다. 디바이스의 데이터 배열 크기가 0인 경우에는 쓰지 않고 false를 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 쓰지 않고 false를 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스에 쓸 정수 값 데이터

반환 값:
    성공하면 true, 실패하면 false

Hamster hamster = new Hamster();
// 왼쪽 바퀴의 속도를 30으로 설정한다.
hamster.write(Hamster.LEFT_WHEEL, 30);
버전 1.0.0부터
public abstract boolean write(int deviceId, int index, int data)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스가 index인 위치에 정수 값 data를 쓴다.

ID가 deviceId인 자식 디바이스가 없으면 false를 반환한다. index가 디바이스의 데이터 배열 크기보다 크거나 같은 경우, 혹은 index가 음수인 경우에는 쓰지 않고 false를 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 쓰지 않고 false를 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • index: 디바이스 데이터 배열의 인덱스
  • data: 디바이스에 쓸 정수 값 데이터

반환 값:
    성공하면 true, 실패하면 false

Hamster hamster = new Hamster();
// 왼쪽 바퀴의 속도를 30으로 설정한다.
hamster.write(Hamster.LEFT_WHEEL, 0, 30);
버전 1.0.0부터
public abstract int write(int deviceId, int[] data)
ID가 deviceId인 자식 디바이스의 데이터 배열에 정수형 배열 data를 복사하고, 복사한 데이터의 개수를 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0을 반환한다. data 배열의 크기가 디바이스의 데이터 배열 크기보다 작은 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열 크기만큼만 복사한다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING인 경우에는 복사하지 않고 0을 반환한다. 디바이스의 데이터 배열 크기가 가변적인 경우(데이터 배열 크기가 -1로 지정된 경우)에는 data 배열의 크기만큼 디바이스의 데이터 배열을 새로 만들어서 data 배열을 복사한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스의 데이터 배열에 복사할 정수형 배열

반환 값:
    복사한 데이터의 개수
버전 1.0.0부터
public abstract boolean writeFloat(int deviceId, float data)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스 0의 위치에 실수 값 data를 쓴다.

ID가 deviceId인 자식 디바이스가 없으면 false를 반환한다. 디바이스의 데이터 배열 크기가 0인 경우에는 쓰지 않고 false를 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 쓰지 않고 false를 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스에 쓸 실수 값 데이터

반환 값:
    성공하면 true, 실패하면 false

Hamster hamster = new Hamster();
// 버저 소리의 음 높이를 261.63 Hz로 설정한다.
hamster.writeFloat(Hamster.BUZZER, 261.63f);
버전 1.0.0부터
public abstract int writeFloat(int deviceId, float[] data)
ID가 deviceId인 자식 디바이스의 데이터 배열에 실수형 배열 data를 복사하고, 복사한 데이터의 개수를 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0을 반환한다. data 배열의 크기가 디바이스의 데이터 배열 크기보다 작은 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열 크기만큼만 복사한다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING인 경우에는 복사하지 않고 0을 반환한다. 디바이스의 데이터 배열 크기가 가변적인 경우(데이터 배열 크기가 -1로 지정된 경우)에는 data 배열의 크기만큼 디바이스의 데이터 배열을 새로 만들어서 data 배열을 복사한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스의 데이터 배열에 복사할 실수형 배열

반환 값:
    복사한 데이터의 개수
버전 1.0.0부터
public abstract boolean writeFloat(int deviceId, int index, float data)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스가 index인 위치에 실수 값 data를 쓴다.

ID가 deviceId인 자식 디바이스가 없으면 false를 반환한다. index가 디바이스의 데이터 배열 크기보다 크거나 같은 경우, 혹은 index가 음수인 경우에는 쓰지 않고 false를 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 쓰지 않고 false를 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • index: 디바이스 데이터 배열의 인덱스
  • data: 디바이스에 쓸 실수 값 데이터

반환 값:
    성공하면 true, 실패하면 false

Hamster hamster = new Hamster();
// 버저 소리의 음 높이를 261.63 Hz로 설정한다.
hamster.writeFloat(Hamster.BUZZER, 0, 261.63f);
버전 1.0.0부터
public abstract boolean writeString(int deviceId, int index, String data)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스가 index인 위치에 스트링 data를 쓴다.

ID가 deviceId인 자식 디바이스가 없으면 false를 반환한다. index가 디바이스의 데이터 배열 크기보다 크거나 같은 경우, 혹은 index가 음수인 경우에는 쓰지 않고 false를 반환한다. 디바이스의 데이터 형이 DataType.STRING이 아닌 경우에는 쓰지 않고 false를 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • index: 디바이스 데이터 배열의 인덱스
  • data: 디바이스에 쓸 스트링 데이터

반환 값:
    성공하면 true, 실패하면 false
버전 1.0.0부터
public abstract boolean writeString(int deviceId, String data)
ID가 deviceId인 자식 디바이스의 데이터 배열에서 인덱스 0의 위치에 스트링 data를 쓴다

ID가 deviceId인 자식 디바이스가 없으면 false를 반환한다. 디바이스의 데이터 배열 크기가 0인 경우에는 쓰지 않고 false를 반환한다. 디바이스의 데이터 형이 DataType.STRING이 아닌 경우에는 쓰지 않고 false를 반환한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스에 쓸 스트링 데이터

반환 값:
    성공하면 true, 실패하면 false
버전 1.0.0부터
public abstract int writeString(int deviceId, String[] data)
ID가 deviceId인 자식 디바이스의 데이터 배열에 스트링 배열 data를 복사하고, 복사한 데이터의 개수를 반환한다.

ID가 deviceId인 자식 디바이스가 없으면 0을 반환한다. data 배열의 크기가 디바이스의 데이터 배열 크기보다 작은 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열 크기만큼만 복사한다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING이 아닌 경우에는 복사하지 않고 0을 반환한다. 디바이스의 데이터 배열 크기가 가변적인 경우(데이터 배열 크기가 -1로 지정된 경우)에는 data 배열의 크기만큼 디바이스의 데이터 배열을 새로 만들어서 data 배열을 복사한다.

파라미터:
  • deviceId: 디바이스 ID
  • data: 디바이스의 데이터 배열에 복사할 스트링 배열

반환 값:
    복사한 데이터의 개수
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (akaii@kw.ac.kr) if you have any problem.