XBEE API Mode Receive (data conversion)
hi,
this first pose please patient
i set smal network of sensors, router node sends data xbee pro s2b coordinator. data valid when arrive. store them in byte array. wana convert data in structure cast.
but there still no data in stuct after cast. tried memcpy... same. when print array serial window data appears fine :/ idee or hint whats wrong ist ?
this first pose please patient

i set smal network of sensors, router node sends data xbee pro s2b coordinator. data valid when arrive. store them in byte array. wana convert data in structure cast.
but there still no data in stuct after cast. tried memcpy... same. when print array serial window data appears fine :/ idee or hint whats wrong ist ?
code: [select]
#include <softwareserial.h>
#include <xbee.h>
softwareserial myserial(2, 3); // rx, tx
struct tclimate{
float h;
float t;
};
tclimate* data = new tclimate();
uint8_t payload[sizeof(tclimate)];
xbee xbee = xbee();
xbeeresponse response = xbeeresponse();
// create reusable response objects responses expect handle
zbrxresponse rx = zbrxresponse();
modemstatusresponse msr = modemstatusresponse();
void setup() {
serial.begin(9600);
serial.println("start");
myserial.begin(9600);
xbee.begin(myserial);
memset(data,0,sizeof(tclimate));
}
void loop() {
xbee.readpacket();
if (xbee.getresponse().isavailable()) {
serial.println("isavailable");
if (xbee.getresponse().getapiid() == zb_rx_response) {
serial.print("api id: ");
serial.println(xbee.getresponse().getapiid());
xbee.getresponse().getzbrxresponse(rx);
if (rx.getoption() == zb_packet_acknowledged) {
// sender got ack
serial.println("sender got ack");
} else {
// got (obviously) sender didn't ack
serial.println("sender got nothing");
}
serial.print("data length: ");
serial.println(rx.getdatalength());
for(size_t i= (rx.getdatalength()-9); i<rx.getdatalength()-1;i++){
//serial.print(i);
//serial.print(":");
//serial.print(rx.getdata(i),hex);
//serial.print('\t');
payload[i] = rx.getdata(i);
//serial.print("payload :");
//serial.println( payload[i],hex);
}
data = (tclimate*) payload;
serial.print("humidity: ");
serial.print(data->h);
serial.print(" %\t");
serial.print("temperature: ");
serial.print(data->t);
serial.println(" *c");
}
}
}
code: [select]
for(size_t i= (rx.getdatalength()-9); i<rx.getdatalength()-1;i++){
payload[i] = rx.getdata(i);
where write data payload not same read data packet.
Arduino Forum > Using Arduino > Networking, Protocols, and Devices (Moderator: fabioc84) > XBEE API Mode Receive (data conversion)
arduino
Comments
Post a Comment