Bonjour à tous,
J'ai une carte Arduino ainsi qu'un shield GPRS et je souhaite lire les sms présent sur la carte sim à l'aide de Python et pyserial.
Lorsque j'utilise le moniteur série de Arduino et que j'envoie la commande AT+CMGL="REC READ" je recois correctement les sms en retour sous cette forme:
AT+CMGL="REC READ"
+CMGL: 1,"REC READ","+3367732xxxx","","13/03/03,11:17:57+04"
Test
+CMGL: 2,"REC READ","+3367732xxxx","","13/03/03,11:23:07+04"
D
+CMGL: 3,"REC READ","+3367732xxxx","","13/03/03,11:34:19+04"
essai
Cependant quand je passe par python et pyserial je recois cette chaine :
AT¥5GTŠ
C¡j5
AT¥MCª8ª9K
C¡j5
AT¥5GªRQ(’A”j
+CSJ1I’C’A”b"å3367732xxxx","", "13/03/03,1L§º:MÓ ¢"C!UÍtC¡H+èÓGL: 2,"REC READ","+3367732xxx“b"$IŠ3 š/š,LÒ2&‚7%¢"C!TH
¡i5GJ3I’C’A”b"¥š6ÓŠ2“¢4$I,¤š/š/š,LÒ3“Š9%¢"C!TkÁoC¡HO©H
voici mon code python:
Code:code # #!/usr/bin/python # -*- coding: latin-1 -*- import serial import time ser=serial.Serial( port='COM4', baudrate=19200, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_TWO, bytesize=serial.EIGHTBITS ) #ser.open() ser.isOpen() input=1 while 1 : # get keyboard input input = raw_input(">> ") # Python 3 users #input = input(">> ") if input == 'exit': ser.close() exit() else: ser.write('AT+CMGF=1\r') # SMS format texte time.sleep(1) ser.write('AT+CSCS="8859-1"\r') # Alphabet Latin time.sleep(1) ser.write('AT+CMGL="REC READ"\r') out = '' # let's wait one second before reading output (let's give device time to answer) time.sleep(5) while ser.inWaiting() > 0: out += ser.read(1) print (out)
Je suis vraiment coincé car je ne sais plus ou chercher pour avoir la meme chaine que celle retourné dans le moniteur série d'arduinos.
Merci pour votre aide
-----