一、在通信协议中需要有结束符
1、原因根据结束符判断帧的结束。
2、如果帧的数据丢失,结束符可以保证帧不会错误
二、在通信中使用结束符后必然有一个字符不能使用
解决办法:转义。
比如将b作为结束符,b转义成a1
再将a转成a2
转义之后在帧中就不会出现b,而出现的a全部转成a2
三、当收到帧处理的方式不同需要调用不同的函数。
解决办法:回调函数注册(传递的参数是变化的,可以传结构体指针)。
四、当发送帧后有些需要应答,有些不要应答。
解决办法:
1、写两种发送函数,一种是需要应答的,一种是不需要应答的,根据需要调用。
需要应答的就死等应答成功。超时重新发送。(不可能有执行不成功的情况)
2、将发送分成两种,一种是需要应答的;一种是放到发送缓冲中,等串口空闲是调用发送。
需要应答的也是死等发送,超时没收到应答重新发送。
五、通信协议中有部分资源是共享的,使用这些资源是需要互斥。
共享的资源:发送串口,发送缓冲。