不需要开关中断。直接用中断接收就可以了。
判断是否四个字节接收完,有两种方式:
根据标志字。如果四个字节中有数据包的标志,可以根据这个标志判断是否接收完。
使用延时判断。根据循环的数据包间隔时间判断是否接收完。
如果这两个条件都没有,就没办法区分一包数据是否接收完。
什么让我感觉做四字节的好复杂啊 还好我那时(很久以前的事了~~)是做八字节的希望对你有帮助~~~
Private Sub MSComm1_OnComm()
Dim ReceiveData As Single
Dim temp As Variant
Dim ReceiveDataBuffer_h, ReceiveDataBuffer_l As Single
If MSComm1.CommEvent = comEvReceive Then
i = i + 1
temp = AscB(MSComm1.Input)
Call ufvn_cls'清前一屏的坐标点
Call ufvn_reset '重绘坐标线
If i = 1 Then
If temp = 128 Then '下位机发送的标识位 确保发送的数据是完整的正确的,以便进入i=2
i = 1
Else
i = 0
End If
End If
If i = 2 Then'接收数据高位
ReceiveDataBuffer_h = temp
Text1.Text = ReceiveDataBuffer_h
MSComm1.InBufferCount = 0
End If
If i = 3 Then '接收数据低位
ReceiveDataBuffer_l = temp
MSComm1.InBufferCount = 0
Text2.Text = Text1.Text + ReceiveDataBuffer_l / 100
i = 0
ufvn(130) = Val(Text2.Text) * 24 '把接收的数据转换成坐标值
For j = 1 To 129 '重绘下一屏的数据 以连接成完整的波形图
ufvn(j) = ufvn(j + 1) '把数据向前传
Next j
Call ufvn_main '重绘此刻的波形
End If
End If
End Sub
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)