11年7个月前IP:广东
767488
24楼
    观察到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之类的函数做的输出,直接用长度控制和填充格式化操作符输出就好了)
评论
文号 / 767488

实习会员
名片发私信
学术分 0
总主题 0 帖总回复 4 楼拥有证书:笔友
注册于 2015/01/07 04:20:44最后登录 2018/01/10 01:33:21
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:广东

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的