用CreateFile打开COM10以上的串口

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在VS2005上用CreateFile打开串口,代码如下:

 

其中Port是LPCTSTR类型。

 

如果打开串口1,就传给Port的值为:“COM1”。

 

因项目需要,需要打开很多串口,发现以上函数到COM10以后就不能用了,始终不能打开串口。即调用CreateFile后,返回的m_hComm为INVALID_HANDLE_VALUE。

 

在CSDN上查看了一下,原文如下:

CreateFile(
            "////.//COM10",               //   address   of   name   of   the   communications   device
            fdwAccess,                     //   access   (read-write)   mode
            0,                                    //   share   mode
            NULL,                              //   address   of   security   descriptor
            OPEN_EXISTING,            //   how   to   create
            0,                                    //   file   attributes
            NULL                               //   handle   of   file   with   attributes   to   copy
      );

 

那么如果需要打开COM10以上的串口,就需要把第一个参数从原来的“COM10”改为“////.//COM10”,就能打开成功了。

笔者试验了一下,如果打开COM1的话,也可以使用“////.//COM1”。所以可以把传入的参数变为"////.//"+Port。

 

wins下C++读写串口设备(CreateFile方式) 创建文件句柄方式对串口设备进行操作 因工作要求我链接的是虚拟串口做转接数据的功能,我只能指明我当时链接设备读写的时候遇到的一些问题 **主要函数//打开串口的模式 CreateFile 创建(串口名称,打开串口的模式,不公开,默认,打开,默认,默认) ReadFile 读 (文件句柄,接收缓存,接收多少,存放缓存里面具体字节) WriteFile 写(文件句柄,要写入的东西,要写入的字节数,用于存放实际写入的字节数)** 对于传参不做过多解释 自行百度都有 注意创建时候的方式和确定是同 阅读详情

相关推荐

VC的CreateFile 出现不能打开超过9的串口

VC的CreateFile 出现不能打开超过9的串口

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

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

sense的专栏 8477

Windows.h里面CreateFile接口打开串口

在C++中对于串口的操作可以调用CreateFile函数打开串口,其中第一个参数为文件名或设备串口号,当串口号小于10,正常填写COMx,当串口号大于10,则需要在串口号之前加上\\\\.\\,例如“\\\\.\\COMx”。

qq_67065577的博客 1715

CreateFile打开串口超过com10就不能打开的解决方法

一台机子用moxa的两块8口的串口扩展卡,扩展了16个串口,在硬件管理器里面也能看到这16个串口,但是用CreateFile打开串口时,COM10及以上的串口打开失败。解决方法如下: char szPort[50]; if (portNo < 10) { sprintf_s(szPort, "COM%d", portNo); } else { sprintf_s(szPor...

qq_39851127的博客 3137

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

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

左超 3511

串口com10以上CreateFile打开成功的方法

在做一个串口通讯,遇到了这个问题,com1到com9正常打开com10以上就不行了,用getlasterror查看,错误位找不到指定文件,后查看MSDN,解释如下: Windows NT: You can use paths longer than MAX_PATH characters by calling the wide (W) version of CreateFile and pre

jupiter37的专栏 4891

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...

爱她就要努力 5601

CreateFile打开串口超过com10就不能打开,解决办法

10以下的串口可以这样打开 CreateFile( "COM5", // address of name of the communications device fdwAccess, // access (read-write) mode ...

weixin_30502965的博客 801

VC中如何打开Com10及以上的串口

<br />今天用以前的一个串口程序,发现串口怎么也打不开。因为用的串口不是常规的COM1、COM2而是大于Com10的端口,想着是很简单的增加几个选项就可以轻松搞定的,结果加上后测试,发现总是初始化失败,调试发现在CreateFile里总是失败,找到MSDN一看果然这里有区别。<br /><br />   Win32 API函数CreateFile()除了可打开普通文件外,还可以打开设备,比如可用于打开串口,获得串口句柄。使用CreateFile()函数打开串口时文件共享模式应设置为0(表示独占),创建参

wewaa的专栏 1694

CreateFile打开串口串口名字的写法

打开COM1到COM9用: m_hCom = CreateFile(_T("COM1:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, NULL, NULL); 或者 m_hCom = CreateFile(_T("COM1"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXIS...

weixin_34029680的博客 224

使用CreateFile函数打开COM10及以上串行口

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

qinrenzhi的博客 659

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

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

newzhpfree的博客 850

使用CreateFile()打开COM10及以上串行口

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

xin_yu_xin的专栏 4212

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

打开虚拟串口COM18失败,GetLastError返回2,意味这系统无法找到COM18 解决方法:添加_T("\\\\.\\COM18")即可 转载:http://blog.sina.com.cn/s/blog_470eccc60100cwzb.html 程序调试时发现,使用CreateFile()打开COM4时正常,打开COM10时却总是失败。这两个端口均为虚拟C

u012497865的博客 2037
上一篇: Windows下C++多线程同步与互斥简单运用
下一篇: Google C++ Style Guide 笔记1
ccing
博客等级 码龄19年 11粉丝 9原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值