串口通信数据连续性,该怎么处理

串口通信数据连续性,该怎么处理,第1张

串口通信数据连续性

初学串蔽咐口编程,使用VC6的MSComm控件实现上位机串口通信,接收来自单片机发送来的30个字符,通信设置成了收到一个字节触发事件,发现上位机软件虽然能够接收到所有字符,但是显示格式并连续(回车换行),而我的本意是接收到这30个字符后在后边加入回车换行,虚并衡但是现在是接收到字符后(<30),就触发事件进入串口接收响应了,所以就在接收到的字符后加了回车换行。用串口调试工具就没有这种现象。请给些修改建议!

------解决方案--------------------------------------------------------

正常就是你这么做的,至于你说的串口助手自动"知道"你要通信30个字符并"自动"换行,这可能是凑巧了,你把串口助手窗口变小试试,看看是不是还是接收到30个字符自动换行,或者你改成单片机发5个数据或其它个差做数的数据试试,看看串口助手能不能知道你实际通信的个数

------解决方案--------------------------------------------------------

串口工具之所以接收到一定字节数据后自动换行,是因为串口工具的文本模式下,将换行控制的接收字符,“自动”转换为界面的控制符号,故有此效果。

所以在任何应用程序中,如果想达到同样效果,需要了解你单片机串口通讯协议中数据主体模式,

提取并识别串口数据的“回车换行”符,并针对界面输出的换行需要,编程实现这个功能。

串口是流概念,想要分行,必须在更上层的位置将流整理成数据。

要把"\r\n"当成字符串,还是在前面至少加上一个可视的符号,如a[]={"12.5\r\n"}

最关键的是发送时,这\r\n 要作为两个字符来发送的,估计是你没有算在内吧。要先发送回车\r,再发送换行 \n 才有效。

对于有些串口接收工具,只要有回车就可以换行,即只发 \r 就可贺祥枯以,不必再发\宴配n。禅洞

格式声明后面亮裂加\n就枝亮好了啊。。。

比如 打印部敬搭闭分

int a=3,b=4;

printf(“%d\n”,a);

printf(“%d\n”,b);

串口助手显示就是

a

b


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12538737.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存