查看: 9013  |  回复: 12
【码农心得】打不开大于10序号的USB串口的解决方案
大白马
3
主题
35
回复
发表于2017-09-05 20:03:50 | 显示全部楼层
1# 电梯直达

现写现学~

今天碰到一个问题,跟大家分析一下心得~


使用WIN32 API 打开当COM号大于10的时候,会出现打开错误或失败,一般解决的办法是人工修改USB 串口

的com的名称让它的com号是单位数(如: COM1~COM9),但这样较麻烦。而且,客户的电脑,在远方,让客户自己修改也不现实吧?!


那咋办? 解决办法如下:

产生这种奇怪现象的原因是:微软预定义的标准设备中含有“COM1”-“COM9”。所以,“COM1”-“COM9”作为文件名传递给函数时操作系统会自动地将之解析为相应的
设备。但对于COM10及以上的串口,“COM10”之类的文件名系统只视之为一般意义上的文件,而非串行设备。

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

 CreateFile(
                        "\\\\.\\COM10",           // 定义串口名
                        fdwAccess,                 // 存取模式(读写)
                        0,                               // 共享模式:必须设置为0,表示设备独占使用
                        NULL,                       // 保密性
                        OPEN_EXISTING,    // 必须设置为OPEN_EXISTING
                        0,                              // 文件属性,如果是异步模式,可设置为
                       NULL                        // 模版,串口设备必须设置为NULL
             );



擅长做上位机(USB通讯、网络通讯、无线控制、数据存储和展示),软件平台:VC++
ChessWorld
36
主题
820
回复
发表于2017-09-05 21:46:23   |  显示全部楼层
2#
好经验~ 

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部