串口通信 单片机&VB 死死卡住了~~~大家帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/23 03:35:25
问题简化再简化:
实现功能:单片机发送数据给上位机VB编写的小程序:
比如发送SBUF=0x01;上位机通过text显示1;
vb程序:
Private Sub Form_Load()

MSComm1.CommPort = 4
MSComm1.PortOpen = True
MSComm1.Settings = "2400,n,8,1"
MSComm1.InputMode = comInputModeText
MSComm1.RThreshold = 1 '收到一个字符就出发mscomm
End Sub

Private Sub MSComm1_OnComm()
'MsgBox "收到数据"

Text1.Text = Asc(MSComm1.Input)
End Sub

现在的问题是如果不用msgbox,说一声“收到数据”,那么当发给vb数据后,就会提示:
实时错误5,无用的过程调用或参数;
之后停在Text1.Text = Asc(MSComm1.Input)等待发落。
简直把人气疯了~~~
哪位vb高手,可以牛刀小试,妙手回春,鄙人不胜感激!!!
Private Sub Form_Load()

MSComm1.CommPort = 4
MSComm1.PortOpen = True
MSComm1.Settings = "2400,n,8,1"
MSComm1.InputMode = comInputModeBinary

MSComm1.RThreshold = 1 '收到一个字符就出发mscomm
End Sub

Private Sub MSComm1_OnComm()

Text1.Text = MSComm1.Input

End Sub
虽然触发了mscomm1.oncomm<

Option Explicit
Dim strData As String
Dim bytInput() As Byte
Private Sub Form_Load()
MSComm1.Settings = "2400,n,8,1"
MSComm1.CommPort = 4
MSComm1.RThreshold = 1
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
End Sub

Private Sub MsComm1_OnComm()
Dim intInputLen As Integer
Select Case Me.MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
Me.MSComm1.InputMode = comInputModeBinary '二进制接收
intInputLen = Me.MSComm1.InBufferCount
ReDim bytInput(intInputLen)
bytInput = Me.MSComm1.Input
jieshou
End Select
End Sub

Public Function jieshou() '接收数据处理为16进制
Dim i As Integer
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput(i))
Else
strData = strData & Hex(bytInput(i))
End If
Next
T