VC/API 串口通讯问题

c1111c 2003-06-09 11:39:54
DOC/VIEW 结构串口通讯程序,多个view同时对串口发送数据(未采用信号量或临界区保护),由另一个串口线程负责定时(200ms定时器)接收串口数据。采用OVERLAP方式。正常通讯(ReadFile返回ERROR_IO_PENDING,GetOverlappedResult返回成功,能读到数据)一段时间后,发生异常:GetOverlappedResult返回成功,但数据长度始终为0。从外接设备来看,肯定是有数据送到的。关闭串口,再打开以后恢复正常。且如果只有一个view向串口发送数据,就不会有此问题。
...全文
19 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
c1111c 2003-06-10
  • 打赏
  • 举报
回复
我已经说了啊,发送是没有问题的啊,对方已经收到我得命令,并且做了回映了的。
问题的关键在于,从外接设备上看,收到了对方的回映,但我readfile不出来
fj3762 2003-06-10
  • 打赏
  • 举报
回复
你首先必须先明白一点:串口的缓冲区就一个。在一个时间只能接收一个线程发送的数据。如果多个线程或多个View同时发送数据,那么,缓冲区内的存放的数据将被新的数据覆盖。这就是你说的“且如果只有一个view向串口发送数据,就不会有此问题。”原因。

你要解决这个问题,你必须保证你先发送的数据在缓存区内不被后面的数据覆盖。解决的方法很多。一般采用外接设备设备完整处理完串口发送来的数据后返回一个ACK,程序收到这个ACK后继续发送。
c1111c 2003-06-09
  • 打赏
  • 举报
回复

请各位大侠出招!

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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