TinyOS串口数据包解析

    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进行异或。

你可能感兴趣的:(TinyOS串口数据解析)