찾아봤는데 so파일로 export할 방법이 없더라고요.
그냥 프로젝트를 zip 형태로 올리겠습니다.
현재 모터 돌아가는것과 NXT의 파일 엑세스하는 것까지 하였습니다.
어떤 동작을 하기 전에 NXTCommand를 초기화시켜줘야 합니다.
이 NXTCommand는 생성할 때 BluetoothSocket이 아니라 InputStream과 OutputStream을 필요로 합니다.
소켓으로 전달하려면 소켓의 getInputStream()과 getOutputStream()을 호출하면 됩니다.
왜 NXTCommand가 BluetoothSocket을 전달받지 않게 하는 이유는 나중에 또다른 NXT와 커뮤니케이션할 수 있는 인터페이스가 생기더라도 단순히 스트림 객체만 넘겨주면 되기 떄문입니다.
그 다음, 원하는 객체를 (모터나 램프는 InputOutput을, 파일은 FantomFile) NXTCommand 객체를 주고 초기화힙니다.
먼저 InputOutput의 유일한 메소드 SetOutputState입니다.
/** * 모터의 상태를 지정합니다. * * @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!
안드로이드 핸드폰의 기울기값으로 NXT를 조종하는 어플을 만들어보고 싶은데 어떻게 해야될까요??
소켓을 만들어서 NXT와 데이터를 주고 받아야 되는게 맞나요? 처음 만들어보는거라 어떻게 해야 될지...