per vedere Invia sms utilizzando All'ordine questo aiuterà.
import serial
import time
class TextMessage:
def __init__(self, recipient="+2348065777685", message="TextMessage.content not set."):
self.recipient = recipient
self.content = message
def setRecipient(self, number):
self.recipient = number
def setContent(self, message):
self.content = message
def connectPhone(self):
self.ser = serial.Serial('COM70', 460800, timeout=5, xonxoff = False, rtscts = False, bytesize = serial.EIGHTBITS, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE)
time.sleep(1)
def sendMessage(self):
self.ser.write('ATZ\r')
time.sleep(1)
self.ser.write('AT+CMGF=1\r')
time.sleep(1)
self.ser.write('''AT+CMGS="''' + self.recipient + '''"\r''')
time.sleep(1)
self.ser.write(self.content + "\r")
time.sleep(1)
self.ser.write(chr(26))
time.sleep(1)
def disconnectPhone(self):
self.ser.close()
sms = TextMessage("+2348063796720","Mummy i sent this message from my computer")
sms.connectPhone()
sms.sendMessage()
sms.disconnectPhone()
print "message sent successfully"
per ricevere sms utilizzando Al comando di questo dovrebbe aiutare
import serial
import time
import sys
class HuaweiModem(object):
def __init__(self):
self.open()
def open(self):
self.ser = serial.Serial('COM70', 406800, timeout=5)
self.SendCommand('ATZ\r')
self.SendCommand('AT+CMGF=1\r')
def SendCommand(self,command, getline=True):
self.ser.write(command)
data = ''
if getline:
data=self.ReadLine()
return data
def ReadLine(self):
data = self.ser.readline()
print data
return data
def GetAllSMS(self):
self.ser.flushInput()
self.ser.flushOutput()
command = 'AT+CMGL="REC UNREAD"\r\n'#gets incoming sms that has not been read
print self.SendCommand(command,getline=True)
data = self.ser.readall()
print data
h = HuaweiModem()
h.GetAllSMS()
No, no, no! Per favore non elaborare i comandi AT in questo modo. Devi ** ** attendere il codice del risultato finale (ad esempio, OK, ERRORE, ...) prima di inviare il comando successivo. E in particolare per AT + CMGS ** DEVI ** attendere che il modem invii "\ n \ r>" prima di iniziare a inviare MyMessage. Vedi questa risposta per maggiori dettagli, http://stackoverflow.com/a/15591673/23118. – hlovdal
Dormire non è un sostituto per la lettura e l'analisi della risposta.È utile come calciare i cani che stanno sulla tua strada per farli muovere. Sì, potrebbe effettivamente funzionare alcune volte, ma a un certo punto ti dispiacerà prendere questo approccio. – hlovdal