[英]How do I send a payload to an XBee
我已經在嘗試與XBee通信的嵌入式平台上實現了以下代碼。 執行以下代碼的嵌入式平台不是 xbee:
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算法可能存在缺陷。
如何獲得連續的字節流?
一些想法...
unsigned char
數組,或者甚至更好的是uint8_t
數組。 要更新有效負載[2]和有效負載[9],請簡化您的代碼:
++payload[2]; ++payload[9]; if (payload[9] == 0) payload[9] = 1;
在發送之間添加延遲。 您甚至可能需要等待響應才能發送下一個字符。
由於它是無符號8位值的有效負載,因此它們會自動從255滾動到0。我假設您的有效負載[9]的特殊情況代碼正在嘗試從255滾動到1(而不是0)。
確保您的有效載荷不需要包含某種校驗和。 更新這兩個字節將對校驗和字節產生影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.