vs2005 线程中初始串口,接收不到数据

fjsdsgb 2011-07-08 04:23:03
vs2005 对话框中,采用串口控件mscomm,创建一个线程,在线程中从1号到5号串口初始并轮询发数据,每个有15秒钟时间,从接收到数据判断是哪个串口在通信。
问题出现了:
1、在线程中初始化正常,发送数据正常,但是OnComm中接收不到数据,用定时器或单独就可以。
2、调试会看到串口通信会出现有内存泄漏
请问各位大侠,这该如何解决,或者有更好的办法查找通信串口,谢谢。
...全文
220 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
beijin58 2013-03-20
  • 打赏
  • 举报
回复
我现在也正面临这样的问题。如果用事件来接收时没问题,在线程里面接收就出问题了。关键我这个程序要用MSComm,还要用Winsock控件,全用事件处理也比较繁琐。请问你知道在线程里面进行接收数据了没?教一下。
tt2com 2011-07-15
  • 打赏
  • 举报
回复
使用三方类吧,封装好的API很好用的CSerialPort。网上的能下到的。
long9158 2011-07-14
  • 打赏
  • 举报
回复
来 学习 学习!
chenjiawei007 2011-07-11
  • 打赏
  • 举报
回复
可以自己用readfile看看,是不是没获取到数据,用串口工具看看能否收到。

线程和定时器没有太大区别,检查下你的线程,是不是发送操作一直独占了。
jiuzhoulh 2011-07-11
  • 打赏
  • 举报
回复
使用api函数来实现串口通信是做好用的!这方面的资料网上也很多啊
fjsdsgb 2011-07-11
  • 打赏
  • 举报
回复
感谢各位的帮忙,已经解决了。原因是我用的是自带控件,自带控件与窗口是有关联的,在线程中打开,线程有自己的栈区,所以会出现接收不到数据的情况。
smilestone322 2011-07-11
  • 打赏
  • 举报
回复
以前我做串口的时候,也碰到过这种情况,依次轮询,将串口放在下拉菜单里面,出错,有时找不到串口,后面我都改成写配置文件,从配置文件中找串口,我觉得 串口循环操作会造成串口错误。
zgl7903 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 fjsdsgb 的回复:]
vs2005 对话框中,采用串口控件mscomm,创建一个线程,在线程中从1号到5号串口初始并轮询发数据,每个有15秒钟时间,从接收到数据判断是哪个串口在通信。
问题出现了:
1、在线程中初始化正常,发送数据正常,但是OnComm中接收不到数据,用定时器或单独就可以。
2、调试会看到串口通信会出现有内存泄漏
请问各位大侠,这该如何解决,或者有更好的办法查找通信串口,谢谢。
[/Quote]

mscomm控件,接收数据需要以控件容器方式响应接收事件
多线程最好使用API,效率高
参看MSDN帮助文档 Serial Communications
MoXiaoRab 2011-07-10
  • 打赏
  • 举报
回复
信息太少了
用户 昵称 2011-07-08
  • 打赏
  • 举报
回复
api吧,比控件好用

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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