mscomm控件串口通信(在线等)
大家好,有个问题想请教大家,我用mscomm控件,传输方式选择2进制,现在不知道下位机何时发送消息进来,想要实现:只要串口读进一个字节就自动往动态数组里面写值。如何实现?
我之前是这样写的,但是不接收数据时,也响应oncomm事件,到底哪错了呢?如何实现啊?急Help
Dim InByte(0 To 20) As Byte
Dim rxn As Integer '接收多少个字节
Dim rxStart As Integer '开始接收标志位
Dim rxEnd As Integer '停止接收标志位
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,2"
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 1024
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1 '每接收到一个字符都会使 MSComm 控件产生 OnComm 事件
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub
Private Sub MSComm1_OnComm() ’我是这样理解的,只要缓存区接收一个字节,就会自动响应下面的事件???
Select Case MSComm1.CommEvent
Case comEvReceive
'电脑开始接收DSP的“就绪”应答
MSComm1.InputLen = 1 ’1个字符为8位就是一个字节??
InByte(rxn) = MSComm1.Input '这里定义inbyte为字节类型,老是显示类型不匹配,读进来的是二进制??
If InByte(rxn) = &HF0 Then '判断起始接收的的字节内容(起始位判断)
rxn = 1
InByte(0) = &HF0
rxStart = 1 '开始的标志位
ElseIf InByte(rxn) = &HFF Then '判断是否到结束位(结束位判断)
rxStart = 0
rxEnd = 1
rxn = 0
ElseIf rxStart = 1 Then
rxn = rxn + 1
End If
End Select
End Sub