Hi

Have a look at http://www.javaspecialists.eu/archive/Issue189.html

And maybe email the author.

Regards

On May 18, 7:43 pm, damienb2 <[email protected]> wrote:
> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to