ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
* 导师**视频**讲解:[**去听课**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技术支持说明:** >**1**.一般以自主学习为主 > **2**.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/zigbee) > **3**.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解! <br/> 基于上述的出发点,我们可以把协议定义如下: ### ![](https://img.kancloud.cn/f6/af/f6af4491b8af78e60c19f98bb42340de_850x160.png =600x) ### 这样的协议基本能够满足大部分的应用场景了;访问控制也可以在细化为控制段和数据段,比如第一个字节表示控制信息,第二个字节存储数据。 ### 同时需要说明的还有字节序的问题,也就是大端序还是小端序的问题,这里我们推荐使用大端序,所谓的**大小端序**,其实就是字节排列的顺序高低位的问题,比如0x12AB这个数据是16位,2个字节,大端序表示:0x12 0xAB,小端序反过来:0xAB 0x12;上下位机通信时保持一致即可。 ### 还有一个需要注意的,串口通信传输的数据本质上是**流式数据**,也就是起始和结束需要我们自行判断处理,最容易出问题的也在这里,经常有读取串口数据,读到了就处理,然而在大数据块的传输下,发现经常会误码或者丢包;这其实是对流式数据理解程度不够导致的,因此我们每次读取串口数据后,都需要对数据进行预处理,得到完整报文再进行应用。最后补充的是,同异步的问题,串口通信是全双工通信,是典型的异步数据处理逻辑,这个和SPI是有很大区别的,也是为什么主从之间强烈推荐使用串口通信而不是SPI的原因,因为可以做异步处理,提高整体效率,SPI传输快,但需要同步处理,非常麻烦。