打印

VB如何自动识别电脑上所有的串口

[复制链接]
8724|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hn04|  楼主 | 2009-10-15 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在学习VB编写上位机程序,想请教一下,如何用VB实现电脑上所有串口的自动识别?
在网上有介绍说使用下面的方法:
Dim a
For a = 1 To 16
      MSComm1.CommPort = a
      On Error Resume Next
      MSComm1.PortOpen = True
      If MSComm1.PortOpen = True Then
            Combo1.AddItem ("COM" & a)
            MSComm1.PortOpen = False
      End If
Next
虽然这种方法虽然可以实现串口的自动识别,但是仍存在以下问题:
如果在执行这段程序之前,系统的某个串口处于打开状态,则该串口将不被检测到,我下载了丁丁的串口调试助手试验,即使该串口处于打开状态,照样可以检测到,不知道是如何实现的?

相关帖子

沙发
hn04|  楼主 | 2009-10-19 10:51 | 只看该作者
本帖最后由 hn04 于 2009-10-19 10:54 编辑

问题已经解决了!代码如下:

'检测系统存在的串口,并设置到下拉列表框
Dim a  As Integer
For a = 1 To 16
    '判断添加被占用的串口到列表
    If ERR.Number = 8005 Then                              '如果错误号为8005(端口已经打开),则添加到列表
        Combo1.AddItem ("COM" & a - 1)
    End If
    ERR.Clear                                                          '清除错误信息

    '判断添加可用的串口到列表
    MSComm1.CommPort = a
    If MSComm1.PortOpen = True Then                   '如果串口处于打开状态说明,此串口存在,添加到列表
        Combo1.AddItem ("COM" & a)
    Else                                                                   '如串口未处于打开状态,进行串口检测操作
        On Error Resume Next                                   '下一句操作出现错误,说明这个串口号不存在,进入下一个串口号的检测
        MSComm1.PortOpen = True                           '打开这个串口,如果出现错误则说明这个串口不存在
        If MSComm1.PortOpen = True Then               '如果串口处于打开状态说明,此串口存在,添加到列表,并关闭该串口,恢复初始的串口状态
            Combo1.AddItem ("COM" & a)
            MSComm1.PortOpen = False
        End If
    End If
Next

使用特权

评论回复
板凳
梁喜幸| | 2010-5-15 17:58 | 只看该作者
好!

使用特权

评论回复
地板
qq511153186| | 2014-5-8 17:39 | 只看该作者
参考一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

64

帖子

0

粉丝