📄 pcvb.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 + -