逐步指导用VBA做串口通信
请高手指导做一个VBA串口通信:手头上有一个称重仪,需要把仪器的输出数据记录并保存在EXCEL文档内,并将数据点连起来生成实时重量-时间图。
称重仪通信协议是:A/D转换速度: 40次/秒,串口的属性-2400,n,8,1,波特率可调。通过串口通讯助手得出输出格式为16进制“3D 30 2E 39 30 30 30 20”翻译过来为“= 0 . 9 0 0 0 空格”,所以有效数值为第2位至第7位。
硬件已经接好。
请高手一步一步教我怎样用VBA做这个程序,用实例了解VBA的应用,谢谢!
[解决办法]
这个是用VBA写的,用MSComm控件实现。
Private Sub btn_Close_Click()
MSComm1.PortOpen = False '打开串口
btn_Start.Enabled = True '连接按钮响应
btn_Close.Enabled = False '断开按钮变灰
End Sub
Private Sub btn_exit_Click()
If MSComm1.PortOpen = True Then '如果串口被打开
MSComm1.PortOpen = False '关闭按钮
End If
Unload UserForm1 '关闭窗体
End Sub
Private Sub btn_Start_Click()
iniMSComm '对串口控件设置
MSComm1.PortOpen = True
btn_Close.Enabled = True
btn_Start.Enabled = False
End Sub
Private Sub iniMSComm() '对串口控件设置
MSComm1.CommPort = 1 '占用的串口号,1表示COM1
MSComm1.Settings = "115200,n,8,1" '这个自己根据自己的情况设置
MSComm1.RThreshold = 1
MSComm1.InputLen = 0
'MSComm1.PortOpen = True'这句话放到连接按钮事件中去
MSComm1.InputMode = comInputModeText
MSComm1.RTSEnable = True
MSComm1.InBufferCount = 0
End Sub
Private Sub MSComm1_OnComm() '事件处理
Dim t1 As Long, com_string As String
Static i As Integer
t1 = Timer
Select Case MSComm1.CommEvent
Case comEvReceive '如果接收到数据则执行下列语句
MSComm1.RThreshold = 0
Do
DoEvents
Loop While Timer - t1 < 0.1
com_string = MSComm1.Input
MSComm1.RThreshold = 1
i = i + 1: If i > 255 Then i = 1
Application.Cells(3, i).Value = com_string '写到Excel中去
txtRec.Text = txtRec.Text + com_string '写到文本框中去
End Select
End Sub