News Download Tutorial FAQ Reference Buy

자바스크립트 : 숙련자용 : Device

개요
디바이스의 데이터를 읽고 쓰는 메소드를 정의합니다.
디바이스의 데이터는 배열로 선언되어 있으며, 배열의 데이터 형과 크기, 값의 범위는 디바이스에 따라 다릅니다. 디바이스는 크게 센서리 디바이스(Sensory Device)와 모터링 디바이스(Motoring Device)로 구분됩니다. 센서리 디바이스로는 센서 디바이스와 이벤트 디바이스가 있고, 모터링 디바이스로는 이펙터 디바이스와 커맨드 디바이스가 있습니다.
메소드
버전 1.0.0부터
addDeviceDataChangedListener(listener)
디바이스의 데이터가 갱신되었을 때 호출되도록 콜백 함수 listener를 등록한다.

listener는 onDeviceDataChanged(device, values)의 형태를 가지는 함수여야 한다. 여기서 device는 Device 객체이고, values는 해당 디바이스(device)의 데이터 배열(Array 객체)이다.

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

var hamster = Hamster.create();

function onDeviceDataChanged(device, values) {
    if(device.getId() == Hamster.LEFT_PROXIMITY) {
        var leftProximity = values[0];
    }
}

var device = hamster.findDeviceById(Hamster.LEFT_PROXIMITY);
// 리스너 콜백 함수를 등록한다.
device.addDeviceDataChangedListener(onDeviceDataChanged);
버전 1.0.0부터
clearDeviceDataChangedListeners()
등록된 모든 리스너 콜백 함수를 제거한다.
버전 1.0.0부터
e()
디바이스의 데이터가 갱신되었는지 확인한다.

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

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

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

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

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

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

반환 값:
    디바이스의 데이터 형을 나타내는 정수 값

var hamster = Hamster.create();
var device = hamster.findDeviceById(Hamster.LEFT_WHEEL);
// 디바이스의 데이터 형이 정수형임을 확인한다.
if(device.getDataType() == DataType.INTEGER) {
}
버전 1.0.0부터
getDeviceType()
디바이스 유형을 반환한다.

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

반환 값:
    디바이스 유형을 나타내는 정수 값

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

반환 값:
    디바이스의 ID를 나타내는 정수 값

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

반환 값:
    디바이스의 이름을 나타내는 문자열

var hamster = Hamster.create();
var device = hamster.findDeviceById(Hamster.LEFT_WHEEL);
// 디바이스의 이름을 얻는다.
var name = device.getName();
버전 1.0.0부터
read()
디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 반환한다.

디바이스의 데이터 배열 크기가 0인 경우에는 디바이스의 데이터 형에 따라 0 또는 빈 문자열('')을 반환한다.

반환 값:
    디바이스의 데이터 값(정수/실수/문자열) 또는 0 또는 빈 문자열('')

var hamster = Hamster.create();
var device = hamster.findDeviceById(Hamster.LEFT_PROXIMITY);
// 왼쪽 근접 센서 디바이스의 데이터를 읽는다.
var value = device.read();
버전 1.0.0부터
read(array)
디바이스의 데이터 배열을 array 배열에 복사하고, 복사한 데이터의 개수를 반환한다.

array 배열의 크기가 디바이스의 데이터 배열 크기보다 작은 경우에는 array 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 array 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열 크기만큼만 복사한다. array가 배열이 아니거나 array 배열의 크기가 0인 경우에는 복사하지 않고 0을 반환한다.

파라미터:
  • array: 디바이스의 데이터 배열을 복사할 배열(Array 객체)

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

var hamster = Hamster.create();
var device = hamster.findDeviceById(Hamster.ACCELERATION);
var data = new Array(3);
// 가속도 센서 디바이스의 데이터를 모두 읽는다.
device.read(data);
버전 1.0.0부터
read(index)
디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 반환한다.

index가 디바이스의 데이터 배열 크기보다 크거나 같은 경우, 혹은 index가 음수인 경우에는 디바이스의 데이터 형에 따라 0 또는 빈 문자열('')을 반환한다.

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

반환 값:
    디바이스의 데이터 값(정수/실수/문자열) 또는 0 또는 빈 문자열('')

var hamster = Hamster.create();
var device = hamster.findDeviceById(Hamster.ACCELERATION);
// 가속도 센서 디바이스의 Y축 가속도 데이터를 읽는다.
var value = device.read(1);
버전 1.0.0부터
removeDeviceDataChangedListener(listener)
등록된 리스너 콜백 함수 목록에서 listener를 제거한다.

listener는 onDeviceDataChanged(device, values)의 형태를 가지는 함수여야 한다. 여기서 device는 Device 객체이고, values는 해당 디바이스(device)의 데이터 배열(Array 객체)이다.

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

var hamster = Hamster.create();

function onDeviceDataChanged(device, values) {
    if(device.getId() == Hamster.LEFT_PROXIMITY) {
        var leftProximity = values[0];
    }
}

var device = hamster.findDeviceById(Hamster.LEFT_PROXIMITY);
// 리스너 콜백 함수를 제거한다.
device.removeDeviceDataChangedListener(onDeviceDataChanged);
버전 1.0.0부터
setName(name)
디바이스의 이름을 name으로 설정한다.

파라미터:
  • name: 설정할 디바이스의 이름(문자열)

var hamster = Hamster.create();
var device = hamster.findDeviceById(Hamster.LEFT_LED);
// 왼쪽 LED 커맨드 디바이스의 이름을 'LeftLed'로 설정한다.
device.setName('LeftLed');
버전 1.0.0부터
write(array)
디바이스의 데이터 배열에 array 배열을 복사하고, 복사한 데이터의 개수를 반환한다.

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

파라미터:
  • array: 디바이스의 데이터 배열에 복사할 배열(Array 객체)

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

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

파라미터:
  • data: 디바이스에 쓸 데이터(정수/실수/문자열)

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

var hamster = Hamster.create();
var device = hamster.findDeviceById(Hamster.LEFT_WHEEL);
// 왼쪽 바퀴 이펙터 디바이스의 데이터를 30으로 한다.
device.write(30);
버전 1.0.0부터
write(index, data)
디바이스의 데이터 배열에서 인덱스가 index인 위치에 data를 쓴다.

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

파라미터:
  • index: 디바이스 데이터 배열의 인덱스(정수)
  • data: 디바이스에 쓸 데이터(정수/실수/문자열)

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

var hamster = Hamster.create();
var device = hamster.findDeviceById(Hamster.LEFT_WHEEL);
// 왼쪽 바퀴 이펙터 디바이스의 데이터를 30으로 한다.
device.write(0, 30);
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (akaii@kw.ac.kr) if you have any problem.