I think what you probably want is a Bitwise (not Logical) AND:
    packet[18] & 0xFF

What you may be seeing is Java's attempt to help you by promoting
a byte that we wish was unsigned to a signed int.

MS

Shuvo Debnath wrote:
Hello, I am using a mica2 mote and MTS310CA sensor running XServe, and am trying to read in the temperature byte. I have read all the documentation, and using Java, my function that converts a raw byte -> temperature works 100%, I tested this thouroughly. However I am having trouble actually getting the correct raw byte. When I read in the documented byte (18th in packet) I should be getting a value between 110-130 to correspond to room temperature (19-23 degrees C). However, instead I get very small numbers: Such as 2 or -13 depending on which sensor I read (I have multiple MTS310). I tried running the sensors against MoteView and the results are all accurate, so it is not a hardware issue. I suspect this is a Java issue but I am not sure. Does anyone have any suggestions? I need to get problem solved fairly quickly due to a very imminent deadline!
If it helps, I am reading the packet by simply doing a:

byte[] packet= reader.readPacket();
if(packet.length==32)
System.out.println("For Node:" + packet[7] + "RawTemperatureReading=" + 
packet[18]);

A logical AND between the raw byte and 0xFF gives more extreme results (250+ on one sensor and < 10 on others).
Thankyou in advance,
Shuvo


_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to