10734|1

93

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

VB串口自动检测为什么总是无效的端口号8002 [复制链接]




Private Sub command2_Click()



If MSComm1.PortOpen = True Then MSComm.PortOpen = False                          ' 先判断串口是否打开,如果打开则先关闭



With MSComm1



  .Settings = "9600,N,8,1"   '设置通信口参数

  .InputMode = comInputModeBinary '设置接收数据模式为二进制形式

  .InputLen = 1                  '设置input一次从接收缓冲区读取字节数为1

  .InBufferCount = 0              '清除接收缓冲区,等待计算机接收的字符数为0

  .RThreshold = 1               '设置接收一个字节产生oncomm事件,打开接收

  .SThreshold = 0

.PortOpen = True         ‘如果这句去掉就好了但是去掉这句文本框里就收不到1 2 3了

End With



End Sub



Private Sub Form_Load()

  Text1.Text = ""



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.AddItem "COM" + CStr(i), Counter '将可用串口增加到组合框

            Counter = Counter + 1                   '计数器加1

        End If

    Next i

    Combo1.ListIndex = 0                            '将第一个可用串口设为默认值



    Exit Sub

errline:

    If Err.Number = 8005 Then                       '若有的串口已被其他程序打开,也应该将其加入组合框内

        Combo1.AddItem "COM" + CStr(i), Counter  '将可用串口增加到组合框内

        Counter = Counter + 1                       '计数器加1

    End If

    Resume Next                                     '回到出错入口处,继续执行巡检串口程序



End Sub



Private Sub MSComm1_OnComm()



Dim buffer As Variant

Dim arr() As Byte

Select Case MSComm1.CommEvent

  Case comEvReceive

  buffer = MSComm1.Input

  arr = buffer        '返回一组二进制数据

  'Text1.Text = Text1.Text + " " + Hex(arr(0))

   Text1.Text = Hex(arr(0))

If Trim(Text1.Text) = "1" Then

SendKeys "a"



ElseIf Trim(Text1.Text) = "2" Then

SendKeys "b"



ElseIf Trim(Text1.Text) = "3" Then

SendKeys "c"

End If

End Select

End Sub



此帖出自51单片机论坛

最新回复

不如直接检查注册表,windows中的串口可以在注册表中找到的。 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM  详情 回复 发表于 2015-7-17 19:50
点赞 关注
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 
不如直接检查注册表,windows中的串口可以在注册表中找到的。

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表