观察到901S的数据传输,是用的UART转USB,单片机和USB转换芯片之间是用的UART通信,没有硬件容错和纠错的能力,波特率也到了921600,产生误码的机率不小,不能保证通信数据的确定性。
鉴于有做上位机程序的可能,为了便于机器解析和容错,在和Kevin.L老师讨论过后,有如下建议:
1.去掉gamma和度之类的双字节字符。
让输出信息的字符集在0x00~0x7F之间,也就是落在标准的ASCII字符集的范围里面,可以减少平台依赖。
2.在每条输出信息后面加上校验信息。
比如类似于这样“Freq:27000000Hz,Gamma=1.005805,Phase=0.769412Deg,ChkSum=XXXX”,直接对ChkSum之前的字符串做校验就好,或者程序实现起来麻烦的话,直接把每条信息连续输出两次也行。
3.输出信息做一下分栏格式化。
固定好每一栏位的长度,这样也能在一定程度上增加误码的检出率,而且机器解析数据会更加方便,人工识读起来也会轻松一点。(如果是用的printf,sprintf之类的函数做的输出,直接用长度控制和填充格式化操作符输出就好了)