• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 多线程读串口问题

多线程读串口问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了c#多线程串口通信,qt多线程串口通信,c#串口多线程,多线程串口通信,串口多线程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 多线程读串口问题
描述:

我用的API写的串口读写,在读串口的时候用线程实时读取,
然后用虚拟串口工具设置两个串口COM1 COM2,用程序打开COM1,用串口调试工具打开COM2,2者进行串口通信,
发现在程序读数据的时候,每次都要先写一次,这是为什么????


解决方案1:

发现在程序读数据的时候,每次都要先写一次,这是为什么
---------
这句话很奇怪,执行的时候按照你的代码来的,一步步怎么会多出写的操作呢

解决方案2:

OVERLAPPED os;
        memset(&os,0,sizeof(OVERLAPPED));
        os.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
//移到while外面,只建立一次os事件
while(true)
    {
                DWORD dwMask,dwTrans,dwError=0;
        if(!WaitCommEvent(m_hComm,&dwMask,&os))
        {
            if(ERROR_IO_PENDING==GetLastError())
                GetOverlappedResult(m_hComm,&os,&dwTrans,true);
        }
            WaitForSingleObject(os.hEvent,INFINITE);
        if (dwMask==EV_RXCHAR)
        {
            ::SendMessage(hwnd,WM_COMM_RXCHAR,0,0);
        }
另外还有清除事件,好象是purge什么的,我忘了,这个好象在读取后加上用来清除事件的发送和读取标志位

解决方案3:

没有代码,这个不好判断,一般是这么做的:
1.打开串口包括设置参数(可以在初始化函数打开,也可以通过按钮或消息打开串口),正常是执行一次打开串口就行了,程序退出后再关串口.
2.线程里循环读取串口.
3.响应发送消息进行数据发送.
定义一个类全局串口句柄变量,用来操作串口读写.
你说的先写一次才能读到数据,你看看读线程里有没有读完后就关闭串口的代码,也就是在发送时打开了串口,但读完后又关闭了串口
这应该是程序的问题


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于线程和串口的一堆问题
  • 求救,关于多线程处理串口处理数据问题
  • 多线程的串口监控问题请教!
  • 菜鸟的真诚求助,非常急!串口读写以及多线程啊啊!!
  • 怎么实现串口监视线程与主程序之间的通信?下列哪种方式用的最多?
  • 多线程串口通信求助啊!
  • 求救:VC串口通信接收线程总是出问题!
  • 怎样在线程中使用串口通信?
  • 如果从串口取数据放到数据库中实时,用三个线程好不好?
  • 在线程中读串口的问题,该函数出错

相关文章

  • 2017-06-04 IWebBrowser2接口显示内存中网页乱码问题!!
  • 2017-06-05 如何让一个监控程序在系统启动时(登陆之前)就自动运行?请各位高手帮帮小妹啊。谢谢!急
  • 2017-06-04 组件库的uuid,也就是LIBID,有什么用呀??
  • 2017-06-05 如何得到别的进程中的TreeView的子项句柄?
  • 2017-06-04 MATLAB和VC混编
  • 2017-06-05 windowsmediaplayer可以访问内存映射文件吗?
  • 2017-06-04 已张贴愈十个外国论坛但仍未解决的CWebBrowser2问题
  • 2017-06-04 网页操作需要学什么语言
  • 2017-06-04 vc导入外部头文件问题
  • 2017-06-05 为什么在程序里向一个Dll中的函数传递一个结构体指针时会在运行时出现应用程序内存不能写等错!dll是用的MFC扩展方式

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • com连接时遇到的问题
    • 用midl编译idl时出错
    • 高手请进!(高分)
    • 如何获得火狐,谷歌,Opera浏览器当前浏览的网址
    • 为什么我用ATL向导生成的代码不能调用onCreate方法?『VC6』
    • 我怎样在一个线程中Suspend这个线程
    • @上網直通車@網站開通,大家快來呀!
    • 如何显式调用DLL中导出的类?
    • 发现建立ATL工程+支持MFC,和建立MFCDLL工程+自动化,得到的东西不一样
    • 新手求教,如何在自己的工程李添加OLE/COMObjectViewer里已有的组件??

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有