Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino通过XBee发送十六进制值_Arduino_Xbee - Fatal编程技术网

Arduino通过XBee发送十六进制值

Arduino通过XBee发送十六进制值,arduino,xbee,Arduino,Xbee,我正试图通过XBee将十六进制值从Arduino发送到digi的XBee程序XCTU。但是我有一些无法发送的字节问题 无法发送的字节列表: 0x11 0x13 0x7D 0x7E 0x81 0xEC 0xEE 如果我使用任何其他字节,我可以在XCTU控制台窗口中看到它,并得到Arduino的响应 我在两个Xbee上都启用了API模式(AP=1)。我正在使用从Arduino网站()链接的XBee库 我的代码如下所示: #define XBEE_RX_PIN 8 #define XBEE_TX_PI

我正试图通过XBee将十六进制值从Arduino发送到digi的XBee程序XCTU。但是我有一些无法发送的字节问题

无法发送的字节列表: 0x11 0x13 0x7D 0x7E 0x81 0xEC 0xEE

如果我使用任何其他字节,我可以在XCTU控制台窗口中看到它,并得到Arduino的响应

我在两个Xbee上都启用了API模式(AP=1)。我正在使用从Arduino网站()链接的XBee库 我的代码如下所示:

#define XBEE_RX_PIN 8
#define XBEE_TX_PIN 9
SoftwareSerial xbeeSerial(XBEE_RX_PIN, XBEE_TX_PIN);

void setup()
{
    Serial.begin(9600);
    xbeeSerial.begin(9600);
    xbee.begin(xbeeSerial);

}

void loop()
{
    Serial.println("Send next 255 msg:");
    uint8_t testMsg[1] = { 0x0 };
    for (uint8_t i = 0; i <= 0xFF; i++)
    {
        test2[0] = i;
        Tx16Request testTx = Tx16Request(0xFFFF, testMsg, sizeof(testMsg));

        xbee.send(testTx);
        Serial.print("Message send: ");
        Serial.println(test2[0], HEX);

        if (xbee.readPacket(5000)) {      
            Serial.println("SUCCESS");
        }
        else if (xbee.getResponse().isError()) {
            Serial.println("isError");
        }
        else {
            Serial.println("No Response");
        }
    }
    Serial.println("");
    delay(3000);
}
#定义XBEE_RX_引脚8
#定义XBEE_TX_引脚9
软件串行xbeeSerial(XBEE_RX_引脚、XBEE_TX_引脚);
无效设置()
{
Serial.begin(9600);
xbeeSerial.begin(9600);
开始(xbeeSerial);
}
void循环()
{
Serial.println(“发送下一个255消息:”);
uint8_t testMsg[1]={0x0};
对于(uint8_t i=0;i
AP=1时,无法发送某些特殊字节,如:

  • 0x7E(帧的开始)
  • 0x11/0x13(XOn XOff)
如XBee文档(XBee®XBee PRO®ZB RF模块手册90000976_W.pdf,起始页112)所述,您应使用AP=2模式,该模式允许您通过转义来传输这些特殊字节:

转义字符。
发送或接收UART数据帧时,必须指定特定的数据值 已转义(标记),因此它们不会干扰数据帧排序。
要转义干扰数据字节,请插入0x7D,并在其后面加上要转义的字节与0x20异或。
请注意,如果未转义,0x11和0x13将按原样发送。

需要转义的数据字节:
-0x7E–帧分隔符
-0x7D–转义
-0x11–XON
-0x13–XOFF

示例-原始UART数据帧(转义干扰字节之前):
-0x7E 0x00 0x02 0x230x110xCB
0x11需要转义,这将导致以下帧:
-0x7E 0x00 0x02 0x230x7D 0x310xCB
注意,在上述示例中,原始数据的长度(不包括校验和)为0x0002,非转义数据的校验和(不包括帧分隔符和长度)计算为:
0xFF-(0x23+0x11)=(0xFF-0x34)=0xCB

希望这有帮助