一般用串口进行数据通讯时,我们会在发送端(master)把传输的数据流按照一定的规则划分成数据帧进行传输,接收端(client)根据约定好的规则将接收的数据流分帧解析执行。传统的方式主要有两种:
1、首先将传输的数据转化成ASCII码形式(这样实际传输的数值范围被锁定在0x30~0x7a之间),然后在数据的前后加上特定的字节数据(比如0x02'STX',0x03'ETX'),形成一帧数据。这样可以保证帧头帧尾的标志字节不会和实际数据内容重合,分帧解析变得非常容易,只要找到相应的帧头、帧尾即可。这种方式有个弊端,把数据转化成ASCII时,转化后的数据长度是转化前的2倍,效率非常低下,这对于实时性要求高(比如485总线通讯中有多个从机的时候)的应用,有时无法满足要求。