高分跪求vb大神解决一个串口通信问题(单步调试时接收的数据全部没了,不知道为什么)

刚开始,接收正常,接收17个字节,接收阈值为17

运行下一步时,数据全部消失,byte 从0 to -1,好奇怪啊?

用串口调试工具运行没问题!!!
完整的代码:
Private Sub cmdClear_Click()
lb1Receive.Caption = ""
End Sub

Private Sub CmdExit_Click()
Comm1.PortOpen = False
End
End Sub

Private Sub Comm1_OnComm()
Dim databyte() As Byte, x_byte(4 To 7) AsInteger, s
Dim i As Integer, t As Long, x_value AsLong
Select Case Comm1.CommEvent
Case comEvCD
Case comEvCTS
Case comEvDSR
Case comEvRing
Case comEvReceive
s= Comm1.Input
databyte = s
For i = 4 To 7
x_byte(i) = (databyte(i + 1) And &HF0) / 16 * 10 + databyte(i + 1) And &HF
Next i
x_value = x_byte(4) + x_byte(5) * 100 +x_byte(6) * 10000 + x_byte(7) * 1000000
If databyte(1) = 0 Then
lb1Receive.Caption = x_value
ElseIf databyte(1) = 1 Then
lb1Receive.Caption = -x_value
End If
Case comEvSend
End Select
End Sub

Private Sub Form_Click()
Print i
End Sub

Private Sub Form_Load()
Comm1.PortOpen = True
Comm1.Output = "R"
End Sub
最新回答
玩世

2024-10-02 20:32:50

我估计是接收到数据后,你中断了,数据还是接收中……这个速度很快很快,但是你的代码没有处理了,于是缓冲溢出了或者怎么了,等到你执行语句,读到的都不知是什么东西了。
您把中断放在databyte = s 这句上,s应该还能保持第一个数据。