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

📄 pcvb.txt

📁 PC机与51单片机之间的串口通讯,VB编的,分PC和单片机两部分
💻 TXT
字号:
Private Sub Form_Load()

    MSComm1.RThreshold = 1 '自动接收数据

    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% '命令变量
    
    On Error Resume Next '简单的错误处理

    Label1.Caption = MSComm1.Settings '显示串行口的设置。
    
    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% = Val("&H" + Echo.Text)
                
                'echoch% = Asc(Echo.Text)
                
            Else

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

            End If

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

            LabelSend.Caption = Chr(echoch%) & " ASCII " & Hex(echoch%) '显示刚发出的命令
        
        End If
        
        i = 0
        
        Do Until i = 50000 '延时程序,等待单片机发送反馈指令
        
        i = i + 1
        
        Loop
        
        If MSComm1.InBufferCount <= 0 Then

            MsgBox "连接失败,请检查连接是否正确!"
    
            Command1.Caption = "通信" '命令,关闭串行口,使退出按钮有效。

            MSComm1.PortOpen = False

            CmdExit.Enabled = True
        
            Echo.Enabled = True
    
        End If

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

    Else '在通讯过程中,按下停止按钮则停止通信,发出停止测试命令,关闭串行口,使退出按钮有效。

        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 MSComm1_OnComm() '自动数据接收、监视总线通信信息

    Select Case MSComm1.CommEvent
          
        Case comEvReceive
        
        ch$ = MSComm1.Input
        
        chh = Asc(ch$)

        LabelReceive.Caption = ch$ & " ASCII " & Hex(chh)

        Select Case ch$

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

        End Select

        Case comFrame 'Framing Error '通讯错误处理

            MsgBox "Framing Error!", 16

        Case comEventOverrun '数据丢失

            MsgBox "数据丢失!", 6
  
    End Select
    
End Sub

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

    LabTime.Caption = Time$

End Sub

⌨️ 快捷键说明

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