Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/01/2010, à 23:00

Linkid

[Python] Port RS232 et pyserial

Bonjour
J'ai acheté récemment un adaptateur USB - port RS232 pour pouvoir brancher sur mon ordi une carte qui lit une sorte de code-barres. Je voudrais donc récupérer les données, si possible en Python.

J'ai donc fait quelques recherches et j'ai trouvé pyserial pour faire cela. Le problème est que je ne sais pas trop m'en servir et quand j'essaye les commandes "de base" :

import serial
ser=serial.Serial('/dev/ttyS1', 19200, timeout=1)
ser.read(100)
ser.close()

et je ne vois aucune info...
J'ai alors tenté de regarder RXD, DSR, ..., mais je ne trouve pas les commandes pour le faire.

Donc si quelqu'un sait comment lire les bytes reçus par le port RS232 avec pyserial (ou autre), je prends.
Merci !


Ubuntu 9.10 : "The Karmic Koala"... Un monde de rêve rempli d'animaux !
Notre liberté ne se limite pas à Windows...

Hors ligne

#2 Le 05/01/2010, à 15:31

BadZoot

Re : [Python] Port RS232 et pyserial

Salut,

Et si tu ajoute quelque chose comme ceci :

variab = ser.read(100)
print variab

Selon la doc, ton script fait ceci :
1) Tu ouvre le port.
2) Tu lis les données sur ce port.
3) Tu ferme le port.

A mon avis, au niveau du read (2), tu prend les données sur le port mais tu ne les stockes pas.

EDIT :
    D'une manière générale, sur GOOGLE, tape:
   
        python module [nom du module]
   
    95 fois sur 100, on y trouve des réponses.

Dernière modification par U-toyen (Le 05/01/2010, à 21:19)


Le pervers père de Pierre perd son imper' vert.

No, I am Zoot's identical twin-sister : Dingo.

Hors ligne

#3 Le 05/01/2010, à 21:20

Linkid

Re : [Python] Port RS232 et pyserial

Salut !
Juste un oublie de ma part... Mais même en affichant le read, je n'ai rien. Et je ne comprends pas pourquoi.
Peut-être avec de quoi lire les différentes entrées du port série RS232, j'aurais plus d'infos, mais je ne sais pas comment les obtenir.


Ubuntu 9.10 : "The Karmic Koala"... Un monde de rêve rempli d'animaux !
Notre liberté ne se limite pas à Windows...

Hors ligne

#4 Le 09/06/2010, à 22:33

boogiewoogie

Re : [Python] Port RS232 et pyserial

Bonjour,
Je viens de me mettre à PySerial.
J'ai le code suivant qui fonctionne parfaitement pour un premier test

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Ce programme réalise un test sur un bouchon série
# Relier ensemble : RD(2) et TD(3), DTR(4) et DSR(6), RTS(7) et CTS(8)
# Si vous n'avez pas les droits pour écrire vers le port série faites un chmod 666 /dev/ttyS0

import serial

def main():
    print("TEST DE PySerial")
    print("----------------")
    print
    ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1)
#   ser = serial.Serial('/dev/ttyS0', 19200, timeout=1)
    ser.open()
    print ("Toutes les informations sur votre port série :")
    print("Port = %s" % ser.port)
    print("Baudrate = %s" % ser.baudrate)
    print("Bits = %s" % ser.bytesize)
    print("Parité = %s" % ser.parity)
    print("Bit de stop = %s" % ser.stopbits)
    print("Time out = %s" % ser.timeout)
    print("Xon/Xoff = %s" % ser.xonxoff)
    print("Rts/Cts = %s" % ser.rtscts)
#    print("Time out entre caractères = %s" % ser.interCharTimeout)
    chaine="BONJOUR LE MONDE et tous les autres de l'univers!!!"
    print("Envoi de la chaine : %s" % chaine)
    envoi=ser.write(chaine)    # Envoi de la chaine de caracteres
    lecture=ser.readline()    # Lecture du port jusqu'au \n (retour ligne)
    print("Lecture du port : %s" % lecture)
    if (chaine==lecture):
        print("OK : La chaîne envoyée est égale à la chaîne reçue")
    else:
        print("ERREUR : La chaîne envoyée n'est pas égale à la chaîne reçue")
    print("ETAT DU SIGNAL CTS : %s" % ser.getCTS())
    print("ETAT DU SIGNAL DSR : %s" % ser.getDSR())
    print("ETAT DU SIGNAL RI : %s" % ser.getRI())
    print("ETAT DU SIGNAL DCD : %s" % ser.getCD())
    ser.close()
    return 0

if __name__ == '__main__':
    main()

Hors ligne