下面是一段串口的读数据代码。狐表中,数据类型没有variant类型,是否用object类型?如何将读到的数据写入数组?下面这段vb代码如何改成狐表的代码?谢谢 Private Sub MSComm1_OnComm() '串口的消息响应函数 Select Case MSComm1.CommEvent '串口事件 Case comEvReceive '接收到数据 Dim Buffer As Variant '存储数据的缓冲区 Dim StringBuf(8) As String '数据数组 Buffer = MSComm1.Input '清理接收缓冲区,此时,接收的字节数已经为0 Dim I As Integer Dim CardNumber As Long '卡号 Dim CardNumber1 As Long Dim CardNumber2 As Long Dim CardNumber3 As Long Dim CardNumber4 As Long CardNumber3 = CDec(Buffer(4)) * 2 ^ 16 + (Buffer(5) * 2 ^ 8) + Buffer(6) CardNumber2 = (Buffer(5) * 2 ^ 8) + Buffer(6) CardNumber1 = CDec(Buffer(6)) For I = 0 To 7 StringBuf(I) = DecToHex(CDec(Buffer(I))) '转换成十六进制 Next
If CDec(Buffer(3)) > 127 Then 'Buffer(3) = Buffer(3) And &HF Buffer(3) = Buffer(3) - &H70 CardNumber4 = CDec(Buffer(3)) * 2 ^ 24 + CDec(Buffer(4)) * 2 ^ 16 + (Buffer(5) * 2 ^ 8) + Buffer(6) Text1.Text = "读卡日期:" & Date & Chr(13) & Chr(10) & _ "读卡时间:" & Time() & Chr(13) & Chr(10) & _ "十六进制数:" & StringBuf(2) & StringBuf(3) & StringBuf(4) & StringBuf(5) & StringBuf(6) & Chr(13) & Chr(10) & _ "4字节十进制卡号:" & "-" & Str(Trim(CardNumber4)) & Chr(13) & Chr(10) & _ "3字节十进制卡号:" & Str(CardNumber3) & Chr(13) & Chr(10) & _ "2字节十进制卡号:" & Str(CardNumber2) & Chr(13) & Chr(10) & _ "1字节十进制卡号:" & Str(CardNumber1) & Chr(13) & Chr(10) Else CardNumber4 = CDec(Buffer(3)) * 2 ^ 24 + CDec(Buffer(4)) * 2 ^ 16 + (Buffer(5) * 2 ^ 8) + Buffer(6) 'CardNumber4 = CDec(Buffer(3)) * 2 ^ 24 + CDec(Buffer(4)) * 2 ^ 16 + (Buffer(5) * 2 ^ 8) + Buffer(6) Text1.Text = "读卡日期:" & Date & Chr(13) & Chr(10) & _ "读卡时间:" & Time() & Chr(13) & Chr(10) & _ "十六进制数:" & StringBuf(2) & StringBuf(3) & StringBuf(4) & StringBuf(5) & StringBuf(6) & Chr(13) & Chr(10) & _ "4字节十进制卡号:" & Str(CardNumber4) & Chr(13) & Chr(10) & _ "3字节十进制卡号:" & Str(CardNumber3) & Chr(13) & Chr(10) & _ "2字节十进制卡号:" & Str(CardNumber2) & Chr(13) & Chr(10) & _ "1字节十进制卡号:" & Str(CardNumber1) & Chr(13) & Chr(10) End If End Select
End Sub Function DecToHex(DecNumber As Integer) As String '转换成十六进制 If DecNumber <= 15 Then DecToHex = " 0" & Hex(DecNumber) Else: DecToHex = " " & Hex(DecNumber) End If End Function
|