写通信协议遇到的问题

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

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

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

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

解决办法:转义。

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

再将a转成a2

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

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

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

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

解决办法:

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

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

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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值