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

📄 recvandsend.vb

📁 为日本瑞萨苏州分公司做的一个温控系统
💻 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 + -