我已经完成了99%的脚本,但遇到了一个问题。
我正在尝试在Python中显示从GSM调制解调器接收到的文本消息。
到目前为止,我可以读取到一条短信已经到来,但无法显示消息内容。
我知道self.ser.readlines()会返回一个列表。
import serial
import time
class TextMessage:
def connectPhone(self):
self.ser = serial.Serial('COM14', 460800, timeout=5) #for mine this was ttyUSB0 but could be ttyUSB1 etc. good idea to runs ls usb and find out that way
time.sleep(1)
def read(self):
self.ser.write('ATZ\r')
time.sleep(1)
self.ser.write('AT+CMGF=1\r')# put in textmode
time.sleep(1)
self.ser.write('''AT+CMGL="ALL"''' + '''\r''') #fetch all sms's
read = self.ser.readlines()
for msg in read:
if "+CMGL" in msg: #+CMGL looks for all SMS messages
print msg
def disconnectPhone(self):
self.ser.close()
sms = TextMessage()
sms.connectPhone()
sms.read()
sms.disconnectPhone()
raw_input("Press anykey to exit")
这里是输出
AT+CMGL="ALL"
+CMGL: 0,"REC READ","+61xxxxxxxxx",,"16/04/30,19:53:38+38"
+CMGL: 1,"REC READ","+61xxxxxxxxx",,"16/05/02,14:47:53+38"
+CMGL: 2,"REC READ","+61xxxxxxxxx",,"16/05/02,21:27:58+38"
My desired output would be
+CMGL: 0,"REC READ","+61xxxxxxxxx",,"16/04/30,19:53:38+38"
Test back
+CMGL: 1,"REC READ","+61xxxxxxxxx",,"16/05/02,14:47:53+38"
Im a message
+CMGL: 2,"REC READ","+61xxxxxxxxx",,"16/05/02,21:27:58+38"
TEST TEST TEST
有人可以帮忙吗?
去掉if后的输出结果:
ATZ
OK
AT+CMGF=1
Ok
AT+GCML="ALL"
+CMGL: 0,"REC READ","+61xxxxxxxxx",,"16/04/30,19:53:38+38"
Test back
+CMGL: 1,"REC READ","+61xxxxxxxxx",,"16/05/02,14:47:53+38"
Im a message
+CMGL: 2,"REC READ","+61xxxxxxxxx",,"16/05/02,21:27:58+38"
TEST TEST TEST
OK
+CMGL
这个词吗?因为你限制了只打印包含这个词的行(请删除if "+CMGL" in msg
这一行并展示新的输出结果)。 - EbraHim