MSC 控件 一半概率丢失 第一位数据(HEX),返回的20个HEX数据我有的是给单片机发送一组数据,单片机立即返回
MSC 控件 一半概率丢失 第一位数据(HEX),返回的20个HEX数据
我有的是给单片机发送一组数据,单片机立即返回一组数据确认状态
MSComm1.CommPort = i '设置通信端口为COM1
MSComm1.Settings = "9600,n,8,1" '设置串口参数无检验位
MSComm1.InputMode = 1 '数字
MSComm1.NullDiscard = False 'NULL字符从端口传送到接受缓冲区
MSComm1.DTREnable = False 'DTR线无效
MSComm1.EOFEnable = False '不寻找EOF符
MSComm1.RTSEnable = False 'RTS线无效
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
MSComm1.RThreshold = 1 '产生MSC事件
MSComm1.SThreshold = 1 ' 产生MSC事件
MSComm1.InBufferSize = 256 '接收缓冲区 默认为1024个字节
MSComm1.OutBufferSize = 256
MSComm1.PortOpen = True
End Sub
’发送数据
Private Sub Command2_Click()
On Error Resume Next
Dim W(12) As Byte
Dim j As Integer
W(0) = &HEB
W(1) = &H90
W(2) = &HEB
W(3) = &H90
W(4) = Hex(Val(ID.Text))
W(5) = 0
W(6) = 0
W(7) = &H2
W(8) = &H55
W(9) = &H57
W(10) = &H55
W(11) = &HAA
MSComm1.Output = W
End Sub
Private Sub MSComm1_OnComm()‘接收数据
Dim Inbyte() As Byte
Select Case MSComm1.CommEvent
Case comEvReceive
Inbyte = MSComm1.Input
For i = 0 To UBound(Inbyte) Step 1
re.Text = re.Text & Hex(Inbyte(i)) & Chr("32")
Next i
Case comEvSend
End Select
End Sub
[解决办法]参阅这个
用它来调试一下你的串口通信,如果OK,那么依据它来改写。
[解决办法]1)关注一下波特率是否正确。
2)一字节一触发事件根本用不着循环
3)网上多看看好的串口通讯接收的例子