Python pyserial fonction read()
Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

Python pyserial fonction read()



  1. #1
    invitede7cc8c5

    Question Python pyserial fonction read()


    ------

    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

    -----
    Dernière modification par JPL ; 03/03/2013 à 20h41. Motif: Ajout de la balise Code (#) pour garder l'indentation

Discussions similaires

  1. [PYTHON]Stopper une fonction
    Par invite57a0da87 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 07/08/2012, 09h19
  2. Read et Fortran
    Par invite9f90c9cc dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 18/07/2012, 14h15
  3. The destination is read-only
    Par invite0bde6d7c dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 24/05/2012, 17h23
  4. read disk error message
    Par invitebb2d38d6 dans le forum Matériel - Hardware
    Réponses: 0
    Dernier message: 10/11/2010, 18h57
  5. commander le port série avec python (pyserial)
    Par invited6d96369 dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 12/09/2010, 12h41
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...