查看: 10589
回复: 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++
大白马
3
主题
35
回复
发表于2017-09-19 09:52:29   |  显示全部楼层
4#
发表于2017-09-06 00:20:36  3# Thisisagoodexperience.Doyouhaveanyothertutorialonusingserial...

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


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

CSerialPort v1.33


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


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


擅长做上位机(USB通讯、网络通讯、无线控制、数据存储和展示),软件平台:VC++
大白马
3
主题
35
回复
发表于2017-09-23 15:37:44   |  显示全部楼层
6#
发表于2017-09-23 10:34:09  5# >CSerialPortv1.33DoyouthinkitstillcanbecompiledonVC++6?

可以,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++
大白马
3
主题
35
回复
发表于2017-09-28 10:54:40   |  显示全部楼层
9#
发表于2017-09-24 01:39:18  8# 我就想知道WINDOWS串口大到256这种级别,无法再递增,如何重设置为个位数,重新开始。比如批量生产usb转串口这样的...
写个软件就可以对COM编号进行复位。或者还有一个办法,就是用USB HOST 的单片机,直接对USB转串口进行测试,测试一个模块,单片机重新复位一次。
擅长做上位机(USB通讯、网络通讯、无线控制、数据存储和展示),软件平台:VC++
大白马
3
主题
35
回复
发表于2017-09-28 11:15:21   |  显示全部楼层
10#
发表于2017-09-23 22:36:26  7# >PlatformSDKwhatisit?WherecanIgetit?

我没有用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++

主题

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

禁言/删除

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

举报

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

顶部