CreateFile()打开串口失败,返回句柄值为0xffffffff

CreateFile()打开串口失败,返回句柄值为0xffffffff出错情况:设备1和设备2分别使用COM1和COM2外界通信,在不关闭软件的情况下,调换串口(即设备1/2,分别使用COM2/1),此时出错?以下是查找原因的步骤:_hCommHandle=::CreateFile( _szCommStr, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLA

大家好,又见面了,我是你们的朋友全栈君。

出错情况:设备1和设备2分别使用COM1和COM2外界通信,在不关闭软件的情况下,调换串口(即设备1/2,分别使用COM2/1),此时出错?以下是查找原因的步骤:

_hCommHandle = ::CreateFile(
	_szCommStr,
	GENERIC_READ | GENERIC_WRITE,
	0,
	NULL,
	OPEN_EXISTING,
	FILE_FLAG_OVERLAPPED,			
	NULL
	);

打开串口,执行到这里时,_hCommHandle的值为INVALID_HANDLE_VALUE(0xffff ffff),根据函数的帮助文件知道可以利用GetLastError()获取出错原因,如下:

///查找错误
DWORD erM=0;
LPVOID lpMsgBuf;
CString theErr;
if(_hCommHandle==INVALID_HANDLE_VALUE) erM=GetLastError();
FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
            NULL,
            erM,
            MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
            (LPTSTR) &lpMsgBuf,
            0, NULL );
theErr.Format("%s",lpMsgBuf);//theErr显示为“拒绝访问”

出错原因:因为之前的串口仍被占用还没有释放,互换串口后,再次初始化串口时会失败(拒绝访问)。解决办法:每次使用完串口后,将其关闭,再次使用时(针对串口互换的这种情况),就不会出错了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145722.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux中env命令_centos7环境变量配置

    linux中env命令_centos7环境变量配置env命令linux系统中的环境变量是很多的,就算是一些常用的环境变量我们也不一定能记得全名。env命令可以显示当前操作系统所有的环境变量,下面的示例代码是Ubuntu系统的。示例dai@ubuntu:~$envUSER=daiXDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0SSH_AUTH_SOCK=/run/user/

    2022年10月1日
  • 【Linux】内核编程中的EXPORT_SYMBOL()

    【Linux】内核编程中的EXPORT_SYMBOL()查看符号导出结果命令:以EXPORT_SYMBOL(export_symbol_server)为例:$cat/proc/kallsyms|grepexport_symbol_server一:EXPORT_SYMBOL()宏定义相关定义如下#define___PASTE(a,b)a##b#define__PASTE(a,b)___PASTE(a,b)#define__UNIQUE_ID(prefix)__PASTE(__PASTE(__UNIQUE_ID_,p

    2022年7月16日
  • ESP32应用指南

    一、简介。想当年,安信可公司推出一款低成本的WIFI模块(基于乐鑫公司的ESP8266芯片)之后,火了一段时间。这个模块是支持AT指令和SDK两种开发方式。AT指令很简单,用串口发送几条指令,即可让模块进入串口透传模式,用户基本不用涉及复杂的TCP/IP协议。SDK开发,相当于固件库开发,官方提供丰富的例子,有带操作系统和不带操作系统等等,代码可读性好,上手难度并不高。由于ESP8…

    2022年4月8日
  • phpstorm 2021激活码_在线激活

    (phpstorm 2021激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
  • jquery tmpl 详解「建议收藏」

    jquery tmpl 详解「建议收藏」转自:http://www.cnblogs.com/zhuzhiyuan/p/3510175.html动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等。 这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在浏览器端拼数据就在服务器端拼数据。不过,从传输量方面来看,返回 HTML

    2022年6月29日
  • Java Integer最大值最小值输出

    Java Integer最大值最小值输出System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MAX_VALUE+1);System.out.println(Integer.MIN_VALUE);System.out.println(Integer.MIN_VALUE-1);输出结果如下:2147483647-214748364

    2022年9月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号