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 ?

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

Popular posts from this blog

Connecting Raspberry Pi 2 to P10(1R)-V706 LED Dot Matrix - Raspberry Pi Forums

TypeError: <unknown> is not a numpy array - Raspberry Pi Forums

datso and removing imagetitle - Joomla! Forum - community, help and support