[pyserial] lecture port série sur arduino
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:
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