上位机:PC机
下位机:单片机
下位机有150个数据,要在上下位机开机通信正常后分三批上传给上位机,每个数据都要显示在PC界面上的规定位置
每次上传前上位机都要给下位机发送一个上传命令
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
strbuff = MSComm1.Input
inbte = strbuff
For i = 0 To UBound(inbte())
indata = indata & Right("0" & Hex(inbte(i)), 2)
Next i
Text4.Text = indata
If Mid(indata, 1, 4) = "5A79" Then
indata = ""
Timer1.Enabled = False
Timer2.Enabled = True
ElseIf Mid(indata, 1, 8) = "3582017F" Then
indata = ""
mnulianji.Enabled = False
mnutuoji.Enabled = True
MsgBox "联机成功!", , "提示"
Timer2.Enabled = False
Timer1.Enabled = True '定时器1打开发送AA,收到5A79后定时器2打开
sj = 1 '上传第一批数据
n = 0: n1 = 0
ElseIf sj = 1 Then
ss = Mid(indata, 5, 2) '1
Text2(0).Text = Val("&h" & ss) / 10 - 12 & "dB"
Slider2(0).Value = 240 - Val("&H" & ss)
ss = Mid(indata, 7, 2) '2
Text3(0).Text = Val("&h" & ss) / 10
50个数据依次显示在要显示的位置
sj=2 '重新赋值为2,准备上传第二批数据
timer2.enabled=false
timer1.enabled=true
n=0 :n1=0
现在问题是接收到的50个数据,上位机只读取了8个,但text4中也显示下位机发过来的50个数据,找了很久不知啥原因
还有就是当我把sj=2这句注释掉以后就读取了全部数据,但这样的话就没办法发送第二批数据的命令了,
望高手看一下问题在那里,如有看不明白的QQ联系:479702007,24小时在线等,急急!
下位机:单片机
下位机有150个数据,要在上下位机开机通信正常后分三批上传给上位机,每个数据都要显示在PC界面上的规定位置
每次上传前上位机都要给下位机发送一个上传命令
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
strbuff = MSComm1.Input
inbte = strbuff
For i = 0 To UBound(inbte())
indata = indata & Right("0" & Hex(inbte(i)), 2)
Next i
Text4.Text = indata
If Mid(indata, 1, 4) = "5A79" Then
indata = ""
Timer1.Enabled = False
Timer2.Enabled = True
ElseIf Mid(indata, 1, 8) = "3582017F" Then
indata = ""
mnulianji.Enabled = False
mnutuoji.Enabled = True
MsgBox "联机成功!", , "提示"
Timer2.Enabled = False
Timer1.Enabled = True '定时器1打开发送AA,收到5A79后定时器2打开
sj = 1 '上传第一批数据
n = 0: n1 = 0
ElseIf sj = 1 Then
ss = Mid(indata, 5, 2) '1
Text2(0).Text = Val("&h" & ss) / 10 - 12 & "dB"
Slider2(0).Value = 240 - Val("&H" & ss)
ss = Mid(indata, 7, 2) '2
Text3(0).Text = Val("&h" & ss) / 10
50个数据依次显示在要显示的位置
sj=2 '重新赋值为2,准备上传第二批数据
timer2.enabled=false
timer1.enabled=true
n=0 :n1=0
现在问题是接收到的50个数据,上位机只读取了8个,但text4中也显示下位机发过来的50个数据,找了很久不知啥原因
还有就是当我把sj=2这句注释掉以后就读取了全部数据,但这样的话就没办法发送第二批数据的命令了,
望高手看一下问题在那里,如有看不明白的QQ联系:479702007,24小时在线等,急急!
With MSComm1
.CommPort = 1
.Settings = "38400,n,8,1"
.OutBufferCount = 0
.InBufferCount = 0
.InputMode = 1
.RThreshold = 1
.SThreshold = 0
.OutBufferSize = 512
.InBufferSize = 1024
.InputLen = 0
If Not .PortOpen Then '判断通信口是否打开
On Error Resume Next
.PortOpen = True '打开通信口
If Err Then '错误处理
MsgBox "COM1被占用或此COM1不存在!请选择其他端口!", 16, "错误提示"
Exit Sub
End If
End If
End WithEnd Sub
Select Case MSComm1.CommEvent
Case 2
MSComm1.RThreshold = 0
strbuff = MSComm1.Input
inbte = strbuff
For i = 0 To UBound(inbte())
indata = indata & Right("0" & Hex(inbte(i)), 2)
Next i
Text4.Text = indata
If Mid(indata, 1, 4) = "5A79" Then
indata = ""
Timer1.Enabled = False
Timer2.Enabled = True
ElseIf Mid(indata, 1, 8) = "3582017F" Then
indata = ""
mnulianji.Enabled = False
mnutuoji.Enabled = True
MsgBox "联机成功!", , "提示"
Timer2.Enabled = False
Timer1.Enabled = True '定时器1打开发送AA,收到5A79后定时器2打开
sj = 1 '上传第一批数据
n = 0: n1 = 0
ElseIf sj = 1 Then
ss = Mid(indata, 5, 2) '1
Text2(0).Text = Val("&h" & ss) / 10 - 12 & "dB"
Slider2(0).Value = 240 - Val("&H" & ss)
ss = Mid(indata, 7, 2) '2
Text3(0).Text = Val("&h" & ss) / 10
50个数据依次显示在要显示的位置
sj=2 '重新赋值为2,准备上传第二批数据
timer2.enabled=false
timer1.enabled=true
n=0 :n1=0
MSComm1.RThreshold = 1