Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
MSComm1.Output = "AT+CMGF=1" & vbCrLf
Sleep 500
MSComm1.Output = "AT+CMGR=2" & vbCrLf
Sleep 500
End SubPrivate Sub Form_Load()
MSComm1.CommPort = 11
If MSComm1.PortOpen = False Then
MSComm1.Settings = "115200,n,8,1"
MSComm1.PortOpen = True
End If
MSComm1.InputMode = 0
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
MSComm1.InputLen = 1
MSComm1.RThreshold = 1End SubPrivate Sub MSComm1_OnComm()
MsgBox ("MSComm1.CommEvent " & MSComm1.CommEvent)
End Sub
端口MSComm1.CommPort = 11
在超级终端下面正常接收,在VB里就没有接收任何信息,不触发MSComm1_OnComm如果把端口换成1,MSComm1.CommPort = 1 '用另一个设备就
在超级终端下面正常接收,在VB里也可以正常触发MSComm1_OnComm不同设备对MSComm1支持不一样吗?
但在超级终端里都是正常的?还需要设置什么啊?
Private Sub Command1_Click()
MSComm1.Output = "AT+CMGF=1" & vbCrLf
Sleep 500
MSComm1.Output = "AT+CMGR=2" & vbCrLf
Sleep 500
End SubPrivate Sub Form_Load()
MSComm1.CommPort = 11
If MSComm1.PortOpen = False Then
MSComm1.Settings = "115200,n,8,1"
MSComm1.PortOpen = True
End If
MSComm1.InputMode = 0
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
MSComm1.InputLen = 1
MSComm1.RThreshold = 1End SubPrivate Sub MSComm1_OnComm()
MsgBox ("MSComm1.CommEvent " & MSComm1.CommEvent)
End Sub
端口MSComm1.CommPort = 11
在超级终端下面正常接收,在VB里就没有接收任何信息,不触发MSComm1_OnComm如果把端口换成1,MSComm1.CommPort = 1 '用另一个设备就
在超级终端下面正常接收,在VB里也可以正常触发MSComm1_OnComm不同设备对MSComm1支持不一样吗?
但在超级终端里都是正常的?还需要设置什么啊?
2、你的串口存在逻辑可能错误,如果你的串口本来是打开的,那么你的Setting属性将不能设置,所以也就不可能实现通信。
3、请把Command1的代码修改一下,把Sleep改为:
intP=0
do
doevents
Sleep 100
intP=intP+1
loop until intP>=5
为的就是让OnComm有处理时间,VB是进程的,你的Command1
这样写,独占了CPU资源,其它的事件都没有办法响应了。
看了串口调试器,我中间加了这条就正常了,呵呵