Hello everybody! i'm developping an android application to remote control a lego mindstorm NXT. The NXT let the mobile control motors, and sensors (ultrasonic, light, temperature,...) The android mobile is linked to the nxt by bluetooth.
I success in controling the motors, but now i've got one problem : accessing the sensors. I tried to get informations from the ultrasonic sensor since a long time, but no success! how i do it : 1) i send first the information "my ultrasonic sensor is linked to the port 1" according to instructions of the bluetooth Lego NXT developper kit: setUp void initUltrasonicSensor(int sensorPort){ byte[] message = new byte[5]; message[0]= LCPMessage.DIRECT_COMMAND_NOREPLY; // DirectCommand, byte constant : 0x00 message[1]= LCPMessage.SET_INPUT_MODE; // SetInputMode, byte constant : 0x05 message[2] = (byte) sensorPort; // Input Port, 0 1 2 or 3 message[3]= typePort ; // Type Port, ultrasonic = 0x0B message[4]= (byte) 0x00; // Sensor mode sendMessage(message); } /** * Sends a message on the opened OutputStream * @param message, the message as a byte array */ void sendMessage(byte[] message) throws IOException { if (nxtOutputStream == null) throw new IOException(); // send message length int messageLength = message.length; nxtOutputStream.write(messageLength); nxtOutputStream.write(messageLength >> 8); nxtOutputStream.write(message, 0, message.length); } 2) then, i send the informtion "get distance from the ultrasonic sensor" : public void getInputValues(int sensor) { byte[] request = new byte[3]; request[0] = LCPMessage.DIRECT_COMMAND_REPLY; // DirectCommand, byte constant : 0x00 request[1] = LCPMessage.GET_INPUT_VALUES; // getInputValues, byte constant : 0x07 request[2] = (byte) sensor; // input port, 0 1 2 or 3 sendMessage(message); } 3) when i reveived the reply information from the NXT, i get it : 05-18 10:33:53.652: INFO/(8885): Values received from UltrasonicSensor : [ 2 7 0 0 1 0 B 0 0 0 0 0 0 0 0 0 ] the expected response, according to instructions of the bluetooth Lego NXT developper kit: byte 0: 0x02 byte 1: 0x07 byte 2: status byte byte 3: input port (range: 0-3) byte 4: valid? (boolean TRUE if new data value should be seen as valid data) byte 5: calibrated? (boolean TRUE if calibration file found and used for "Calibrated Value" field below) byte 6: sensor type (enumerated) byte 7: sensor mode (enumerated) byte 8-9: Row A/D value(UWORD; device dependent) byte 10-11: Normalized A/D value(UWORD; device dependent; Range: 0-1023) byte 12-13: Scaled value (SWORD; mode dependent) byte 14-15: Calibrated value (SWORD; value scaled according to calibration. CURENTLY UNUSED.) So i'm supposed to get the information about the distance from the 8-9 byte, but i get 0! Could anyone help me ? thanks for all! (sorry for my english, i'm french!) -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en