原文来自:http://bbs.csdn.net/topics/390359398?page=1#post-395222951

最近在写串口的程序,上网查了一些文章,都大同小异。按照作者的代码,写了一个串口异步操作的程序,带总是不对,总是遇到句柄无效或参数错误的问题。上论坛发现有这问题的人不少,但都没有解决办法。最后无奈之下,上MSDN查了文档,终于解决了问题,现在拿出来跟大家分享。

这是在网上都找得到的代码

C/C++ code ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
char buffer[1024];
DWORD dwBytesWritten=1024;
DWORD dwErrorFlags;
COMSTAT ComStat;
OVERLAPPED m_osWrite;
BOOL bWriteStat;
bWriteStat = WriteFile(hCom,buffer, dwBytesWritten, &dwBytesWritten, &m_OsWrite);
if (!bWriteStat)
{
    if(GetLastError()==ERROR_IO_PENDING)
    {
        WaitForSingleObject(m_osWrite.hEvent,1000);
        return dwBytesWritten;
    }
    return 0;
}
return dwBytesWritten;

这是我修改后的

C/C++ code ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
char buffer[1024];
DWORD dwBytesWritten=1024;
DWORD dwErrorFlags;
COMSTAT ComStat;
OVERLAPPED m_osWrite;
BOOL bWriteStat;
//初始化overlaooped结构!!
m_osWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);       
m_osWrite.Offset =  0;
m_osWrite.OffsetHigh =  0;
bWriteStat = WriteFile(hCom,buffer, dwBytesWritten, &dwBytesWritten, &m_OsWrite);
if (!bWriteStat)
{
    if(GetLastError()==ERROR_IO_PENDING)
    {
        WaitForSingleObject(m_osWrite.hEvent,1000);
        return dwBytesWritten;
    }
    return 0;
}
return dwBytesWritten;

没错,仅仅只是加了一段对OVERLAPPED结构的初始化!
句柄无效,不是由于串口的句柄造成,而是OVERLAPPED结构中的hEvent;
参数错误也是没有初始化Offset和OffsetHigh造成的。
这样才能正确的写串口,当然别忘了在后面加一句CloseHandle,同理可以应用到读串口上。希望对大家有所帮助!!

串口WriteFile 句柄无效 的解决相关推荐

  1. c语言编程中句柄无效怎么解决,句柄无效,手把手教你句柄无效怎么解决

    英雄联盟是一款深受广大用户们欢迎的一款网络游戏,不过最近有位用户打开英雄联盟的时候提示句柄无效,无法进入游戏,不知道什么情况,那么运行英雄联盟提示句柄无效怎么解决呢?下面,小编给大家讲解句柄无效的处理 ...

  2. “项目运行时出错,无法启动调试。绑定句柄无效”的解决办法

    突然发现VS2005简体中文版不能调试,提示:"项目运行时出错,无法启动调试.绑定句柄无效."  结果重装.NET2.0也无效,又重装VS2005一次也无效,费了很大的周折,终于在 ...

  3. vs2005关于:无法启动调试 绑定句柄无效 的解决办法 [整理]

    最近装了vs2005简体中文版,可是却不能调试,提示: 无法启动调试 绑定句柄无效 后来查资料,发现有人说是 Terminal Services 这个服务被禁用了,于是我将这个服务设为手动,结果还是不 ...

  4. 虚拟机VMware提示“无法获得VMCI驱动程序的版本:句柄无效”的解决方法

    虚拟机VMware提示"无法获得VMCI驱动程序的版本:句柄无效" 在使用VMware时出现卡死或其他现象导致虚拟机强制关闭的,在重新安装虚拟机时会提示"无法获得VMCI ...

  5. c语言启动程序句柄无效,电脑中玩英雄联盟提示“句柄无效”是怎么回事

    电脑中玩英雄联盟提示"句柄无效"是怎么回事?一位用户反馈自己在玩英雄联盟游戏时,突然遇到警告音提示,将游戏进行最小化后,看到桌面上不停的出现提示"句柄无效",感 ...

  6. 启动VS2005调试器时出错: 绑定句柄无效

    用VS2005新建了一个WINDOWS应用,运行F5就出现"试图运行项目时出错:无法启用调试.绑定句柄无效." 解决方法如下 将工程属性->调试->启用VISUAL S ...

  7. 踩坑指南!OSError:[WinError 6] 句柄无效。

    在import moviepy后,运行程序出现以下错误. Exception ignored in: <function FFMPEG_VideoReader.__del__ at 0x0000 ...

  8. 使用pyinstaller打包,subprocess报“句柄无效”错误的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 使用pyinstaller打包python程序,使用-w参数,去掉console,发现执行命令行的subprocess相关语句 ...

  9. 开发常见错误解决(3)VS2005调试程序出错,绑定句柄无效 Terminal Services

         当我们使用VS2005调试程序时候出错,绑定句柄无效,这个是因为我们没有启动系统终端服务Terminal Services. 解决办法如下: 运行->Services.msc 启动Te ...

  10. VS.NET提示试图运行项目时出错:无法启动调试。绑定句柄无效解决办法

    也许是我迟发现了,总之我是刚刚才遇到这个问题的,挺不爽的,从模板新建的项目,未添加一行代码却出现了调试错误.(不用调试倒没事)有点郁闷. 还好,(感谢一下发明搜索引擎的人)百度给了我解决方案,不好意思 ...

最新文章

  1. linux进行主机发现,linux – 网络上所有计算机的主机名发现
  2. IT编辑推荐:广通Broadview IT运维管理平台
  3. 06day 03cdbpdb也成为 多租户环境
  4. python 多条件 选择 算法_python部署python算法 - 快速寻找满足条件的两个数
  5. open vswitch_Linux Foundation采用Open vSwitch,定义了“开放”和更多开源新闻
  6. android自定义控件 jar,Android Studio引用自定义的framework.jar包
  7. Projective Dynamics: Fusing Constraint Projections for Fast Simulation
  8. 窗口及元素尺寸大小位置获取方法记录
  9. rsyslog mysql ip_使用rsyslog+loganalzey收集日志显示客户端ip
  10. 和qc哪个发展更好_转行大数据还是人工智能,哪个发展更好
  11. C语言的源代码文件、目标文件和可执行文件
  12. 要给新家搭建智能家居,到底该从哪里入手?回复被「坑惨」的业主
  13. macos复制粘贴快捷键 快速_苹果MAC系统复制粘贴快捷键是什么?
  14. React的消息订阅全过程
  15. 计算机关闭系统默认共享,win10如何关闭默认共享_win10关闭默认共享的图文步骤...
  16. vim命令模式和底线_VIM 底线命令模式
  17. win7系统没有计算机睡眠状态,如何解决win7系统无法进入睡眠状态
  18. AUTOCAD——调整十字光标、CAD表格文字对齐方式
  19. 【日记 2021-05-14】树莓派获取环境亮度(光照度)
  20. 《C++ Primer中文版(第五版)》 第九章 顺序容器

热门文章

  1. 一文带你了解降压型稳压芯片原理
  2. EXCEL-数据透视表、日数据整理成月数据
  3. 智能实验室管理系统的现状怎么样
  4. [Linux]CentOS修改YUM镜像地址提高下载速度
  5. SAP ABAP 输出设备设置 LP01
  6. modbus模拟器使用
  7. 千万不要用虚拟机 广大程序员们
  8. 让IPFS星际文件系统永久保存你的数据
  9. VUE中友盟统计的使用方法
  10. 天刀手游不显示服务器列表,天涯明月刀手游服务器bug解决方法