1.闲话闲聊
最重要的写在前面:用户层通信协议就是数据包格式!!!没有进行串口通讯实践的朋友可能会想:为什么要编制用户通信协议呢?通信过程中为什么要进行数据处理呢?在设计中编过串口通信程序的读者应该张口就可以回答: 为了按规定格式从串口发送数据,也为了从接收到的数据中将需要的信息提取出来 。串口通信协议一般可以从两个角度来思考:底层通信协议和用户层协议。底层协议一般有计算机硬件提供商和设备厂家提供,在一般性的通信编程中很少会涉及(我估计1000个搞通信的,能编底层的也就那么1,2个),而用户层协议则是面向使用者的,也就是我们在编程中通常谈到的通信协议。 这种用户层的通信协议,简单来说,就是数据以何种格式发送出去,或者说如何从接收到的某种格式的数据中提取需要的数据,以及在发送和接收过程中如何保证这些数据的正确性,即数据校验 。这片帖子先扯扯为什么要编?原理是什么?现存的协议有什么?这些基本问题,为后面逐步深入奠定基础。
2.为什么要编制用户通信协议?
大多数MFC等界面开发数据都已经准备好了,只需做一个可视化工作就可以了。可是实际很多工作可不是这样,我们需要实时采集并处理显示数据。举例子说,我们刚入门做通信编程时,大多时候只是从串口接收数据,并显示在GUI窗口上。然而我们却忽略了一个非常关键的细节:如何从接收到的数据中提取有用的信息?如何处理我们发送出去的数据?这些问题才是我们进行通信编程的目标所在,也就是说,通信协议才是对接软件与硬件交流的关键!在大多数编程实践中,接收与发送数据并不需要直接显