WIN32串口操作解决串口号大于10问题

使用WIN32 API 打开当COM号大于10的时候,会出现打开错误或失败,一般解决的办法是人工修改USB 串口的com的名称让它的com号是单位数(如: COM1~COM9),但这样较麻烦。而且在设备接入大量串口设备时,没办法解决此问题。
产生这种奇怪现象的原因是:微软预定义的标准设备中含有“COM1”-“COM9”。所以,“COM1”-“COM9”作为文件名传递给函数时操作系统会自动地将之解析为相应的设备。但对于COM10及以上的串口,“COM10”之类的文件名系统只视之为一般意义上的文件,而非串行设备。

为了增加对COM10及以上串行端口的支持,微软规定,如果要访问这样的设备,应使用这样的文件名(以COM10为例):\\.\COM10
所以,对于COM10及以上的串口,CreateFile()的调用样式应调整如下:

CreateFile(
\\\\.\\COM10”, // 定义串口名,实际格式化时,需要反斜杠数翻倍,格式化出来的才是“\\.\COM10”
fdwAccess, // 存取模式(读写)
0, // 共享模式:必须设置为0,表示设备独占使用
NULL, // 保密性
OPEN_EXISTING, // 必须设置为OPEN_EXISTING
0, // 文件属性,如果是异步模式,可设置为
NULL // 模版,串口设备必须设置为NULL
);
亲测可以正常使用

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值