设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 6343|回复: 11
打印 上一主题 下一主题

[与其它组件] vba自动识别串口号方法分享

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-3 12:56:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用usb2com这种设备的时候
往往不能知道该设备的端口号,例如将扫描枪插入第一个usb口的时候,会生成com4口,插入第二个usb端口的时候会生成com5口
那么在程序设计中我们就需要判断其端口号,然后进行端口赋值
思路一,对所有端口进行遍历,根据遍历的端口名称确定端口号,问题,时间慢,效率低
思路二,读取注册表,根据主键名称的值来判别端口号

本来想用 wscript.regread 直接读取键值的内容的,结果因为键值名称中为“\Device\Spccom1”,我就郁闷,你一个好好设备,干啥取名这么敏感,还含有"\",导致wscript读取出错。
只好反复测试,最终使用api进行读取
以下是引用别人的api读取注册表函数,这里只是对端口号如何读取做以结合
串口的路径为 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
根据自己需要段端口进行名称判断,然后读取所需值


    Dim hKey As Long, strValue As String
    Dim lresult As Long, lType As Long, lBufferSize As Long, strBuff As String
    Dim sType As String, sValue As Variant, lData As Long
    Dim i As Integer
    lMainKey = GetMainKey("HKEY_LOCAL_MACHINE")
    RegOpenKey lMainKey, "HARDWARE\DEVICEMAP\SERIALCOMM", hKey
    strValue = "\Device\Spccom1"
    lresult = RegQueryValueEx(hKey, strValue, 0, lType, ByVal 0, lBufferSize)
        If lresult = 0 Then
            If lType = REG_SZ Then
                'Create a buffer
                strBuff = String(lBufferSize, Chr$(0))
                'retrieve the key's content
                lresult = RegQueryValueEx(hKey, strValue, 0, REG_SZ, ByVal strBuff, lBufferSize)
                If lresult = 0 Then
                    'Remove the unnecessary chr$(0)'s
                    sValue = Left$(strBuff, InStr(1, strBuff, Chr$(0)) - 1)
                End If
        end if
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-3-3 13:44:37 | 只看该作者
谢谢分享~~
3#
发表于 2009-3-3 14:53:40 | 只看该作者
先学习了
4#
发表于 2009-3-3 16:01:23 | 只看该作者
收藏了备用。
谢谢分享。
5#
 楼主| 发表于 2009-3-3 22:31:05 | 只看该作者

各位同仁
软硬结合的程序才是最赚钱的,嘻嘻
纯软件别人无法理解为啥这么贵
所以多做做硬件编程吧
没有你想象的那么复杂的
6#
发表于 2009-4-10 09:05:07 | 只看该作者
谢谢
7#
发表于 2009-4-17 16:30:28 | 只看该作者
正急需,谢谢@
8#
发表于 2009-4-17 16:34:40 | 只看该作者
谢谢分享~~
9#
发表于 2010-2-27 09:45:03 | 只看该作者
非常有用的资料
10#
发表于 2010-2-27 18:50:35 | 只看该作者
我对API很不熟悉,在GetMainKey时出错,请问是否要引用什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-27 16:00 , Processed in 0.101476 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表