VB串口怎么一次接收3个字节数据
单片机不定时的发送3个字节的数据,二进制方式发送,用VB怎么一次性接收3个数据,放在Revdat(0)~Revdat(2)里呢?怎么分别对三个数处理成10进制数,再显示在...
单片机不定时的发送3个字节的数据,二进制方式发送,用VB怎么一次性接收3个数据,放在Revdat(0)~Revdat(2)里呢?怎么分别对三个数处理成10进制数,再显示在text1.text里呢?
Private Sub Form_Load() '初使化
MSComm.CommPort = 1 '设置并返回通讯端口号1
MSComm.Settings = "1200,N,8,1" '波特率、奇偶校验、数据位、停止位
MSComm.RThreshold = 1 '接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件
MSComm.InBufferSize = 1024 '设置接收缓冲区的字节长度
MSComm.InBufferCount = 0 '清除发送缓冲区数据
MSComm.OutBufferCount = 0 '清除接收缓冲区数据
MSComm.InputLen = 3 '设置并返回 Input 属性从接收缓冲区读取的字符数
MSComm.InputMode = 1 '以二进制方式接收comInputModeBinary
MSComm.PortOpen = True '打开串口End Sub
End Sub
我还是不会做,我想定义一个数组A()把收到的第一二三个数据放在数组A(0)A(1)A(2)里面,把收到的数据用ASC()函数处理后再存,这样怎么样做?
楼下二位兄弟提到的方案我都没有调试出来,我还是初学者,搞不不定太清楚怎么样做.老提示错误 展开
Private Sub Form_Load() '初使化
MSComm.CommPort = 1 '设置并返回通讯端口号1
MSComm.Settings = "1200,N,8,1" '波特率、奇偶校验、数据位、停止位
MSComm.RThreshold = 1 '接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件
MSComm.InBufferSize = 1024 '设置接收缓冲区的字节长度
MSComm.InBufferCount = 0 '清除发送缓冲区数据
MSComm.OutBufferCount = 0 '清除接收缓冲区数据
MSComm.InputLen = 3 '设置并返回 Input 属性从接收缓冲区读取的字符数
MSComm.InputMode = 1 '以二进制方式接收comInputModeBinary
MSComm.PortOpen = True '打开串口End Sub
End Sub
我还是不会做,我想定义一个数组A()把收到的第一二三个数据放在数组A(0)A(1)A(2)里面,把收到的数据用ASC()函数处理后再存,这样怎么样做?
楼下二位兄弟提到的方案我都没有调试出来,我还是初学者,搞不不定太清楚怎么样做.老提示错误 展开
2个回答
展开全部
Option Explicit
Dim inData As String
Dim a() As Byte
Private Sub Form_Load()
MSComm1.Settings = "1200,n,8,1"
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 512
MSComm1.InBufferCount = 0 '清除发送缓冲区数据
MSComm1.OutBufferCount = 0 '清除接收缓冲区数据
MSComm1.RThreshold = 3
MSComm1.InputMode = comInputModeBinary '二进制接收
MSComm1.PortOpen = True
End Sub
Private Sub MsComm1_OnComm()
Dim intInputLen As Integer
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
intInputLen = MSComm1.InBufferCount
ReDim a(intInputLen)
a = MSComm1.Input
For i = 0 To UBound(a)
If Len(Hex(a(i))) = 1 Then
inData = inData & "0" & Hex(a(i))
Else
inData = inData & Hex(a(i))
End If
Next
If Len(inData) = 6 Then
Text1 = a(0) & " " & a(1) & " " & a(2) '10进制
Text2 = inData '16进制
inData = ""
End If
End Select
End Sub
Dim inData As String
Dim a() As Byte
Private Sub Form_Load()
MSComm1.Settings = "1200,n,8,1"
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 512
MSComm1.InBufferCount = 0 '清除发送缓冲区数据
MSComm1.OutBufferCount = 0 '清除接收缓冲区数据
MSComm1.RThreshold = 3
MSComm1.InputMode = comInputModeBinary '二进制接收
MSComm1.PortOpen = True
End Sub
Private Sub MsComm1_OnComm()
Dim intInputLen As Integer
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
intInputLen = MSComm1.InBufferCount
ReDim a(intInputLen)
a = MSComm1.Input
For i = 0 To UBound(a)
If Len(Hex(a(i))) = 1 Then
inData = inData & "0" & Hex(a(i))
Else
inData = inData & Hex(a(i))
End If
Next
If Len(inData) = 6 Then
Text1 = a(0) & " " & a(1) & " " & a(2) '10进制
Text2 = inData '16进制
inData = ""
End If
End Select
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询