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

레퍼런스 매뉴얼 : 자바 언어 : 숙련자용 : Command

개요
디바이스의 종류 중에서 커맨드 디바이스를 정의합니다.

하드웨어 로봇으로 보내는 명령 혹은 요청 데이터를 다루며, 하드웨어 로봇으로 데이터가 반드시 전달되어야 하는 디바이스를 대상으로 합니다. 기호를 다루는 심볼릭 디바이스(Symbolic Device)이며, 데이터가 숫자로 표현된다고 하더라도 기호로서의 숫자를 의미합니다. 디바이스에 데이터를 썼을 때만 하드웨어 로봇으로 데이터가 전송됩니다.

상속 관계:
퍼블릭 메소드
버전 1.1.1부터
public abstract void addDeviceDataChangedListener(DeviceDataChangedListener listener)
디바이스의 데이터가 갱신되었을 때 호출되도록 listener를 등록한다.

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

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

Hamster hamster = new Hamster();

Device device = hamster.findDeviceById(Hamster.LEFT_PROXIMITY);
// 리스너를 등록한다.
device.addDeviceDataChangedListener(listener);
버전 1.1.1부터
public abstract void clearDeviceDataChangedListeners()
등록된 모든 리스너를 제거한다.
버전 1.0.0부터
public abstract boolean e()
디바이스의 데이터가 갱신되었는지 확인한다.

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

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

Hamster hamster = new Hamster();

Device device = hamster.findDeviceById(Hamster.LINE_TRACER_STATE);
if(device.e()) { // 데이터가 갱신되었는지 확인한다.
    int state = device.read(); // 데이터를 읽는다.
}
버전 1.0.0부터
public abstract int getDataSize()
디바이스의 데이터 배열 크기를 반환한다.

여기서의 데이터 배열 크기는 모델에서 지정한 배열 크기를 의미한다. 배열 크기가 -1로 지정되어 있는 경우는 데이터 배열 크기가 가변적이라는 의미이다. 이 경우에는 -1을 반환한다.

반환 값:
    디바이스의 데이터 배열 크기. 데이터 배열 크기가 가변적인 경우에는 -1
버전 1.0.0부터
public abstract int getDataType()
디바이스의 데이터 형을 반환한다.

디바이스의 데이터 형에 대한 상수 값은 DataType에 정의되어 있다.

반환 값:
    디바이스의 데이터 형

Hamster hamster = new Hamster();

Device device = hamster.findDeviceById(Hamster.LEFT_WHEEL);
// 디바이스의 데이터 형이 정수형 배열(int[])임을 확인한다.
if(device.getDataType() == DataType.INTEGER) {
}
버전 1.1.0부터
public abstract int getDeviceType()
디바이스의 유형을 반환한다.

디바이스의 유형에 대한 상수 값은 DeviceType에 정의되어 있다.

반환 값:
    디바이스의 유형

Hamster hamster = new Hamster();

Device device = hamster.findDeviceById(Hamster.LEFT_WHEEL);
// 디바이스의 유형이 이펙터임을 확인한다.
if(device.getDeviceType() == DeviceType.EFFECTOR) {
}
버전 1.0.0부터
public abstract int getId()
디바이스의 ID를 반환한다.

반환 값:
    디바이스의 ID

Hamster hamster = new Hamster();

Device device = hamster.findDeviceById(Hamster.LEFT_WHEEL);
// 디바이스의 ID가 Hamster.LEFT_WHEEL임을 확인한다.
if(device.getId() == Hamster.LEFT_WHEEL) {
}
버전 1.0.0부터
public abstract String getName()
디바이스의 이름을 반환한다.

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

Hamster hamster = new Hamster();

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

디바이스의 데이터 배열 크기가 0인 경우에는 0을 반환한다. 디바이스의 데이터 형이 DataType.STRING인 경우에는 0을 반환한다.

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

Hamster hamster = new Hamster();

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

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

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

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

Hamster hamster = new Hamster();

Device device = hamster.findDeviceById(Hamster.ACCELERATION);
// Y축 가속도 값을 얻는다.
int value = device.read(1);
버전 1.0.0부터
public abstract int read(int[] data)
디바이스의 데이터 배열을 정수형 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.

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

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

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

Hamster hamster = new Hamster();

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

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

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

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

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

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

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

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

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

디바이스의 데이터 배열 크기가 0인 경우에는 빈 문자열("")을 반환한다. 디바이스의 데이터 형이 DataType.STRING이 아닌 경우에는 빈 문자열("")을 반환한다.

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

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

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

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

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

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

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

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

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

Hamster hamster = new Hamster();

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

파라미터:
  • name: 설정할 디바이스의 이름. null을 입력한 경우에는 이름이 빈 문자열("")로 설정된다.

Hamster hamster = new Hamster();

Device device = hamster.findDeviceById(Hamster.LEFT_LED);
// 왼쪽 LED 디바이스의 이름을 "LeftLed"로 설정한다.
device.setName("LeftLed");
버전 1.0.0부터
public abstract boolean write(int data)
디바이스의 데이터 배열에서 인덱스 0의 위치에 정수 값 data를 쓴다.

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

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

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

Hamster hamster = new Hamster();

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

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

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

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

Hamster hamster = new Hamster();

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

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

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

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

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

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

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

Hamster hamster = new Hamster();

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

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

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

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

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

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

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

Hamster hamster = new Hamster();

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

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

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

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

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

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

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

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

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

반환 값:
    복사한 데이터의 개수
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(akaii@kw.ac.kr)에게 연락하세요.