首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

一USB接口读卡器每次连接到计算机上之后分配到的串口往往不一样,怎么根据此设备的名称获取它连接的串口,以调用连接读卡器的函数

2013-06-19 
一USB接口读卡器每次连接到计算机上之后分配到的串口往往不一样,如何根据此设备的名称获取它连接的串口,以

一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


api函数和常数,你自己添加一下
------解决方案--------------------


采用尝试法,完成连接是很慢的。连接较快的 U 转串读卡器,都是采用查注册表一类的方法。

还有一些 U 转串芯片驱动,允许设置为固定的串口号。

热点排行