14564|6

93

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

怎样在vb中自动检测到可用串口号 [复制链接]

单片机的串口与VB通信,怎样在vb中自动检测到可用串口号,比如我的电脑串口号是com6那么一上电通信就自动选择com6?
此帖出自51单片机论坛

最新回复

编译失败是因为有两个地方写错了, 初始化波特率列表   Dim Baud As Integer 改成 Dim Baud As Long MSComm1这个控件是用picturebox代替的,换一下控件   详情 回复 发表于 2018-11-23 14:13
点赞 关注(1)
 

回复
举报

1025

帖子

1

TA的资源

一粒金砂(高级)

沙发
 
    j = 0
    For i = 1 To 16 Step 1
        If comISP.PortOpen = True Then                  '先关闭串口
            comISP.PortOpen = False
        End If

        comISP.CommPort = i
        On Error Resume Next                            '说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo。
        comISP.PortOpen = True
        If Err.Number <> 8002 Then                      '无效的串口号。这样可以检测到虚拟串口,如果用Err.Number = 0的话检测不到虚拟串口
            If j = 0 Then
                j = i
            End If
            cboPort.AddItem "COM" & i                   '生成串口选择列表
        End If
        comISP.PortOpen = False
    Next i

    If j >= 1 Then
        cboPort.Text = "COM" & j                        '自动打开可用的最小串口号
        comISP.CommPort = j
        comISP.PortOpen = True
        cmdOpenCom.Caption = "关闭串口"
        shpCOM.FillColor = vbGreen
        If Err.Number = 8005 Then                       '串口已打开,vbExclamation '
            comISP.PortOpen = False
            cboPort.Text = ""
            cmdOpenCom.Caption = "打开串口"
            shpCOM.FillColor = vbRed
        End If
    End If

此帖出自51单片机论坛
 
 
 

回复

1025

帖子

1

TA的资源

一粒金砂(高级)

板凳
 
这个是自动打开最小的有效串口号,并且在一个组合框中列出本机有效的串口号
此帖出自51单片机论坛

点评

非常感谢你能不能给个完整的程序  详情 回复 发表于 2015-7-17 13:14
 
 
 

回复

155

帖子

1

TA的资源

一粒金砂(中级)

4
 
Private Sub Form_Load()
    On Error GoTo errline                           '如果出错,进入错误处理程序
    Dim i As Integer                                '定义可访问的串口总数
    Dim Counter As Integer                          '用于记录经检查可以使用的串口号
    '=======================初始化串口列表====================
    Counter = 0                                     '计数器清零
    For i = 1 To 16                                 '循环检查可能存在的16个串口
        MSComm1.CommPort = i                        '依次打开每个串口
        MSComm1.PortOpen = True                     '打开串口
        If MSComm1.PortOpen = True Then             '如果打开成功,说明该串口可用
            MSComm1.PortOpen = False                '检查完毕,关闭串口
            Combo1(0).AddItem "COM" + CStr(i), Counter '将可用串口增加到组合框
            Counter = Counter + 1                   '计数器加1
        End If
    Next i
    Combo1(0).ListIndex = 0                            '将第一个可用串口设为默认值
    '=======================初始化波特率列表====================
    Dim Baud As Integer
    Counter = 0                                     '计数器清零
    Baud = 1200
    While Baud <= 115200                            '依次列出1200-15200的波特率
    Combo1(1).AddItem CStr(Baud), Counter
    Baud = Baud * 2
    Wend
   
    Exit Sub
   
errline:
    If Err.Number = 8005 Then                       '若有的串口已被其他程序打开,也应该将其加入组合框内
        Combo1(0).AddItem "COM" + CStr(i), Counter  '将可用串口增加到组合框内
        Counter = Counter + 1                       '计数器加1
    End If
    Resume Next                                     '回到出错入口处,继续执行巡检串口程序
End Sub

附件里面是我之前做的VB串口检测,没记错的话应该还可以打开。现在电脑没VB,无法验证,请见谅

VB串口检测.rar

2.03 KB, 下载次数: 307

此帖出自51单片机论坛

点评

不能生成EXE文件编译有错但是非常感谢你!  详情 回复 发表于 2015-7-17 09:23
 
 
 

回复

93

帖子

1

TA的资源

一粒金砂(中级)

5
 
liutogo 发表于 2015-7-16 18:41
Private Sub Form_Load()
    On Error GoTo errline                           '如果出错,进入错误处理 ...

不能生成EXE文件编译有错但是非常感谢你!
此帖出自51单片机论坛
 
 
 

回复

93

帖子

1

TA的资源

一粒金砂(中级)

6
 
wudianjun2001 发表于 2015-7-16 16:27
这个是自动打开最小的有效串口号,并且在一个组合框中列出本机有效的串口号

非常感谢你能不能给个完整的程序
此帖出自51单片机论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

7
 
编译失败是因为有两个地方写错了,
初始化波特率列表   Dim Baud As Integer 改成 Dim Baud As Long
MSComm1这个控件是用picturebox代替的,换一下控件
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表