私はGSMモデム「D-Link DWM-157」を持っています。私はこのモデムを使ってSMSとUSSDコードを送信したいと思っています。 smsを送信するにはsmstools3を使用し、すべてがOKです。 USSDコードを送信する目的は、SIMカードを充電するために天びんを回収することです。 USSDコードを送信するには、smstools3も使用したいと思います。問題は、ポート/ dev/ttyUSB0からUSSDコードを送信すると、/ dev/ttyUSB1ポートからの応答を受け取る必要があることです。私はこの動作についてsmstoolsフォーラムで尋ねました。そして、彼らは私に、USSDコードの送受信に2つのポートを使用するモデムを教えてくれました。 smstools3に特定のポート経由でUSSDコードを送信し、それが別のポートからの回答を受け取るようなオプションがあるとは思いません(フォーラムでこれについて尋ねましたが、まだ回答していません)。だから私は、ポート(すなわち/ dev/ttyUSB1)を継続的に聴いて、USSDコードの回答を受け取り、パーズする簡単なプログラムを書こうと思っています。 USSDコードはsmstools3によって送信されますが、回答は私のプログラムによって受信されます。私はSMSD経由USSDコードを送信PythonでGSMモデムの出力を読む
#!/usr/bin/python
import serial, time
from time import sleep
import threading
def serial_def():
ser = serial.Serial()
ser.port = "/dev/ttyUSB1"
ser.baudrate = 9600
ser.timeout= 5
ser.xonxoff = False
ser.rtscts = False
ser.dsrdtr = False
ser.open()
if ser.isOpen():
print (ser.name+ " is open ...\n")
print "Thread started... \n"
while True:
out=ser.readline()
print out
:これを行うために、私は次のコードを書いた
私は唯一の空白行を取得何も出力されない場合: ./receive_ussd_gsm.py
/dev/ttyUSB1 is open ...
Thread statred...
は、
と私はSMSD経由USSDコード送るとき:
# smsd -C GSM1
Communicating with GSM1. (Press Ctrl-C to abort.)
(If you need to send Ctrl-Z, use Alt-Z)
Default device is /dev/ttyUSB0
Press Enter to start or type an another device name.
Opening device /dev/ttyUSB0
Ready.
ATE1
OK
ATZ
OK
at+cusd=1,"*140*11#",15
OK
を私はfollowiを取得エラー:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "./receive_ussd_gsm.py", line 31, in serial_def
out=ser.readline()
File "/usr/local/lib/python2.7/dist-packages/serial/serialposix.py", line 501, in read
'device reports readiness to read but returned no data '
SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
出力を正しく得ることができます。しかし私は自分のプログラムでそれを持っていたい。 miniterm.pyを使用しているとき、私はまた、上記のエラーを与える
device disconnected or multiple access on port?
!!:ところで、私はこれを取得なぜ私にはわからない時にポートに接続された1つのプログラムを使用します
# miniterm.py
--- Available ports:
--- 1: /dev/ttyUSB0 'D-Link DWM-157'
--- 2: /dev/ttyUSB1 'D-Link DWM-157'
--- 3: /dev/ttyUSB2 'D-Link DWM-157'
--- 4: /dev/ttyUSB3 'D-Link DWM-157'
--- Enter port index or full name: 2
--- Miniterm on /dev/ttyUSB1 9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
--- exit ---
Exception in thread rx:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/bin/miniterm.py", line 445, in reader
data = self.serial.read(self.serial.in_waiting or 1)
File "/usr/local/lib/python2.7/dist-packages/serial/serialposix.py", line 501, in read
'device reports readiness to read but returned no data '
SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)