我现在做一个手机短信程序,PC和NOKIA8210通过红外端口连接,用VB的MSCOMM控件,在判断是否成功发送用到MSCOMM的INPUT属性,用语句:
DIM RECO AS STRING
MSCOMM1.OUTPUT=“AT”+VBCR
RECO=MSCOMM1.INPUT
在执行过程中出错,INPUT返回的是空值。
等待高手指点。谢谢
DIM RECO AS STRING
MSCOMM1.OUTPUT=“AT”+VBCR
RECO=MSCOMM1.INPUT
在执行过程中出错,INPUT返回的是空值。
等待高手指点。谢谢
do
if mscomm1.InBufferCount then
reco = mscomm1.input
endif
'///这边加上时间判断,如果超过了一定时间,退出do ,不然死循环了
loop
还是出错,提示“读COMM设备错误”,在调试时MSCOMM1.INPUT=“”。是不是没有返回值呢?可是在超级终端上调试,成功返回“OK”,失败返回“ERROR”。
怎么能这样赋值呢?
这是只读的,不是output啊
我是说在调试过程中,把鼠标放在MSCOMM1.INPUT上面时,提示MSCOMM1.INPUT=“”的。OK?
正确的。因为用是红外端口,所以影射了一个端口COM3。可以和手机正常连接,也可以发出短信,实现群发的时候,经常发生堵塞,所以想通过INPUT属性来判断是否发送成功。是不是可以有其他的方式来判断手机是不是堵塞了呢?谢谢。
mscomm1.handshaking=0-comNo
我想应该可以返回“OK”或“ERROR”才对的呀。可是就是不对。是不是因为设备的原因呢?
我用的是台式电脑,配的水木行的红外线适配器。NOKIA8210手机。
另外串口的设置应该与超级终端一样
谢谢你,我先试一下。
不行,还是报一样的错误。
Private Sub Command1_Click()
MSComm1.CommPort = 2
MSComm1.Settings = "115200, N, 8, 1"
MSComm1.PortOpen = True
MSComm1.Output = "AT" & Chr(13) & Chr(10)
Dim inBuf As String
Do
If MSComm1.InBufferCount Then
inBuf = MSComm1.Input
Debug.Print inBuf
If InStr(inBuf, "OK") > 0 Then
Exit Do
End If
End If
Loop
End Sub
感谢两位仁兄,如果出现手机阻塞,不用INPUT属性,还有什么方法能够判断其是否阻塞呢?谢谢。
你在超级终端里发AT能返回OK吗?
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
MSComm1.Handshaking = comRTS
MSComm1.RTSEnable = True
MSComm1.InputMode = comInputModeText
Private Sub Timer1_Timer()
Dim s() As Byte
If MSComm1.InBufferCount > 0 Then
s = MSComm1.Input
End If
End Sub
以下仅做参考:
' Buffer to hold input string
Dim Instring As String
' Use COM1.
MSComm1.CommPort = 1
mscomm1.handshaking=comRTSXOnXOff
mscomm1.RTSEnabled=true
' 9600 baud, no parity, 8 data, and 1 stop bit.
MSComm1.Settings = "9600,N,8,1"
' Tell the control to read entire buffer when Input
' is used.
MSComm1.InputLen = 0
' Open the port.
MSComm1.PortOpen = True
' Send the attention command to the modem.
MSComm1.Output = "AT" + Chr$(13)+Chr$(10)
' Wait for data to come back to the serial port.
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 2
' Read the "OK" response data in the serial port.
Instring = MSComm1.Input
' Close the serial port.
MSComm1.PortOpen = False