实现的目标:
串口接收到一帧有效数据包之后,命令解析,再进行相应回复。
涉及的问题包括:
-
什么情况下,算接收完一帧数据?
-
第一种做法:接收完一个字节后,超时一定时间,没有再接收到数据,算接收完一帧数据。这块需要注意超时时间的计算,根据波特率评估。
-
第二种做法:每帧数据,包含结束标志位。
-
-
何为一帧有效的数据,需要校验数据包。
-
第一种做法,将一帧数据,按帧格式校验。但是也有弊端,如果因为误多接受几个字节(有效的数据包前面有几个字节的误码,但是后面的帧数据,是有效的情况。比如单总线,电压干扰,导致多接受字节的情况),导致校验失败,将整包数据丢弃,这样的做法,有丢包的缺点,但是程序中,做了重发包功能的话,这种方式也可取。
-
第二种做法:。。。
-
-
解析命令,根据不同的命令作出不同的回应。
-
不同的命令,调用不同的命令。命令少的话,用if else 或者switch,命令多的情况下,使用查表的方法,表格中可包含指令编号,指令对应的函数。
-
细节问题疑问:
上面三个步骤中,涉及到两次读写数据。 第一次是写数据,1ÿ