计算机串口bcd,串口技术BCD码我有个温度巡回监测仪需要与电脑进行通讯,要求电脑 爱问知识人...

编码本身都是为了在计算机中运算使用。实质上,在计算机中只有以高低电平来表示的二进制。至于,BCD码是一种8421编码,它将一个字节分两部分,高4位代表一个数字,低4位代表一个数字。也就是说,计算机怎么识别一个字节到底是二进制码还是BCD码,这是由程序代码来运算的。

我的理解可由16进制数简化理解:

每2个BCD码构成一字节,接收到每字节二进制数据需处理成16进制的字符形式。仅是由00-99的范围。而非00-FF范围。

同样发送的10进制数以每2个BCD码组成1个16进制数形成二进制的一个字节发送来达到目的。

基于如上设想所做的收发代码如下:

Option Explicit

Private Sub cmdSend_Click()

Call Timer1_Timer

End Sub

Private Sub Form_Load()

Me。

MSComm1。CommPort = 1

Me。MSComm1。PortOpen = True

Me。MSComm1。RThreshold = 1

txtSend = "1234"

txtReceive = ""

Timer1。

Interval = 0

End Sub

Private Sub MSComm1_OnComm()

On Error Resume Next

Dim BytesReceived() As Byte

Dim buffer As String

Dim HData As String

Dim i As Integer

Select Case MSComm1。

CommEvent

Case comEvReceive '接收十六进制数据。并以十六进制显示

MSComm1。InputLen = 0

MSComm1。

InputMode = comInputModeBinary '设置当前以二进制数接收数据

buffer = MSComm1。Input '接收数据至字符串中

BytesReceived() = buffer '将数据转入BYTE中

For i = 0 To UBound(BytesReceived) '显示结果以十六进制显示

If Len(Hex(BytesReceived(i))) = 1 Then

HData = HData & "0" & Hex(BytesReceived(i))

Else

HData = HData & Hex(BytesReceived(i))

End If

txtReceive。

Text = HData '最后将结果后入txtreceive中

MSComm1。OutBufferCount = 0 '清除发送缓冲区

MSComm1。

InBufferCount = 0 '清除接收缓冲区

Next

End Select

End Sub

Private Sub Timer1_Timer()

On Error Resume Next

Dim bytData(1) As Byte

Dim i As Integer

For i = 1 To 4 Step 2

bytData((i - 1) / 2) = Val("&H" & Mid(txtSend, i, 2))

Next

MSComm1。

Settings = "9600,n,8,1"

Call SendData(bytData) '发送命令

End Sub

Public Function SendData(ByRef bytData() As Byte) As Long

On Error Resume Next

MSComm1。

InBufferCount = 0 '清空接收缓冲区

MSComm1。Output = bytData '发送数据

Do

DoEvents

Loop Until MSComm1。OutBufferCount = 0 '等待,直到数据发送完毕

MSComm1。

OutBufferCount = 0 '清空发送缓冲区

End Function

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值