CreateFile打开串口失败,返回INVALID_HANDLE_VALUE

Windows串口通信API实战:从CreateFile到异步I/O操作 本文深入解析Windows串口通信API的实战应用,从使用CreateFile函数正确打开串口开始,详细介绍了DCB结构配置、超时设置,并重点阐述了实现高性能异步I/O操作的核心方法。文章旨在帮助开发者掌握底层API,以应对工业控制、嵌入式调试等场景下对稳定性和实时性的严苛要求,避开常见陷阱,编写出可靠的工业级代码。 阅读详情

近来在做串口方面的程序,使用CreateFile打开串口,却一直失败,代码如下:

HANDLE hCom=CreateFile("COM10",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

但问题的奇怪之处在于换一个硬件后,打开COM6端口,他又成功了。。。

查阅良久,找到了MSDN上的解释:http://support.microsoft.com/?id=115831

对于COM10及以上的端口号,需要修改成如下格式:

HANDLE hCom=CreateFile("\\\\.\\COM10",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
问题解决。。。

微软真是个奇葩。。

C/C++语言windows读取串口数据 本文使用C/C++语言,对windows下串口读写进行操作。 阅读详情

相关推荐

MIT Cheetah Learning (一):State Estimate 从理论到实践:EKF融合IMU与编码器的状态估计全解析

本文深入解析了MIT Cheetah机器人中基于Extended Kalman Filter的状态估计技术,详细探讨了如何融合IMU与编码器数据以实现精准的State Estimate。通过四元数建模和传感器误差分析,揭示了EKF在复杂地形中的工程实践价值,为四足机器人的实时状态估计提供了完整解决方案。

weixin_30292843的博客 304

关于CreateFile创建句柄,出现系统找不到指定文件的问题

今天在书上看到了一个关于加壳的程序,前面有一个判定是否是PE文件的函数。于是拿来试试。结果出现了好多问题。最头痛的就是CreateFile返回的是INVALID_HANDLE_VALUE的问题。 最开始我以为是自己的文件地址出了问题。于是换了一个地址又一个地址。问题依然存在。在网上查找资料。有一篇可能是正解,当时我完全忽略了。我怎么会知道是参数类型的问题。 原函数代码:(部分) char m

cogbee的专栏 8857

手把手教你用UC3842搭建12V/5A反激电源(附PSIM仿真文件)

本文详细介绍了基于UC3842的12V/5A反激电源设计与PSIM仿真实践。从UC3842芯片选型、高频变压器计算到PSIM仿真模型搭建,提供完整的开关电源设计流程。特别包含PCB布局要点和实测优化建议,帮助工程师快速掌握反激电源开发技巧。

u6v7w8x的博客 1201

参数查阅~~~9.18

在Windows编程中,句柄(Handle)是一种用于标识、引用和操作资源的值,如文件句柄、进程句柄、窗口句柄等。在列举服务时,如果提供的缓冲区不足以容纳所有服务信息,这个变量将指示需要更大的缓冲区来接收服务信息。在调用列举服务的函数后,这个变量将表示实际返回的服务信息所需的缓冲区大小。是一个宏定义,用于在 Windows 编程中支持 Unicode 和 ANSI 字符串的编译选项下进行字符串文字的转换。在使用句柄的过程中,经常会对句柄的有效性进行检查,以确保句柄的正确性。,即一个无效的句柄值。

m0_72827793的博客 869

Matlab激活失败?手把手教你解决License checkout failed问题(附详细截图)

本文针对Matlab激活后出现“License checkout failed”错误的常见问题,提供了详细的解决方案。核心在于精准定位并正确填写Windows系统用户名,而非计算机名或账户全名。文章通过分步截图和命令指引,手把手教你使用`whoami`命令获取正确信息,并重新运行激活程序,从根本上解决因用户名填写错误导致的许可检查失败问题。

weixin_29062823的博客 570

Agile Modbus使用和学习笔记

i < len;这里仅仅需要提供获取函数即可,离散输入是只读类型i++) {return 0;只读类型寄存器i++) {return 0;i < len;

Car12 167

INVALID_HANDLE_VALUE 与 NULL

[cpp] view plaincopyprint? #include "stdafx.h"   #include    #include          using namespace std;         int _tmain(int argc, _TCHAR* argv[])   {       HANDLE m_hCom = Crea

koln频道 1万+

【经验&技巧】IBIS AMI模型眼图仿真问题探讨

在ADS的仿真环境中,不论发送和接收的AMI模型是否为true或者false,都可以将通道仿真设置为统计模式,但是,如果有一方的Init函数为false,在统计模式下,处于false状态的模型将不能执行其自带的后处理功能,如下图所示,左边的统计模式和右边的逐比特模式眼图存在明显的差异,原因在于,接收端的init函数为false导致在统计模式中不能对眼图进行DFE处理,换言之,此时统计模式下的眼图就是未经任何处理的“生图”。

一只豌豆象的博客 1765

用createfile 打开串口失败的解决方法

用createfile 打开串口时,当串口号小于10时,打开正常。 当串口号大于9时则打开失败,GetLastError 返回值为2,错误提示为 系统找不到指定的文件。 原因是设备名不对。当串口小10时设备名为COMx, 当串口时大于9时为\\\\.\\COMx,代码如下: /** 进入临界段 */ EnterCriticalSection(&m_csCommunicationSync); /** 把串口的编号转换为设备名 */ char szPort[15] = {0}; i

sense的专栏 8488

C#实现网络寻路(附完整源码)

C#实现网络寻路(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 420

无人机威胁检测(Hostile Drone Detection)——基于YOLOv10与UI界面的实现

Anti-UAV数据集由多种场景下的无人机视频与图片组成,包含无人机目标的多样化姿态、背景、光照变化,专门用于反无人机检测研究。YOLO(You Only Look Once)系列是当前流行的实时目标检测算法,具有速度快、精度高的特点。网络结构优化:更深更轻的主干网络,提升特征提取能力。检测头改进:多尺度特征融合,更好检测小型目标如无人机。训练技巧:使用自动混合精度训练(AMP)、数据增强、标签平滑等技术。

YOLO 229

CreateFile打开串口失败(com10以上)

// get a handle to the port m_hComm = CreateFile(_T(&quot;\\.\COM11&quot;), // communication port string (COMX) GENERIC_READ | GENERIC_WRITE, // read/write types 0, // comm devices must be opened wit...

爱她就要努力 5620

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

CreateFile()、GetCommState()、SetCommState()打开串口失败的原因或许是这个

博主初次在优快云发帖,如果有什么写的不好的地方请多多见谅! 对于一般新手而言,直接使用CreateFile函数时,通常会出现以下错误: 函数 "char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容 例如: bool openport(char *portname)//打开串口 { hComm = CreateFile(portname, //串口号  //GENERI

Tonystackm的博客 5194

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

十个以上串口加载问题-用CREATEFILE打开COM10

用CREATEFILE 打开1-9的<span class="t_tag" onclick="function onclick(){tagshow(event)}">串口没问题,但是打开COM10之类的串口号就返回-1了,请问是什么问题呢?=========================分割线=================================CreateFile()

左超 3515

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

打开虚拟串口COM18失败,GetLastError返回2

 打开虚拟串口COM18失败,GetLastError返回2,意味这系统无法找到COM18 解决方法:添加

lvjianchao的专栏 6420

HANDLE: INVALID_HANDLE_VALUE vs NULL

#include "stdafx.h" #include #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { HANDLE m_hCom = CreateFile(_T("COM3"),GENERIC_READ|GENERIC_WRITE,0,NULL ,OPEN_EXISTING,FILE_F

王者之道 6038

使用CreateFile打开大于COM9的端口 GetLastError返回ERROR_FILE_NOT_FOUND

如果你在Windows环境下,使用串口通讯(Serial Communication),你会使用到CreatFile()来初始化/打开对应的串口 那么,你需要注意,在使用大于COM9的端口时,应该这样写: CreateFile( "\\\\.\\COM10", // address of name of the communications device fdwAccess, // access (read-write) mode .

耿安的博客 580

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

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

乐观开朗,积极向上 7151

【Windows API】打开串口号大于9的串口,CreateFile返回失败!

近日,从网络上移植如下代码用于枚举计算机有效串口号。 void EnumCom() { CString strCOM; BOOL bResult; HANDLE hCom; int i; DWORD dwError; m_uiCom.RemoveAll(); for (i = 1; i <...

sunriver2000的专栏 2924

CreateFile()打开COM4时正常,打开COM10时却总是失败

程序调试时发现,使用CreateFile()打开COM4时正常,打开COM10时却总是失败。这两个端口均为虚拟COM口,通过蓝牙仿真串口完成数据收发,除了命名不同外,本质上并无任何不同。 而MSDN上对使用CreateFile()打开设备函数却失败返回并无详细解释,百思不得其解。上网百度一下找到了相关资料,原来是: Win32 API函数CreateFile()除了可打开普通文件外,还可以打开设备,比如可用于打开串口,获得串口句柄。 使用CreateFile()函数打开串口时文件共享模式应设置为0(表示独占

newzhpfree的博客 852

CreateFile之类的几个函数

这几天看windows API一日一练,博主给画出了道道,我来填填具体点的内容。            需求:想操作文件、串口、并口、USB等等。          原理层:其实很简单,就三步:打开,操作,然后关闭。          实践层1:打开用CreateFile,读写操作用WriteFile、ReadFile,关闭用CloseHandle。          实践层2:学习各个

mwj_88的专栏 5917

打开串口号大于10失败

当串口号大于10时候,打开失败,有可能是串口路径的格式不对,需要改为模式////.//COMXX    hCom = CreateFile("////.//COM17",   //打开串口17                                GENERIC_READ|GENERIC_WRITE, //允许读和写操作

jjunjoe的专栏 4747
上一篇: C语言实现radon变换
下一篇: 有趣的数字环的算法实现
celte
博客等级 码龄15年 40粉丝 74原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值