TinyOS中的串口协议是这样规定节点和PC机通信时双方通过同步自己来交换数据,也就是节点或者PC机在每次发送数据给对方时都会先发送一个同步字节0x7e,紧跟同步字节之后的就是数据包。而数据包也有特定的格式:
1. 数据包的第1个字节是数据包的类型,目前有4种类型分别是 :
P_PACKET_NO_ACK= 69,这种类型是普通数据包不需要接收方不需要应答。
P_PACKET_ACK= 68,这种类型的数据包要求应答,接收方在接收到数据包之后需要发送 一 个 P_ACK类型的数据包做应答。
P_ACK= 67,这种类型的数据包作为P_PACKET_ACK类型数据包的应答包。
P_UNKNOWN= 255,不确定消息包的类型,当收到此类型的数据包时需要接收方同种类型的数据包给发送者。
2. 数据包的第二个字节指明了这个消息包的类型。如果是00则指明是AM类型的数据包。
3.第3和第4个字节是目标节点的地址。
4.第5和第6个字节是链路层源地址。
5.第7个字节是消息长度。
6.第8个字节是网络组号。
7.第9个字节是AM类型。
8.第12,、13、14、15字节是消息包的有效载荷。
9.最后两个字节是CRC校验码。
值得注意的是当接收到0x7e或者0x7d时需要对其进行转义,把它们和0x20进行异或。