public interface

Device

extends NamedElement
org.roboid.robot.NamedElement
   ↳ org.roboid.robot.Device
Known Direct Subinterfaces
Known Indirect Subinterfaces

Interface Overview

디바이스의 데이터를 읽고 쓰는 메소드를 정의한다.

디바이스의 데이터는 배열로 선언되어 있으며, 배열의 데이터 형과 크기, 값의 범위는 디바이스에 따라 다르다. 로봇을 구성하는 디바이스의 종류와 데이터 형, 배열 크기, 값의 범위 등은 kr.robomation.physical 패키지를 참고하고, 주변기기를 구성하는 디바이스의 종류와 데이터 형, 배열 크기, 값의 범위 등은 kr.robomation.peripheral 패키지를 참고하기 바란다. 액션을 구성하는 디바이스의 종류와 데이터 형, 배열 크기, 값의 범위 등은 org.smartrobot.android.action 패키지를 참고하기 바란다.

Summary

Nested Interfaces
interface Device.DeviceDataChangedListener 디바이스의 데이터가 갱신되었을 때 호출되는 메소드를 정의한다.
Public Methods
boolean e()
디바이스의 데이터가 갱신되었는지 확인한다.
int getDataSize()
디바이스의 데이터 배열 크기를 반환한다.
int getDataType()
디바이스의 데이터 형을 반환한다.
int getId()
디바이스의 ID를 반환한다.
int getProductId()
주변기기의 제품 번호를 반환한다.
int read()
디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 정수 값으로 반환한다.
int read(int index)
디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 정수 값으로 반환한다.
int read(int[] data)
디바이스의 데이터 배열을 정수형 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.
float readFloat()
디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 실수 값으로 반환한다.
int readFloat(float[] data)
디바이스의 데이터 배열을 실수형 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.
float readFloat(int index)
디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 실수 값으로 반환한다.
String readString()
디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 스트링으로 반환한다.
String readString(int index)
디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 스트링으로 반환한다.
int readString(String[] data)
디바이스의 데이터 배열을 스트링 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.
boolean write(int data)
디바이스의 데이터 배열에서 인덱스 0의 위치에 정수 값 data를 쓴다.
boolean write(int index, int data)
디바이스의 데이터 배열에서 인덱스가 index인 위치에 정수 값 data를 쓴다.
int write(int[] data)
정수형 배열 data를 디바이스의 데이터 배열에 복사하고, 복사한 데이터의 개수를 반환한다.
boolean writeFloat(float data)
디바이스의 데이터 배열에서 인덱스 0의 위치에 실수 값 data를 쓴다.
int writeFloat(float[] data)
실수형 배열 data를 디바이스의 데이터 배열에 복사하고, 복사한 데이터의 개수를 반환한다.
boolean writeFloat(int index, float data)
디바이스의 데이터 배열에서 인덱스가 index인 위치에 실수 값 data를 쓴다.
boolean writeString(int index, String data)
디바이스의 데이터 배열에서 인덱스가 index인 위치에 스트링 data를 쓴다.
boolean writeString(String data)
디바이스의 데이터 배열에서 인덱스 0의 위치에 스트링 data를 쓴다.
int writeString(String[] data)
스트링 배열 data를 디바이스의 데이터 배열에 복사하고, 복사한 데이터의 개수를 반환한다.
Inherited Methods
From interface org.roboid.robot.NamedElement

Public Methods

public boolean e ()

라이브러리 버전 1.0.0부터

디바이스의 데이터가 갱신되었는지 확인한다.

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

 void someMethod(Robot robot)
 {
     Device device = robot.findDeviceById(Alpha.EVENT_FRONT_OID); // 앞쪽 OID 이벤트 디바이스를 얻는다.
     int oid;
     if(device.e()) // 앞쪽 OID 값이 갱신되었는지 확인한다.
         oid = device.read(); // 앞쪽 OID 값을 읽는다.
 }
Returns
  • 디바이스의 데이터가 갱신되었으면 true, 아니면 false

public int getDataSize ()

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열 크기를 반환한다.

여기서의 데이터 배열 크기는 모델에서 지정한 배열 크기를 의미한다. 즉, Alpha 또는 Albert, Pen, Dice 등에서 "배열 크기"라고 되어 있는 숫자를 반환한다. 배열 크기가 -1로 지정되어 있는 경우는 데이터 배열 크기가 가변적이라는 의미이다. 이 경우에는 -1을 반환한다.

Returns
  • 디바이스의 데이터 배열 크기. 데이터 배열 크기가 가변적인 경우에는 -1

public int getDataType ()

라이브러리 버전 1.0.0부터

디바이스의 데이터 형을 반환한다.

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

 void someMethod(Robot robot)
 {
     Device device = robot.findDeviceById(Alpha.EFFECTOR_LEFT_WHEEL);
     if(device.getDataType() == DataType.INTEGER) // 데이터 형이 정수형 배열(int[])임을 확인한다.
     {
         ...
     }
 }
Returns
  • 디바이스의 데이터 형
See Also

public int getId ()

라이브러리 버전 1.0.0부터

디바이스의 ID를 반환한다.

주변기기의 경우에는 실제 제품을 구분하지 않는다. 각 디바이스의 ID 값은 kr.robomation.physical 패키지 혹은 kr.robomation.peripheral 패키지, org.smartrobot.android.action 패키지에 정의되어 있다.

 @Override
 public void onDeviceDataChanged(Device device, Object values, long timestamp)
 {
     int accelerationY, dice;
     switch(device.getId()) // 디바이스의 ID를 얻는다.
     {
     case Alpha.SENSOR_ACCELERATION: // 알파 로봇의 가속도 센서 값이 갱신되었다.
         accelerationY = ((int[])values)[1];
         break;
     case Dice.EVENT_VALUE: // 주사위의 눈 값이 갱신되었다. 어느 주사위인지는 구분하지 않는다.
         dice = ((int[])values)[0];
         break;
     }
 }
Returns
  • 디바이스의 ID
See Also

public int getProductId ()

라이브러리 버전 1.0.0부터

주변기기의 제품 번호를 반환한다.

로봇이나 액션의 경우에는 0을 반환한다.

 @Override
 public void onDeviceDataChanged(Device device, Object values, long timestamp)
 {
     int dice1, dice2;
     switch(device.getId())
     {
     case Dice.EVENT_VALUE:
         if(device.getProductId() == 1) // 1번 주사위의 눈 값이 갱신되었다.
             dice1 = ((int[])values)[0];
         else if(device.getProductId() == 2) // 2번 주사위의 눈 값이 갱신되었다.
             dice2 = ((int[])values)[0];
         break;
     }
 }
Returns
  • 주변기기의 제품 번호
See Also

public int read ()

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 정수 값으로 반환한다.

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

Returns
  • 디바이스의 데이터 또는 0

public int read (int index)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 정수 값으로 반환한다.

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

Parameters
index 디바이스 데이터 배열의 인덱스
Returns
  • 디바이스의 데이터 또는 0

public int read (int[] data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열을 정수형 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.

디바이스의 데이터 배열 크기가 data 배열의 크기보다 큰 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열을 모두 복사한 후 data 배열의 나머지 부분은 0으로 채운다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING인 경우에는 복사하지 않고 0을 반환한다.

Parameters
data 디바이스의 데이터 배열을 복사할 정수형 배열
Returns
  • 복사한 데이터의 개수

public float readFloat ()

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 실수 값으로 반환한다.

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

Returns
  • 디바이스의 데이터 또는 0.0

public int readFloat (float[] data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열을 실수형 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.

디바이스의 데이터 배열 크기가 data 배열의 크기보다 큰 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열을 모두 복사한 후 data 배열의 나머지 부분은 0.0으로 채운다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING인 경우에는 복사하지 않고 0을 반환한다.

Parameters
data 디바이스의 데이터 배열을 복사할 실수형 배열
Returns
  • 복사한 데이터의 개수

public float readFloat (int index)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 실수 값으로 반환한다.

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

Parameters
index 디바이스 데이터 배열의 인덱스
Returns
  • 디바이스의 데이터 또는 0.0

public String readString ()

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스 0의 위치에 있는 데이터를 스트링으로 반환한다.

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

Returns
  • 디바이스의 데이터 또는 ""

public String readString (int index)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스가 index인 위치에 있는 데이터를 스트링으로 반환한다.

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

Parameters
index 디바이스 데이터 배열의 인덱스
Returns
  • 디바이스의 데이터 또는 ""

public int readString (String[] data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열을 스트링 배열 data에 복사하고, 복사한 데이터의 개수를 반환한다.

디바이스의 데이터 배열 크기가 data 배열의 크기보다 큰 경우에는 data 배열의 크기만큼만 복사한다. 디바이스의 데이터 배열 크기가 data 배열의 크기보다 작은 경우에는 디바이스의 데이터 배열을 모두 복사한 후 data 배열의 나머지 부분은 ""으로 채운다. data 배열이 null인 경우, data 배열의 크기가 0인 경우, 디바이스의 데이터 형이 DataType.STRING이 아닌 경우에는 복사하지 않고 0을 반환한다.

Parameters
data 디바이스의 데이터 배열을 복사할 스트링 배열
Returns
  • 복사한 데이터의 개수

public boolean write (int data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스 0의 위치에 정수 값 data를 쓴다.

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

Parameters
data 디바이스에 쓸 정수 값 데이터
Returns
  • 성공하면 true, 실패하면 false

public boolean write (int index, int data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스가 index인 위치에 정수 값 data를 쓴다.

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

Parameters
index 디바이스 데이터 배열의 인덱스
data 디바이스에 쓸 정수 값 데이터
Returns
  • 성공하면 true, 실패하면 false

public int write (int[] data)

라이브러리 버전 1.0.0부터

정수형 배열 data를 디바이스의 데이터 배열에 복사하고, 복사한 데이터의 개수를 반환한다.

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

Parameters
data 디바이스의 데이터 배열에 복사할 정수형 배열
Returns
  • 복사한 데이터의 개수

public boolean writeFloat (float data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스 0의 위치에 실수 값 data를 쓴다.

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

Parameters
data 디바이스에 쓸 실수 값 데이터
Returns
  • 성공하면 true, 실패하면 false

public int writeFloat (float[] data)

라이브러리 버전 1.0.0부터

실수형 배열 data를 디바이스의 데이터 배열에 복사하고, 복사한 데이터의 개수를 반환한다.

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

Parameters
data 디바이스의 데이터 배열에 복사할 실수형 배열
Returns
  • 복사한 데이터의 개수

public boolean writeFloat (int index, float data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스가 index인 위치에 실수 값 data를 쓴다.

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

Parameters
index 디바이스 데이터 배열의 인덱스
data 디바이스에 쓸 실수 값 데이터
Returns
  • 성공하면 true, 실패하면 false

public boolean writeString (int index, String data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스가 index인 위치에 스트링 data를 쓴다.

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

Parameters
index 디바이스 데이터 배열의 인덱스
data 디바이스에 쓸 스트링 데이터
Returns
  • 성공하면 true, 실패하면 false

public boolean writeString (String data)

라이브러리 버전 1.0.0부터

디바이스의 데이터 배열에서 인덱스 0의 위치에 스트링 data를 쓴다.

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

Parameters
data 디바이스에 쓸 스트링 데이터
Returns
  • 성공하면 true, 실패하면 false

public int writeString (String[] data)

라이브러리 버전 1.0.0부터

스트링 배열 data를 디바이스의 데이터 배열에 복사하고, 복사한 데이터의 개수를 반환한다.

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

Parameters
data 디바이스의 데이터 배열에 복사할 스트링 배열
Returns
  • 복사한 데이터의 개수