串口WriteFile 句柄无效 的解决
原文来自:http://bbs.csdn.net/topics/390359398?page=1#post-395222951
最近在写串口的程序,上网查了一些文章,都大同小异。按照作者的代码,写了一个串口异步操作的程序,带总是不对,总是遇到句柄无效或参数错误的问题。上论坛发现有这问题的人不少,但都没有解决办法。最后无奈之下,上MSDN查了文档,终于解决了问题,现在拿出来跟大家分享。
这是在网上都找得到的代码
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;
|
这是我修改后的
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 句柄无效 的解决相关推荐
- c语言编程中句柄无效怎么解决,句柄无效,手把手教你句柄无效怎么解决
英雄联盟是一款深受广大用户们欢迎的一款网络游戏,不过最近有位用户打开英雄联盟的时候提示句柄无效,无法进入游戏,不知道什么情况,那么运行英雄联盟提示句柄无效怎么解决呢?下面,小编给大家讲解句柄无效的处理 ...
- “项目运行时出错,无法启动调试。绑定句柄无效”的解决办法
突然发现VS2005简体中文版不能调试,提示:"项目运行时出错,无法启动调试.绑定句柄无效." 结果重装.NET2.0也无效,又重装VS2005一次也无效,费了很大的周折,终于在 ...
- vs2005关于:无法启动调试 绑定句柄无效 的解决办法 [整理]
最近装了vs2005简体中文版,可是却不能调试,提示: 无法启动调试 绑定句柄无效 后来查资料,发现有人说是 Terminal Services 这个服务被禁用了,于是我将这个服务设为手动,结果还是不 ...
- 虚拟机VMware提示“无法获得VMCI驱动程序的版本:句柄无效”的解决方法
虚拟机VMware提示"无法获得VMCI驱动程序的版本:句柄无效" 在使用VMware时出现卡死或其他现象导致虚拟机强制关闭的,在重新安装虚拟机时会提示"无法获得VMCI ...
- c语言启动程序句柄无效,电脑中玩英雄联盟提示“句柄无效”是怎么回事
电脑中玩英雄联盟提示"句柄无效"是怎么回事?一位用户反馈自己在玩英雄联盟游戏时,突然遇到警告音提示,将游戏进行最小化后,看到桌面上不停的出现提示"句柄无效",感 ...
- 启动VS2005调试器时出错: 绑定句柄无效
用VS2005新建了一个WINDOWS应用,运行F5就出现"试图运行项目时出错:无法启用调试.绑定句柄无效." 解决方法如下 将工程属性->调试->启用VISUAL S ...
- 踩坑指南!OSError:[WinError 6] 句柄无效。
在import moviepy后,运行程序出现以下错误. Exception ignored in: <function FFMPEG_VideoReader.__del__ at 0x0000 ...
- 使用pyinstaller打包,subprocess报“句柄无效”错误的解决方法
2019独角兽企业重金招聘Python工程师标准>>> 使用pyinstaller打包python程序,使用-w参数,去掉console,发现执行命令行的subprocess相关语句 ...
- 开发常见错误解决(3)VS2005调试程序出错,绑定句柄无效 Terminal Services
当我们使用VS2005调试程序时候出错,绑定句柄无效,这个是因为我们没有启动系统终端服务Terminal Services. 解决办法如下: 运行->Services.msc 启动Te ...
- VS.NET提示试图运行项目时出错:无法启动调试。绑定句柄无效解决办法
也许是我迟发现了,总之我是刚刚才遇到这个问题的,挺不爽的,从模板新建的项目,未添加一行代码却出现了调试错误.(不用调试倒没事)有点郁闷. 还好,(感谢一下发明搜索引擎的人)百度给了我解决方案,不好意思 ...
最新文章
- linux进行主机发现,linux – 网络上所有计算机的主机名发现
- IT编辑推荐:广通Broadview IT运维管理平台
- 06day 03cdbpdb也成为 多租户环境
- python 多条件 选择 算法_python部署python算法 - 快速寻找满足条件的两个数
- open vswitch_Linux Foundation采用Open vSwitch,定义了“开放”和更多开源新闻
- android自定义控件 jar,Android Studio引用自定义的framework.jar包
- Projective Dynamics: Fusing Constraint Projections for Fast Simulation
- 窗口及元素尺寸大小位置获取方法记录
- rsyslog mysql ip_使用rsyslog+loganalzey收集日志显示客户端ip
- 和qc哪个发展更好_转行大数据还是人工智能,哪个发展更好
- C语言的源代码文件、目标文件和可执行文件
- 要给新家搭建智能家居,到底该从哪里入手?回复被「坑惨」的业主
- macos复制粘贴快捷键 快速_苹果MAC系统复制粘贴快捷键是什么?
- React的消息订阅全过程
- 计算机关闭系统默认共享,win10如何关闭默认共享_win10关闭默认共享的图文步骤...
- vim命令模式和底线_VIM 底线命令模式
- win7系统没有计算机睡眠状态,如何解决win7系统无法进入睡眠状态
- AUTOCAD——调整十字光标、CAD表格文字对齐方式
- 【日记 2021-05-14】树莓派获取环境亮度(光照度)
- 《C++ Primer中文版(第五版)》 第九章 顺序容器