小弟我刚刚学vb,在做测试界面的时候遇到如下问题。
点击下面两个按钮 分别向串口发送数据 这些数据送到嵌入式模块里把数据读取 然后返回到串口
但是我的这两个按钮 按了4后不会立即显示 必须再按一次才会 按钮15也一样
而且由于15返回的数据比较长 所以连着多按几次的话,返回的数据就不完整了
请问高手如何解决
Private Sub Command4_Click()
Dim buf(5) As Byte
Dim buf1() As Byte
Dim i As Long
Dim sTem As String
'2409F600FF24
buf(0) = &H24
buf(1) = &H9
buf(2) = &HF6
buf(3) = &H0
buf(4) = &HFF
buf(5) = &H24
If MSComm1.PortOpen = False Then
MsgBox "串口还未打开,请先打开串口!", vbOKOnly, "错误"
Else
MSComm1.InputMode = comInputModeBinary
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0
buf1() = MSComm1.Input
MSComm1.Output = buf()
For i = 0 To UBound(buf1())
sTem = sTem & Chr(buf1(i))
Next i
Text2.Text = sTem
End If
Select Case sTem
Case "GPRS ON" & Chr(13) & Chr(10)
Shape2.BackColor = &HFF&
Case "GPRS OFF" & Chr(13) & Chr(10)
Shape2.BackColor = &H0&
End Select
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0
end sub Private Sub Command15_Click()
'2408F700FF24
Dim buff(5) As Byte
Dim Buff1() As Byte
Dim i As Long
Dim sTem As String
buff(0) = &H24
buff(1) = &H8
buff(2) = &HF7
buff(3) = &H0
buff(4) = &HFF
buff(5) = &H24
If MSComm1.PortOpen = False Then
MsgBox "串口还未打开,请先打开串口!", vbOKOnly, "错误"
Else
MSComm1.InputMode = comInputModeBinary
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0
MSComm1.Output = buff()
Buff1() = MSComm1.Input
'While MSComm1.OutBufferCount > 0: DoEvents: Delay 1: Wend 'Make sure buffer is empty
' MSComm1.Output = buff()
For i = 0 To UBound(Buff1())
sTem = sTem & Chr(Buff1(i))
Next i
Text2.Text = sTem
End If
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0End Sub
按了4反馈的信息是gprs on(sony的通信模块在线)/gprs off (sony的通讯模块不在线)
按了15正确的反馈信息是
ID: 13851751577
AP: SZGD.J
AP UserID: szpdyx2
AP PassWord: PBzcGPRS
DSC IP: 10.139.109.6
DSC port: 5666
REG time: 60s
Wake mode: Phone
Max data len: 0x01FF bytes
Data time out: 200ms
而 多连接着按N次后 出现的情况是ID: 13851751577
AP: SZGD.J
AP UserID: szpdyx2
AP PassWord: PBzcGPRS
DSC IP: 10.139.109.6
DSC port: 5666
REG time: 60s
Wake mode: Phone
Max data len: 0x01FF bytes
Data time out: 200ms
我也知道要用延时来保证发送和读取数据完整
但是我不知道该如何去做
望高手指点一二 感激不尽
点击下面两个按钮 分别向串口发送数据 这些数据送到嵌入式模块里把数据读取 然后返回到串口
但是我的这两个按钮 按了4后不会立即显示 必须再按一次才会 按钮15也一样
而且由于15返回的数据比较长 所以连着多按几次的话,返回的数据就不完整了
请问高手如何解决
Private Sub Command4_Click()
Dim buf(5) As Byte
Dim buf1() As Byte
Dim i As Long
Dim sTem As String
'2409F600FF24
buf(0) = &H24
buf(1) = &H9
buf(2) = &HF6
buf(3) = &H0
buf(4) = &HFF
buf(5) = &H24
If MSComm1.PortOpen = False Then
MsgBox "串口还未打开,请先打开串口!", vbOKOnly, "错误"
Else
MSComm1.InputMode = comInputModeBinary
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0
buf1() = MSComm1.Input
MSComm1.Output = buf()
For i = 0 To UBound(buf1())
sTem = sTem & Chr(buf1(i))
Next i
Text2.Text = sTem
End If
Select Case sTem
Case "GPRS ON" & Chr(13) & Chr(10)
Shape2.BackColor = &HFF&
Case "GPRS OFF" & Chr(13) & Chr(10)
Shape2.BackColor = &H0&
End Select
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0
end sub Private Sub Command15_Click()
'2408F700FF24
Dim buff(5) As Byte
Dim Buff1() As Byte
Dim i As Long
Dim sTem As String
buff(0) = &H24
buff(1) = &H8
buff(2) = &HF7
buff(3) = &H0
buff(4) = &HFF
buff(5) = &H24
If MSComm1.PortOpen = False Then
MsgBox "串口还未打开,请先打开串口!", vbOKOnly, "错误"
Else
MSComm1.InputMode = comInputModeBinary
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0
MSComm1.Output = buff()
Buff1() = MSComm1.Input
'While MSComm1.OutBufferCount > 0: DoEvents: Delay 1: Wend 'Make sure buffer is empty
' MSComm1.Output = buff()
For i = 0 To UBound(Buff1())
sTem = sTem & Chr(Buff1(i))
Next i
Text2.Text = sTem
End If
'MSComm1.InBufferCount = 0
'MSComm1.OutBufferCount = 0End Sub
按了4反馈的信息是gprs on(sony的通信模块在线)/gprs off (sony的通讯模块不在线)
按了15正确的反馈信息是
ID: 13851751577
AP: SZGD.J
AP UserID: szpdyx2
AP PassWord: PBzcGPRS
DSC IP: 10.139.109.6
DSC port: 5666
REG time: 60s
Wake mode: Phone
Max data len: 0x01FF bytes
Data time out: 200ms
而 多连接着按N次后 出现的情况是ID: 13851751577
AP: SZGD.J
AP UserID: szpdyx2
AP PassWord: PBzcGPRS
DSC IP: 10.139.109.6
DSC port: 5666
REG time: 60s
Wake mode: Phone
Max data len: 0x01FF bytes
Data time out: 200ms
我也知道要用延时来保证发送和读取数据完整
但是我不知道该如何去做
望高手指点一二 感激不尽
MSComm1.Output = buf()
1、下面的模块是主动发数据吗,如果不是,你上面的这句话就会有问题,肯定是要你点几下才会有回复,
2、要么用定时器来读数据要么用串口事件来读