• 9051阅读
  • 10回复

[提问]qt怎样获取COM10以上的串口 [复制链接]

上一主题 下一主题
离线zjfshowtime
 
只看楼主 倒序阅读 楼主  发表于: 2011-11-18
qt的串口编程,通过QextSerialEnumerator::getPorts();来动态的获取系统中的串口,但是只能获取COM10一下的串口,COM10和超过COM10都无法读取到,我google上找了下,知道是window下认为COM1到COM9为系统默认标准的串口,超过的就作为其它口,请问还有什么别的方法读取到超过COM10的串口,我用的蓝牙COM16,就读取不到,而且不可以强制修改端口号,知道的高手,请果断指教一下。谢谢了
离线zjfshowtime
只看该作者 1楼 发表于: 2011-11-18
离线dbzhang800

只看该作者 2楼 发表于: 2011-11-18
QextSerialEnumerator::getPorts() 获取10以上的串口应该没有问题,至少我这儿22个串口没问题。

至于蓝牙,我不了解,不清楚 是否可能可以用
GUID_DEVCLASS_PORTS
枚举出来
离线realfan

只看该作者 3楼 发表于: 2011-11-19
可以通过QSettings读取注册表
"HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM"
能取到所有串口
离线zjfshowtime
只看该作者 4楼 发表于: 2011-11-21
回 2楼(dbzhang800) 的帖子
你那里可以获取COM10以上的串口,直接枚举出来的么?
离线zjfshowtime
只看该作者 5楼 发表于: 2011-11-21
回 3楼(realfan) 的帖子
我不想读取所有的系统串口,我只想得到当前可用的串口,这样方便我选择串口来连接
离线zjfshowtime
只看该作者 6楼 发表于: 2011-11-21
回 2楼(dbzhang800) 的帖子
再跟你说一下我做的两个测试:(1)我把usp转串口,它默认的是COM4我强制修改为COM20,我用
QextSerialEnumerator::getPorts() 获取串口,可以读到COM20,但是打不开,COM4可以打开,求原因。 (2)我这里的蓝牙是安装驱动后,在设备管理器(端口)里面多了   Bluetooth  Serial  Port  COM14,但是我用QextSerialEnumerator::getPorts()  就读取不到这个串口了,是串口原因还是它不属于一般的串口了。帮忙分析一下
离线zjfshowtime
只看该作者 7楼 发表于: 2011-11-21
回 2楼(dbzhang800) 的帖子
超过COM10的端口打不开,是需要添加“\\\\.\\COM10”这样就相当于端口转化为了“\\.\COM10”,这样在打开是可以打开的了。但是蓝牙的端口还没解决呢!
离线realfan

只看该作者 8楼 发表于: 2011-11-21
回 5楼(zjfshowtime) 的帖子
这里面得到的串口,应该都是可用的.
我用过USB转串口设备,当这个设备插在电脑上时,注册表中就多一个,拔掉就少一个.
所以,当前取到的串口,应该都是可以用的.
离线zjfshowtime
只看该作者 9楼 发表于: 2011-11-22
回 8楼(realfan) 的帖子
恩,这个了解,不是把所有的端口都添加进来,而是空闲着,可以使用的。
离线honestapple

只看该作者 10楼 发表于: 2013-03-05
请问楼主是如何使用QextSerialEnumerator这个类的。我运行了QT提供的例子,但是一个串口也找不到。
快速回复
限100 字节
 
上一个 下一个