一USB接口读卡器每次连接到计算机上之后分配到的串口往往不一样,如何根据此设备的名称获取它连接的串口,以调用连接读卡器的函数
一USB接口读卡器每次连接到计算机上之后分配到的串口往往不一样,VB6程序中用代码根据此设备的名称(在设备管理器中显示的名称)获取它连接到第几个串口,该读卡器在设备管理器中的名称为:Prolific USB-to-Serial Bridge(COM8) 取得了串口值,才能在程序中使用该值初始化读卡器,而后使用该读卡器。谢谢大家
[解决办法]
这种接口协议真的过时了。如果是 PC/SC 协议的,就可以枚举智能卡管理器中的所有读卡器。
[解决办法]
你的问题,也许可以通过访问注册表来解决。
[解决办法]
从COM1-16依次尝试初始化一遍,那个成功了就在那个口上
[解决办法]
本帖最后由 bcrun 于 2013-05-27 10:49:28 编辑 创建一个可用Comm列表,由用户选择吧,Comm列表可以使用下面的函数
Private Sub QueryCommPort() '查询系统串口,创建串口列表到cmbCommPort中
'Check registry serial Port list Start -----------------------------
Dim typecode As Long
Dim lngKeyHandle As Long
Dim lngResult As Long
Dim lngCurIdx As Long
Dim ValueName As String * 256
Dim ValueNameLen As Long
Dim ItemValue As String * 256
Dim ValueLen As Long
lngResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\DEVICEMAP\SERIALCOMM", 0&, KEY_READ, lngKeyHandle)
If lngResult <> ERROR_SUCCESS Then
MsgBox ("找不到有效串行口")
Exit Sub
End If
lngCurIdx = 0
ValueNameLen = 256
ValueLen = 256
While RegEnumValue(lngKeyHandle, lngCurIdx, ByVal ValueName, ValueNameLen, 0&, typecode, ByVal ItemValue, ValueLen) = ERROR_SUCCESS
If typecode = REG_SZ Then
cmbCommPort.AddItem Left(ItemValue, ValueLen)
End If
lngCurIdx = lngCurIdx + 1
ValueNameLen = 256
ValueLen = 256
Wend
Call RegCloseKey(lngKeyHandle)
'Check registry serial Port list End -------------------------------
End Sub