论坛首页 > 交流专区 > 技术交流 > 【码农心得】打不开大于10序号的...
查看:473  |  回复:10
【码农心得】打不开大于10序号的USB串口的解决方案
大白马
3
主题
27
回复
发表于Tue Sep 05 20:03:50 CST 2017   |  只看该作者 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
             );



  该帖子已被大白马于Tue Sep 05 20:04:35 CST 2017编辑过
擅长做上位机(USB通讯、网络通讯、无线控制、数据存储和展示),软件平台:VC++
回复 收藏
  举报
ChessWorld
26
主题
592
回复
发表于Tue Sep 05 21:46:23 CST 2017   |  只看该作者 2#
好经验~ 
FunnyNYPD
3
主题
288
回复
发表于Wed Sep 06 00:20:36 CST 2017   |  只看该作者 3#
This is a good experience. Do you have any other tutorial on using serial port with win32 API?
大白马
3
主题
27
回复
发表于Tue Sep 19 09:52:29 CST 2017   |  只看该作者 4#
FunnyNYPD 发表于 Wed Sep 06 00:20:36 CST 2017  3# This is a good experience. Do you have any other tutorial on...

最近很忙,刚到看到你的回复~


目前,我用的是这个类库(挺不错的)

CSerialPort v1.33


http://www.naughter.com/serialport.html


关于串口编程或控件、Class 类库(特别是MFC), 在知名网站: www.codeproject.com 也挺多的。


擅长做上位机(USB通讯、网络通讯、无线控制、数据存储和展示),软件平台:VC++
FunnyNYPD
3
主题
288
回复
发表于Sat Sep 23 10:34:09 CST 2017   |  只看该作者 5#

>CSerialPort v1.33


Do you think it still can be compiled on VC++6?

大白马
3
主题
27
回复
发表于Sat Sep 23 15:37:44 CST 2017   |  只看该作者 6#
FunnyNYPD 发表于 Sat Sep 23 10:34:09 CST 2017  5# >CSerialPort v1.33 Do you think it still can be compiled...

可以,But....


v1.19 (24 June 2006)

CSerialException::GetErrorMessage now uses the strsafe functions. This does mean that the code now requires the Platform SDK if compiled using VC 6.
擅长做上位机(USB通讯、网络通讯、无线控制、数据存储和展示),软件平台:VC++
FunnyNYPD
3
主题
288
回复
发表于Sat Sep 23 22:36:26 CST 2017   |  只看该作者 7#

>Platform SDK

what is it? Where can I get it?

let
6
主题
335
回复
发表于Sun Sep 24 01:39:18 CST 2017   |  只看该作者 8#

我就想知道WINDOWS 串口大到256 这种级别,无法再递增,如何重设置为个位数,重新开始。


比如批量生产  usb转串口这样的东西,每插一个新板,电脑识别一个号,很快就饱和。

SMT从业员,需要可联系。
大白马
3
主题
27
回复
发表于Thu Sep 28 10:54:40 CST 2017   |  只看该作者 9#
let 发表于 Sun Sep 24 01:39:18 CST 2017  8# 我就想知道WINDOWS 串口大到256 这种级别,无法再递增,如何重...
写个软件就可以对COM编号进行复位。或者还有一个办法,就是用USB HOST 的单片机,直接对USB转串口进行测试,测试一个模块,单片机重新复位一次。
擅长做上位机(USB通讯、网络通讯、无线控制、数据存储和展示),软件平台:VC++
大白马
3
主题
27
回复
发表于Thu Sep 28 11:15:21 CST 2017   |  只看该作者 10#
FunnyNYPD 发表于 Sat Sep 23 22:36:26 CST 2017  7# >Platform SDK what is it? Where can I get it?

我没有用VC6 ,如果你用VC6 ,只能咨询一下官方了:

Postal Address Naughter Software,
Clonganny, 
Ballygarrett, 
Gorey, 
Co. Wexford, 
Ireland
Email pjna@naughter.com
Hotmail pjnaughter@hotmail.com
Web http://www.naughter.com
Blog https://naughter.wordpress.com
Phone +353 53 9427960

另外的一个办法是: 如果你用FTDT的芯片,可以直接用FTDT官方出的DLL通信库,那个也挺好用的。



擅长做上位机(USB通讯、网络通讯、无线控制、数据存储和展示),软件平台:VC++
立创商城赵...
【官方工作人员】
107
主题
1165
回复
发表于Sat Oct 07 10:12:49 CST 2017   |  只看该作者 11#
FunnyNYPD 发表于 Sat Sep 23 22:36:26 CST 2017  7# >Platform SDK what is it? Where can I get it?

If you are familar with FTDI or Silabs chips,  the following web-Linked will be a good start for you:


1. D2XX or D3XX Driver API

http://www.ftdichip.com/FTDrivers.htm


2. USBXpress SDK

https://www.silabs.com/products/development-tools/software/direct-access-drivers

《立创快报》总编辑、立创电子公共实验室建设者,企业QQ:2355740879
  • 温馨提示:标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考:社区发帖规则
  • 您当前输入了 0个文字。还可以输入8000个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

顶部