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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
 
#!/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