串口通信问题

renjiao17 2010-11-04 04:14:26
我现在想要实现当我通过串口收到数据时候,再通过串口返回一个标志数据给发送数据端,程序运行没有错误,但是显示区显示接收数据时候数据跳了一下就不再显示了。。。请知道这是怎么回事的前辈们讲一下!非常感谢!
...全文
197 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
renjiao17 2010-11-07
  • 打赏
  • 举报
回复
大家看看这句strcpy(recv_frame, Socket->ReceiveText().c_str());有没有问题啊?我想把Socket->ReceiveText()存到char类型的数组里面。。。
jiangshx 2010-11-05
  • 打赏
  • 举报
回复
数据没有及时更新吧,在循环里加Application->ProcessMessages();
或者把你的代码放在线程里
renjiao17 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zzbinfo 的回复:]

再数据通信上下功夫,数据上设置头,尾,保证接收数据的完整.就是自己构造数据帧
[/Quote]已经加数据头和尾了,我设置断点一步一步调试,数据可以显示完全,但是把断点去掉直接运行,数据就不显示了。。。这是为什么啊
jiangshx 2010-11-05
  • 打赏
  • 举报
回复
发送之前,清一下接收缓存区,然后再发送和接收

如果用的是api做的串口通讯,接收之前,
调用函数ClearCommError判断接收缓存区是否有数据和异常
如果有异常用PurgeComm清一下
renjiao17 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jiangshx 的回复:]

数据没有及时更新吧,在循环里加Application->ProcessMessages();
或者把你的代码放在线程里
[/Quote]
加了,但是没用啊。。。还是那样
zzbinfo 2010-11-04
  • 打赏
  • 举报
回复
再数据通信上下功夫,数据上设置头,尾,保证接收数据的完整.就是自己构造数据帧
renjiao17 2010-11-04
  • 打赏
  • 举报
回复
怎么就不会出现错误数据这种情况啊。。。急问
renjiao17 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ccrun 的回复:]

这不好说. 有时候是上一个指令的回复没有读完,再发送指令并读取回复的时候,可能连带上一次遗漏的字符一起读回来了.也就是传说中的脏数据.
[/Quote]
那要怎么解决这个问题啊。。。
jiangshx 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 renjiao17 的回复:]
引用 1 楼 ccrun 的回复:

用串口监视工具监测一下指令有没有写成功?

我找到原因了,但是我还想问问数据接收过来为什么会出现错误数据啊。。。有的时候显示是正确的,有的时候是错误的
[/Quote]
也可能存在脉冲干扰,出现非法数据。
ccrun.com 2010-11-04
  • 打赏
  • 举报
回复
这不好说. 有时候是上一个指令的回复没有读完,再发送指令并读取回复的时候,可能连带上一次遗漏的字符一起读回来了.也就是传说中的脏数据.
renjiao17 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ccrun 的回复:]

用串口监视工具监测一下指令有没有写成功?
[/Quote]
我找到原因了,但是我还想问问数据接收过来为什么会出现错误数据啊。。。有的时候显示是正确的,有的时候是错误的
银点 2010-11-04
  • 打赏
  • 举报
回复
显示区只能显示字符,其它的数据显示不出来。

按妖哥的说法,你可去网上下载一个串口调试工具去试一下通信

也可以用系统自带的超级终端
ccrun.com 2010-11-04
  • 打赏
  • 举报
回复
用串口监视工具监测一下指令有没有写成功?

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧