찾아봤는데 so파일로 export할 방법이 없더라고요.

그냥 프로젝트를 zip 형태로 올리겠습니다.

 

현재 모터 돌아가는것과 NXT의 파일 엑세스하는 것까지 하였습니다.

어떤 동작을 하기 전에 NXTCommand를 초기화시켜줘야 합니다.

이 NXTCommand는 생성할 때 BluetoothSocket이 아니라 InputStream과 OutputStream을 필요로 합니다.

소켓으로 전달하려면 소켓의 getInputStream()과 getOutputStream()을 호출하면 됩니다.

왜 NXTCommand가 BluetoothSocket을 전달받지 않게 하는 이유는 나중에 또다른 NXT와 커뮤니케이션할 수 있는 인터페이스가 생기더라도 단순히 스트림 객체만 넘겨주면 되기 떄문입니다.

 

그 다음, 원하는 객체를 (모터나 램프는 InputOutput을, 파일은 FantomFile) NXTCommand 객체를 주고 초기화힙니다.

먼저 InputOutput의 유일한 메소드 SetOutputState입니다.

첨부 Zip 파일\src\bt\fantom\InputOutput.java
 /**
 * 모터의 상태를 지정합니다.
 * 
 * @param port 포트를 지정합니다. 0 - A, 1 - B, 2 - C, 0xFF - 모든 포트<br />
 * (2개의 포트를 한 명령에 동시에 지정할 수 없습니다.<br />
 * 반드시 각 포트마다 따로 명령을 내려 주어야 합니다.)<br />
 * @param speed 속도를 지정합니다. -100부터 100까지입니다. 이 속성을 활성화할 경우 반드시 모터 컨트롤 플래그가 설정되어 있어야 합니다.
 * @param mode 모터 가동 방식을 설정합니다. {@link NXTEnums}의 MOTORON, BRAKE, REGULATED 플래그로 이 값을 설정하십시오.
 * @param regulationMode 모터 조정 방식입니다. {@link NXTEnums}의 REGULATION_MODE_* 플래그로 설정하십시오.
 * @param turnRatio 동기화할 떄 따라오는 모터의 속도 비율을 지정합니다. -100부터 100까지이며, 기본으로 100을 설정합니다.
 * @param runState 모터의 가동 상태입니다. {@link NXTEnums}의 MOTOR_RUN_STATE_* 플래그로 설정하십시오.
 * @param tachoLimit 모터가 갈 수 있는 거리를 설정합니다. 모터가 이 각도값에 이르렀을 경우 모터를 정지합니다.
 * @throws IOException NXT와의 통신에서 문제가 발생하였을 때 이 예외를 발생시킵니다.
 * 
 * @see NXTEnums
 */
public void SetOutputState (byte port, int speed,
  int mode, int regulationMode, int turnRatio,
  byte runState, int tachoLimit) throws IOException {
 if (speed > 100) speed = 100;
 if (speed < -100) speed = -100;
 if (turnRatio > 100) turnRatio = 100;
 if (turnRatio < -100) turnRatio = -100;
 NXTCommand.sendCmdHeader(o, (short) 10,
   NXTCommand.CLASS_REPLY_NOT_REQURIED,
   NXTCommand.SETOUTPUTSTATE);
 o.write (port & 3);
 o.write (speed);
 o.write (mode);
 o.write (regulationMode);
 o.write (turnRatio);
 o.write (runState);
 o.write (tachoLimit);
 o.write (tachoLimit >> 8);
 o.write (tachoLimit >> 16);
 o.write (tachoLimit >> 24);
}


위의 모터 컨트롤 플래그는 regulationMode에 사용되며, NXTEnums.REGULATION_MODE_MOTOR_SPEED입니다.

여기에서 tachoLimit 기능이 필요하지 않다면 매걔변수에 0을 전달해 주세요.

두번째는 FantomFile입니다.

FantomFile은 일단 만들면 그 내부에 InputStream과 OutputStream을 지원 해줍니다.

(원래 제공되는 InputStream, OutputStream과 FantomFile 내부의 InputStream, OutputStream을 서로 혼동하지 맙시다.)

"안녕하세요, 프로그래밍에 관심이 많은 중1입니다." print!