⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vbcom3.txt

📁 VB 的COM程序
💻 TXT
字号:
Private Sub Form_Load()

    MSComm1.CommPort = 1 '使用串行口1

    MSComm1.Settings = "4800,N,8,1" '波特率4800,无校验,8个数据位,1个停止位。

    MSComm1.InputLen = 1 '当使用MSComm1.Input时,每次从接收缓冲区取一个字节。

    TestTimer.Interval = 20 '定时器的中断间隔为20ms,用于更新显示时间。
    
End Sub

Private Sub Command1_Click()

    Dim echoch% '命令变量
    
    Dim ch$

    On Error Resume Next '简单的错误处理

    Label1.Caption = MSComm1.Settings '显示串行口的设置。
    
    TestTimer.Enabled = True

    If Command1.Caption = "通信" Then '若当前命令按扭的提示为“通信”则开始发送和

        Command1.Caption = "停止" '接受数据,并将命令按扭提示改为“停止”,以

        CmdExit.Enabled = False '允许停止通信。使退出命令在通信中失效。
        
        Echo.Enabled = False

        If Not MSComm1.PortOpen Then '若串行口没有打开,则打开串行口

            MSComm1.PortOpen = True

        End If

        If MSComm1.PortOpen Then '若串口已经打开,则发送连接或控制命令给单片机

            If Echo.Text <> "" Then '若命令输入框不空,则将其转换为ASCII码值

                echoch% = Asc(Echo.Text)
                
            Else

                echoch% = &H41 '否则确省命令为41H,ASCII的"A"

            End If

            MSComm1.Output = echoch% '向串行口写入一字节命令,由WINDOWS自动将命令发出

            LabelSend.Caption = Chr(echoch%) & " ASCII " & Hex(echoch%) '显示刚发出的命令
        
        End If

        Do While MSComm1.PortOpen

            If MSComm1.InBufferCount > 0 Then '若mscomm1.InBufferCount>0表示接受缓冲区有数据,并读出一个字符

                ch$ = MSComm1.Input

                LabelReceive.Caption = Asc(ch$)
                 
                Select Case ch$
                
                    Case Asc("Y") '若收到字母“Y”,则退出当前循环进入下一循环
                    
                        MsgBox "连接成功,您可以给单片机发送命令了!"
                    
                    Case Asc("A")
                        
                        MsgBox "你发送的一号命令已经被单片机收到!"
                                    
                    Case Asc("B")
                        
                        MsgBox "你发送的二号命令已经被单片机收到!"
                        
                    Case Asc("C")
                    
                        MsgBox "你发送的N号命令已经被单片机收到!"
                        
                    Case Else
                    
                        MsgBox "你发送了非法命令,单片机已经晕了!"
                        
                End Select

            Else
                                    
                If MsgBox("连接失败,请检查连接是否正确!", vbRetryCancel) = 4 Then
    
                    dummy = DoEvents()
           
                    MSComm1.Output = echoch% '否则继续向下位机发命令,通知下位机送数据
                    
                Else
                
                     Exit Do
                
                End If

            End If

            dummy = DoEvents() '让系统处理其他消息

        Loop        '下位机接受到正确的命令,并回发命令正确时,进入下面循环

    Else '在通讯过程中,按下cmdCOMM按钮则停止通信,发出停止测试

        Command1.Caption = "通信" '命令,关闭串行口,使退出按钮有效。

        MSComm1.Output = Chr(&H5F)

        MSComm1.PortOpen = False

        CmdExit.Enabled = True
        
        Echo.Enabled = True
        
        TestTimer.Enabled = False

    End If

End Sub

Sub CmdExit_Click()

    If MSComm1.PortOpen Then '确认关闭串行口
 
        MSComm1.PortOpen = False

    End If

    End '终止整个程序

End Sub

Private Sub Command2_Click()

    TestTimer.Enabled = True

End Sub

Private Sub TestTimer_Timer() '更新显示时间

    LabTime.Caption = Time$

End Sub
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -