如何使用arduino uno在一个数据包传输中向xbee路由器发送多个命令

时间:2019-05-28 00:10:06

标签: arduino serial-port radio xbee

我想知道我是否可以使用协调器的一个命令来远程控制xbee上的多个IO引脚。

我可以轻松地将一个IO引脚发送为高电平或低电平,如下所示

echo "<?xml version='1.1' encoding='UTF-8'?><jenkins.model.JenkinsLocationConfiguration><jenkinsUrl>http://<IP>:8080/</jenkinsUrl></jenkins.model.JenkinsLocationConfiguration>" > jenkins.model.JenkinsLocationConfiguration.xml
exit
docker restart jenkins

但是我似乎不能一次发送多个数字引脚更改。

xB.write((byte)0x7E);
xB.write((byte)0x0);
xB.write((byte)0x10);
xB.write((byte)0x17);
xB.write((byte)0x0);  // Frame ID
xB.write((byte)0x00); // first byte
xB.write((byte)0x13); // 2
xB.write((byte)0xA2); // 3
xB.write((byte)0x00); // 4
xB.write(addy5); // 5
xB.write(addy6); // 6
xB.write(addy7); // 7
xB.write(addy8);// 8
xB.write((byte)0xFF);
xB.write((byte)0xFE);
xB.write((byte)0x02);
xB.write('D');
xB.write('0');
xB.write(val);
long sum = 0x17 + 0x13 + 0xA2 + addy5 + addy6 + addy7 + addy8 + 0xFF + 0xFE + 0x02 + 'D' + '0' + val;
xB.write((byte)0xFF - (sum & 0xFF));

我可能做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

Remote AT Command Frame的API参考中可以看到,命令(D0)之后的字节是该命令的值。 XBee模块没有多个AT命令的帧类型,但是您可以发送一系列排队的命令,并在设置options字段的“应用更改”位时立即将它们全部应用。

因此,在AT命令之前发送0x02的地方,您将为要排队的命令发送0x00,仅在最后一个发送0x02命令使其一次应用所有更改。

此外,考虑编写一些例程以简化帧发送。例如,将指针指向长度一定的缓冲区的单个函数可以自动发送帧的开始(0x7E 0x00 <length>),并在帧的末尾发送计算出的校验和字节。

相关问题