串口通讯接收错误的问题

killer80719 2004-11-20 11:26:40
在做串口通讯的时候,碰到了一个奇怪的问题。程序接收数据的时候,可能会有个别数据接收错误,但不是每包数据都有这个问题,但用串口调试助手接收就是正确的(我用两个串口同时接收,然后比较)。开始我使用的是MSComm控件,实在无法的情况下又改用API接收,仍然有问题,但接收错误的次数有一定减少。不知哪位高手也碰到过同样的问题,希望可以赐教。
...全文
601 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
killer80719 2004-12-08
  • 打赏
  • 举报
回复
呵呵:)
我也很期待阿。真的没有人碰到这种问题?看来我是中邪了。
Leighf 2004-12-08
  • 打赏
  • 举报
回复
期待
3xcom 2004-11-26
  • 打赏
  • 举报
回复
UP.
yjy1001 2004-11-24
  • 打赏
  • 举报
回复
估计是你的停止位或数据位设置有问题,如果停止位及数据位参数设置对,使用API接受,一般不会错。
rainboy1026 2004-11-24
  • 打赏
  • 举报
回复
用二进制处理比较好些,还有通讯的波特率不要太高
killer80719 2004-11-24
  • 打赏
  • 举报
回复
我的停止位、数据位都设置了,也是用二进制接受的,波特率只有600bps。初步可以判定是干扰造成的,可是干扰没有道理只影响我的程序不影响MSComm阿。另外,我看了CSerialPort等源代码,和我的接收方式都是一样的,不同之处只有我的只对EV_CHAR响应。我怀疑是数据转换的问题。我用的是unsigned char数组接收,然后用一个指针遍历,显示的函数是用的Edit->Text = Edit->Text + IntToHex(Pt)(Pt 为unsigned char*).不是IntToHex有问题吧?我也测试过,不用该函数也不显示,但收到的数据仍然有错误。真的没有办法了。高手难道没有碰到这种问题吗?
土著巫师 2004-11-23
  • 打赏
  • 举报
回复
在串口接收中使用二进制方式,不要用文本方式。最简单的办法是把接收的到数据落到一个二进制文件里,然后和发送的源文件比较。MSCOMM是同步方式I/O,效率不是很高。
killer80719 2004-11-21
  • 打赏
  • 举报
回复
没有人回吗?是不是问题讲得不够清楚?对错误码分析后发现,部分接收错误(硬件错误or软件错误?)的数据(如0x01)被替换成了(0x37),我对照ASCII看了一下,就是MSCOMM中出错的默认替代字符“?”。我找了一下,没有找到可以取消这个设置的属性,所以用API重新进行了改写,将fBinary的属性设置为false。我的意思是不需要进行纠错检查,以为可以忽略错误,收到什么即显示什么。也不知道这样推断是不是合适,反正有一定的效果,但仍然有错误数据。请高手指点!!!

1,316

社区成员

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

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