跳至主要內容

电子秤串口数据

chanchaw大约 1 分钟vb6硬件串口

案例

'初始化串口设备
Private Sub InitComm()
    ' 设置MSComm控件的属性
    MSComm1.CommPort = 3 ' 串口号,根据实际情况设置

    Dim settingString As String
    dim baudRate as Integer
    baudRate = 9600

    '使用波特率构建串口设备设置参数
    settingString = baudRate & ",n,8,1"

    MSComm1.Settings = settingString ' 波特率, 校验位, 数据位, 停止位
    MSComm1.InputMode = comInputModeText ' 文本模式

    '一般耀华白色秤传递来的数据是:wn00004.23kg
    '即一个完整数据的长度是12,那么下面的属性就设置该长度
    '表示当串口设备接收缓冲区中的数据长度是12个字符后就从其中读取出来
    MSComm1.RThreshold = 12 ' 设置触发事件的字符数

    ' 打开串口
    MSComm1.PortOpen = True

    ' 启用MSComm控件的OnComm事件
    MSComm1.RTSEnable = True
    MSComm1.DTREnable = True
    MSComm1.Handshaking = comRTS

    ' 设置RTS和DTR控制
    'MSComm1.RTS = True
    'MSComm1.DTR = True
End Sub

'在响应事件中获取数据
Private Sub MSComm1_OnComm()
    Dim receivedData As String

    ' 判断事件类型
    Select Case MSComm1.CommEvent
        Case comEvReceive ' 接收到数据事件
            ' 读取接收到的数据
            receivedData = MSComm1.Input

            Dim kilo As Double
            kilo = ParseKilo(receivedData)
            'MsgBox "转换后的数字是:" & kilo
            Text1.Text = kilo
    End Select
End Sub

'将接收到的数据清除非数字字符后返回
Private Function ParseKilo(ByVal receivedData As String) As Double
    Dim kiloString As String
    kiloString = RemoveNonNumericCharacters(receivedData)
    ParseKilo = Val(kiloString)
End Function

'清除字符串中非数字的字符
Function RemoveNonNumericCharacters(inputString As String) As String
    Dim resultString As String
    Dim i As Integer
    Dim currentChar As String

    ' 初始化结果字符串
    resultString = ""

    ' 遍历输入字符串的每个字符
    For i = 1 To Len(inputString)
        currentChar = Mid(inputString, i, 1)

        ' 检查字符是否为数字
        If IsNumeric(currentChar) Then
            ' 如果是数字,则添加到结果字符串
            resultString = resultString & currentChar
        End If
    Next i

    ' 返回结果字符串
    RemoveNonNumericCharacters = resultString
End Function