Foxtable(狐表)用户栏目专家坐堂 → 串口代码


  共有7084人关注过本帖平板打印复制链接

主题:串口代码

帅哥哟,离线,有人找我吗?
zhchn888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:58 积分:543 威望:0 精华:0 注册:2013/2/4 14:26:00
串口代码  发帖心情 Post By:2013/3/5 14:58:00 [只看该作者]

 下面是一段串口的读数据代码。狐表中,数据类型没有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


 回到顶部
总数 12 1 2 下一页