Option ExplicitPrivate Sub Command1_Click() If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
MSComm1.OutBufferCount = 0
MSComm1.Output = "AT" & vbCr
Do Until MSComm1.OutBufferCount = 0
DoEvents
Loop
End SubPrivate Sub Command2_Click() If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Dim strA As String
strA = MSComm1.Input
MsgBox strAEnd SubPrivate Sub Form_Load() MSComm1.CommPort = 1 '采用COM端口
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.NullDiscard = False 'NULL字符从端口传送到接受缓冲区
MSComm1.DTREnable = False 'DTR线无效
MSComm1.EOFEnable = False '不寻找EOF符
MSComm1.RTSEnable = False 'RTS线无效
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
MSComm1.SThreshold = 1 '如果传输缓冲区完全空时产生MSComm事件
MSComm1.RThreshold = 0 '不产生MSComm事件
MSComm1.PortOpen = True '打开端口End Sub
问题在于程序不能读取串口接收缓冲区的数据。
这里使用标准AT指令,应该返回OK。但是一个字符也接收不了
大家帮我看看哪里错了,在超级终端和串口调试工具都是可以正常显示返回的信息啊
这个程序哪里错了????
MSComm1.PortOpen = True
End If
MSComm1.OutBufferCount = 0
MSComm1.Output = "AT" & vbCr
Do Until MSComm1.OutBufferCount = 0
DoEvents
Loop
End SubPrivate Sub Command2_Click() If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Dim strA As String
strA = MSComm1.Input
MsgBox strAEnd SubPrivate Sub Form_Load() MSComm1.CommPort = 1 '采用COM端口
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.NullDiscard = False 'NULL字符从端口传送到接受缓冲区
MSComm1.DTREnable = False 'DTR线无效
MSComm1.EOFEnable = False '不寻找EOF符
MSComm1.RTSEnable = False 'RTS线无效
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
MSComm1.SThreshold = 1 '如果传输缓冲区完全空时产生MSComm事件
MSComm1.RThreshold = 0 '不产生MSComm事件
MSComm1.PortOpen = True '打开端口End Sub
问题在于程序不能读取串口接收缓冲区的数据。
这里使用标准AT指令,应该返回OK。但是一个字符也接收不了
大家帮我看看哪里错了,在超级终端和串口调试工具都是可以正常显示返回的信息啊
这个程序哪里错了????
还不行的话,你就在 MSComm1_OnComm事件中处理吧.Private Sub MSComm1_OnComm()
dim st
if MSComm1.CommEvent=comEvReceive then
st= MSComm1.Input
debug.print st'这里打印出来
end if
end sub
dim st as variant
st=mscomm1.input
debug.print st(0)
你可以试一下,我的串口程序的接受就是这么写的
MSComm1.DTREnable = False 'DTR线无效
MSComm1.EOFEnable = False '不寻找EOF符
MSComm1.RTSEnable = False
不用管的。
RThreshold属性设置或返回在MSComm控件将CommEvent属性设置为comEvReceive并在产生OnComm事件之前所接收的字符数。
我的接收动作在Private Sub Command2_Click()
原本不打算触发oncomm
后来Private Sub Command2_Click()不行,再测试oncomm的
(测试的时候MSComm1.RThreshold 已经改为1)BTW:我现在连接的是WaveCOM 的GSM Modem
Do
Doevents
recbuf=recbuf & mscomm1.input
loop until instr(recbuf,"OK") '设置返回数据的结束符号,你可以自己定然后你把recbuf赋给你想要的地方就OK了
另外你的握手协议有没有真正的在程序里实现?结束符有没有加上?