我有一个DWM-156 GSM modem。下面你可以看到,添加到我的电脑插上这个GSM调制解调器连接到USB端口后的设备列表:在Python中使用PySerial与GSM调制解调器通信
需要注意的是,我将调制解调器连接到我的电脑时,它都会使用不同的COM端口号。
现在我想发送一些AT命令到这个调制解调器使用Python或任何其他语言。实际上,我想用拨号电话接听/拨打电话,并记录通信期间传输的原始数据。在搜索之后,我在SO中发现了this问题。其中一个应答者建议下面的代码:
import serial
serialPort = serial.Serial(port=PORT_NUMBER,baudrate=115200,timeout=0,rtscts=0,xonxoff=0)
def sendatcmd(cmd):
serialPort.write('at'+cmd+'\r')
print 'Loading profile...',
sendatcmd('+npsda=0,2')
我更换PORT_NUMBER 9,10和12这是结果:
>>> ================================ RESTART ================================
>>>
Loading profile...
>>> #for port = 9
>>> ================================ RESTART ================================
>>>
Loading profile...
>>> #for port = 10
>>> ================================ RESTART ================================
>>>
Traceback (most recent call last):
File "C:\Users\ghasemi.IT\Desktop\testGSMModem.py", line 3, in <module>
serialPort = serial.Serial(port=12,baudrate=115200,timeout=0,rtscts=0,xonxoff=0)
File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 38, in __init__
SerialBase.__init__(self, *args, **kwargs)
File "C:\Python27\lib\site-packages\serial\serialutil.py", line 282, in __init__
self.open()
File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 66, in open
raise SerialException("could not open port %r: %r" % (self.portstr, ctypes.WinError()))
SerialException: could not open port 'COM13': WindowsError(2, 'The system cannot find the file specified.')
>>> #for port = 12
>>>
我的问题:
- 虽然我没有收到任何回应?
- 为什么在第三个节目扔无法打开端口“COM13”当我试图连接到COM12?
- 有没有更高效和更好的方式使用GSM调制解调器来嗅探呼叫? (我想打电话给我用拨号电话机插在我的GSM调制解调器的SIM卡,并记录原始数据,该通信过程中传输。)
谢谢你的回答。 ** 1 - **我将'serialPort.read()'添加到了我的代码中,但没有任何更改。 ** 2 - **是的,我用'“COM12”替换'12',现在它的输出就像输出到其他端口一样。 ** 3 - **我在我的GSM调制解调器中插入了一张SIM卡,对不对?此SIM卡有一个电话号码。我想用拨号电话拨打此号码。然后我想用python来回答这个调用。而且我还想将在此通信期间传输的数据存储在文件中。 (使用接受调用的相同python程序) – Abraham
我可以请求您将我的程序的修改版本添加到您的答案中吗? – Abraham
你需要做的不仅仅是把'serialPort.read()'放入 - 至少print(serialPort.read())。可能会很快进入read()调用,以至于没有任何内容可以立即读取,因此您需要等待,然后检查接收缓冲区的等待数据。我没有任何我知道可用的示例代码,或者任何需要测试的代码,所以我无法真正添加一个有用的修改版本 - 但这个问题和两个答案看起来像代码要等待和阅读: http://stackoverflow.com/questions/13017840/using-pyserial-is-it-possble-to-wait-for-data。 – TessellatingHeckler