单片机串口循环接收一个四字节的数据帧,啥时候ES=0;啥时候再ES=1.求指点

单片机串口循环接收一个四字节的数据帧,啥时候ES=0;啥时候再ES=1.求指点,第1张

不需要开关中断。直接用中断接收就可以了。

判断是否四个字节接收完,有两种方式:

根据标志字。如果四个字节中有数据包的标志,可以根据这个标志判断是否接收完。

使用延时判断。根据循环的数据包间隔时间判断是否接收完。

如果这两个条件都没有,就没办法区分一包数据是否接收完。

什么让我感觉做四字节的好复杂啊 还好我那时(很久以前的事了~~)是做八字节的

希望对你有帮助~~~

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10003909.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存