写通信协议遇到的问题

来源:互联网 发布:sd卡检测软件 编辑:程序博客网 时间:2024/04/30 02:27

一、在通信协议中需要有结束符

1、原因根据结束符判断帧的结束。

2、如果帧的数据丢失,结束符可以保证帧不会错误

二、在通信中使用结束符后必然有一个字符不能使用

解决办法:转义。

比如将b作为结束符,b转义成a1

再将a转成a2

转义之后在帧中就不会出现b,而出现的a全部转成a2

三、当收到帧处理的方式不同需要调用不同的函数。

解决办法:回调函数注册(传递的参数是变化的,可以传结构体指针)。

四、当发送帧后有些需要应答,有些不要应答。

解决办法:

1、写两种发送函数,一种是需要应答的,一种是不需要应答的,根据需要调用。

需要应答的就死等应答成功。超时重新发送。(不可能有执行不成功的情况)

2、将发送分成两种,一种是需要应答的;一种是放到发送缓冲中,等串口空闲是调用发送。

需要应答的也是死等发送,超时没收到应答重新发送。

五、通信协议中有部分资源是共享的,使用这些资源是需要互斥。

共享的资源:发送串口,发送缓冲。

原创粉丝点击