我有一個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