首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向XBee发送有效负载

如何向XBee发送有效负载
EN

Stack Overflow用户
提问于 2013-08-31 20:09:46
回答 1查看 485关注 0票数 1

我在一个试图与XBee通信的嵌入式平台上实现了以下代码。执行以下代码的嵌入式平台不是xbee:

代码语言:javascript
复制
int main()
{
   char payload[12] = {0x61,0x88,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0xEC,0x00,0x00}
   payload[2] = 0x10;
   payload[9] = 0x01;
   char data = 'H'; // Send simple ASCII character to XBee
   payload[11]= data;

   while (1)
      sendByteofData(payload,12);
}

void sendByteOfData(char * payload, int len)
{
   int x;

   for (x=0;x<4;x++)
      // This function sends IEEE 802.15.4 frames, and I know it
      // works because they are detected in the [sniffer][3].
      send_IEEE_802_15_4_frame(payload,len);
   }

   payload[2] = payload[2] % 256 + 1;
   payload[9] = payload[9] % 256 + 1;

   if (payload[9] % 256 == 0 )
      payload[9] = 0x01;
   else
      payload[9] %= 256;
}

令我惊讶的是,上面的代码实际上成功地将一个字节从嵌入式平台发送到XBee。但是,main()末尾的无限循环应该产生一个字节流。

我怀疑我需要正确地设置payload[2]payload[9],而且上面显示的增量模256算法可能存在一个缺陷。

如何获得连续的字节流?

EN

回答 1

Stack Overflow用户

发布于 2013-09-03 05:30:51

一些想法..。

  1. 使您的有效负载成为unsigned char或更好的uint8_t数组。
  2. 要更新payload2和payload9,请简化代码: ++payload2;++payload9;if (payload9 == 0) payload9 = 1;
  3. 在发送之间添加一个延迟。在发送下一个字符之前,您甚至可能需要等待响应。

由于它是一个无符号8位值的有效负载,它们将自动从255滚动到0。我假设payload9的特例代码试图从255转到1(而不是0)。

确保您的有效负载不需要包含某种类型的校验和。更新这两个字节会对校验和字节产生影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18552340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档