📄 recvandsend.vb
字号:
Module RecvAndSend
Public Sub SendRecv(ByVal MCUno As Byte)
Dim SendData(3) As Byte '写数据帧需要4字节,所以读数据帧后添2字节0
Dim RecvData() As Byte
Dim DelayTime As Integer
Dim start As Long
REM 发给1号MCU的读请求
Form1.frmMain.MSComm1.InBufferCount = 0 '清接收缓冲区
Form1.frmMain.MSComm1.OutBufferCount = 0 '清发送缓冲区
REM MCU号+130,避免与发送字母相重
SendData(0) = 130 + MCUno
SendData(1) = CByte(Asc("R"))
SendData(2) = 0
SendData(3) = 0
Form1.frmMain.MSComm1.Output = SendData
REM 等待接收MCU发来的8字节数据
DelayTime = 3
start = Microsoft.VisualBasic.DateAndTime.Timer '获取系统当前时间
Do
Application.DoEvents()
REM 防止出现接收异常后循环等待,以至于死机,所以在规定时间DelayTime内没收到则报错并退出
If Microsoft.VisualBasic.DateAndTime.Timer - start > DelayTime Then
'MsgBox("接收" & MCUno & "#出现异常!")
Return
' GoTo SendRecv_Exit
End If
Loop Until Form1.frmMain.MSComm1.InBufferCount = 8
RecvData = Form1.frmMain.MSComm1.Input '接收8字节数据
Form1.frmMain.MSComm1.InBufferCount = 0 '清接收缓冲区
HandleData(MCUno, RecvData) '将接收到的数据放入文本框显示
REM 入库
InDB(MCUno, RecvData)
SendRecv_Exit:
End Sub
Public Sub HandleData(ByVal MCUno As Byte, ByVal data() As Byte)
Select Case MCUno
Case 1
Form1.frmMain.Txt11.Text = data(0) * 256 + data(1) & "℃"
Form1.frmMain.Txt12.Text = data(2) * 256 + data(3) & "℃"
Form1.frmMain.Txt13.Text = data(4) * 256 + data(5) & "分"
Form1.frmMain.Txt14.Text = data(6) * 256 + data(7) & "分"
Case 2
Form1.frmMain.Txt21.Text = data(0) * 256 + data(1) & "℃"
Form1.frmMain.Txt22.Text = data(2) * 256 + data(3) & "℃"
Form1.frmMain.Txt23.Text = data(4) * 256 + data(5) & "分"
Form1.frmMain.Txt24.Text = data(6) * 256 + data(7) & "分"
Case 3
Form1.frmMain.Txt31.Text = data(0) * 256 + data(1) & "℃"
Form1.frmMain.Txt32.Text = data(2) * 256 + data(3) & "℃"
Form1.frmMain.Txt33.Text = data(4) * 256 + data(5) & "分"
Form1.frmMain.Txt34.Text = data(6) * 256 + data(7) & "分"
Case 4
Form1.frmMain.Txt41.Text = data(0) * 256 + data(1) & "℃"
Form1.frmMain.Txt42.Text = data(2) * 256 + data(3) & "℃"
Form1.frmMain.Txt43.Text = data(4) * 256 + data(5) & "分"
Form1.frmMain.Txt44.Text = data(6) * 256 + data(7) & "分"
End Select
End Sub
Public Sub SendAdjust(ByVal MCUno As Byte, ByVal who As Byte, ByVal data As Byte)
Dim senddata(3) As Byte
Form1.frmMain.MSComm1.OutBufferCount = 0 '清发送缓冲区
senddata(0) = 130 + MCUno
senddata(1) = CByte(Asc("T")) '写标志
senddata(2) = 0
senddata(3) = data
Form1.frmMain.MSComm1.Output = senddata
End Sub
Public Sub SendMCUno(ByVal MCUno As Byte, ByVal Newno As Byte)
Dim senddata(3) As Byte
Form1.frmMain.MSComm1.OutBufferCount = 0 '清发送缓冲区
senddata(0) = 130 + MCUno
senddata(1) = CByte(Asc("M")) '写标志
senddata(2) = 0
senddata(3) = 130 + Newno
Form1.frmMain.MSComm1.Output = senddata
MsgBox("发送" & senddata(0) & "和" & senddata(3))
End Sub
End Module
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -