vb mscomm1串口通信接收发送十六进制数据

    技术2022-05-20  41

    Private Sub Command1_Click()Dim OutBuffer() As ByteDim tem As VariantDim e As IntegerDim q As IntegerDim LenOfText As IntegerLenOfText = Len(txtSum.Text) / 2 - 1ReDim OutBuffer(LenOfText)

    If MSComm1.PortOpen = False ThenMSComm1.PortOpen = TrueEnd Ifq = 0For e = 1 To Len(txtSum.Text) Step 2tem = Mid(txtSum.Text, e, 2)OutBuffer(q) = Val("&H" & tem)Debug.Print Val("&H" & tem)q = q + 1NextMSComm1.Output = OutBufferEnd Sub

    Private Sub Form_Load()

    MSComm1.CommPort = 1MSComm1.Settings = "19200,N,8,1"MSComm1.InputMode = comInputModeBinaryMSComm1.InputLen = 0MSComm1.InBufferSize = 1024MSComm1.OutBufferSize = 512MSComm1.PortOpen = TrueMSComm1.SThreshold = 0MSComm1.RThreshold = 1MSComm1.InBufferCount = 0MSComm1.OutBufferCount = 0End SubPrivate Sub MSComm1_OnComm()On Error Resume NextDim BytesReceived() As ByteDim buffer As StringDim HData As StringDim i As IntegerSelect Case MSComm1.CommEventCase comEvReceive '接收十六进制数据。并以十六进制显示MSComm1.InputLen = 0buffer = MSComm1.Input '接收数据至字符串中BytesReceived() = buffer '将数据转入Byte数组中For i = 0 To UBound(BytesReceived) '显示结果以十六进制显示If Len(Hex(BytesReceived(i))) = 1 ThenHData = HData & "0" & Hex(BytesReceived(i))ElseHData = HData & Hex(BytesReceived(i))End IfText1.Text = HData'最后将结果后入Text1中MSComm1.OutBufferCount = 0 '清除发送缓冲区MSComm1.InBufferCount = 0 '清除接收缓冲区MSComm1.PortOpen = FalseNextEnd SelectEnd Sub


    最新回复(0)