Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2013, 19h15   #1
houma2001
Candidat au titre de Membre du Club
 
Homme
Administrateur de base de données
Inscription : janvier 2012
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : janvier 2012
Messages : 38
Points : 14
Points : 14
Par défaut serial :probleme de lecture

Je développe actuellement une application qui sert à lire des données d’un port com (appareil électronique de pesage)
Et je rencontre un problème qui est le suivant:

Apres la lecture des données j’obtiens le résultat sous forme de petit rectangle, est ce que c’est un caractère crypté ou encodé ou juste un une case vide
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import serial
ser = serial.Serial(0, timeout=1)
#sss=ser.open()
print('open',ser)
s = ser.read()
#?s=list(s)
print(s)
while s!='':
    print('ok')
    print s
    s = ser.read(1024)
 
 
ser.close()
résultat
piece jointe


Et merci pour toute suggestion
Images attachées
Type de fichier : gif titre2.gif (4,1 Ko, 16 affichages)
houma2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 09h09   #2
pfeuh
Membre Expert
 
Développeur en systèmes embarqués
Inscription : mars 2006
Messages : 763
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Développeur en systèmes embarqués
Secteur : Industrie

Informations forums :
Inscription : mars 2006
Messages : 763
Points : 1 031
Points : 1 031
Salut,

Peut-être que comme celà ça marchera mieux?

Code :
1
2
3
4
5
6
7
8
9
import serial
ser = serial.Serial(0, timeout=1)
while 1:
    car = ser.read(1)
    # if car == ???:
    #     break 
    if car != '':
        print ("%02x"%ord(car),)
ser.close()
A+

Pfeuh
pfeuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 09h49   #3
houma2001
Candidat au titre de Membre du Club
 
Homme
Administrateur de base de données
Inscription : janvier 2012
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : janvier 2012
Messages : 38
Points : 14
Points : 14
salut p-feuh
j'ai essayé le code que tu m'as donné, il m'afiche 2 zero
('00',) je ne sais toujours pas pourquoi
N.B:
j'utilise le port (RS232)
houma2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 10h09   #4
pfeuh
Membre Expert
 
Développeur en systèmes embarqués
Inscription : mars 2006
Messages : 763
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Développeur en systèmes embarqués
Secteur : Industrie

Informations forums :
Inscription : mars 2006
Messages : 763
Points : 1 031
Points : 1 031
Citation:
Envoyé par houma2001 Voir le message
il m'afiche 2 zero
('00',) je ne sais toujours pas pourquoi
Parce que un octet de valeur 0 a été reçu sur le port série.

A ce stade, il faudrait te demander si les deux ports séries (du PC et de l'appareil électronique de pesage) sont configurés de la même façon (vitesse, nb de bits etc...) et potasser le protocole de communication: Sous quelle forme ton appareil envoi t-il les données? Entiers? Flottants? Textes? Trame complexes à décoder? Lui faut il une question pour qu'il réponde? Ou envoi t-il cycliquement sans question? Etc...
pfeuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 10h24   #5
houma2001
Candidat au titre de Membre du Club
 
Homme
Administrateur de base de données
Inscription : janvier 2012
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : janvier 2012
Messages : 38
Points : 14
Points : 14
je n'ai pas la moindre idée sur le mode de fonctionnement de l'apareil
que dois je faire à present ?
houma2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 10h56   #6
pfeuh
Membre Expert
 
Développeur en systèmes embarqués
Inscription : mars 2006
Messages : 763
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Développeur en systèmes embarqués
Secteur : Industrie

Informations forums :
Inscription : mars 2006
Messages : 763
Points : 1 031
Points : 1 031
Citation:
Envoyé par houma2001 Voir le message
que dois je faire à present ?
Comme dit plus haut potasser le protocole de communication de ton appareil... Si tu as son constructeur et sa référence, tu dois pouvoir trouver sa documentation (donc son protocole de communication) sur le net... Si tu ne l'as pas c'est une mission suicide... Ou alors faire du reverse engineering... Bon courage.
pfeuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 11h04   #7
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 613
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien Help Desk, maintenance, réseau, système et +
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 2 613
Points : 3 724
Points : 3 724
Citation:
Envoyé par houma2001 Voir le message
(appareil électronique de pesage)
Citation:
Envoyé par pfeuh Voir le message
Parce que un octet de valeur 0 a été reçu sur le port série.
Une valeur de zero est sans doute possible.
Cela donne quoi chargé ?
__________________
Merci d'utiliser le forum pour les questions techniques.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 12h00   #8
houma2001
Candidat au titre de Membre du Club
 
Homme
Administrateur de base de données
Inscription : janvier 2012
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : janvier 2012
Messages : 38
Points : 14
Points : 14
le code me renvoi zero alors que la balance est chargée
je vais modifier les paramètre et voir ce que ça donne
houma2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 15h52   #9
houma2001
Candidat au titre de Membre du Club
 
Homme
Administrateur de base de données
Inscription : janvier 2012
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : janvier 2012
Messages : 38
Points : 14
Points : 14
un grand merci à vous .
j'ai enfin pu configurer le port de l'appareil et tout fonctionne à merveille sauf
qu'il me reste un truc

je veux que le programme reste en veille tant qu'il n'y a rien a recevoir du port com
et dés qu'il ya ya un flux d’informations qui passe il commence le traitement de données

merci pour toutes suggestions
houma2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 18h53   #10
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 613
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien Help Desk, maintenance, réseau, système et +
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 2 613
Points : 3 724
Points : 3 724
Bonjour,

Il est possible de positionner le paramètre timeout à None (Valeur par défaut). Ainsi un ser.read(1) attendras la lecture de 1 caractère sans limite de temps.
Dans le cas ou c'est plusieurs caractères result = ser.read(1) vas attendre/stocker le premier caractère avant de poursuivre.
Un nbchar = ser.inWaiting() vas permettre d'avoir le nombre de caractères suivants ce qui fait qu'un result += ser.read(nbchar) donneras tous les caractères lus sur le port.
Il est possible qu'un time.sleep(x) soit utile entre le premier ser.read() et ser.inWaiting() : Histoire de tout récupérer.

@+
__________________
Merci d'utiliser le forum pour les questions techniques.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 19h00   #11
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 613
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien Help Desk, maintenance, réseau, système et +
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 2 613
Points : 3 724
Points : 3 724
Avec du code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
import serial
import time
 
 
ser = serial.Serial(0)  # timeout=None donc
while 1:
    toread = ser.read(1)
    # A tester avec un time.sleep(1)
    nbchar = ser.inWaiting()
    toread += ser.read(nbchar)
    # etc...
ser.close()
__________________
Merci d'utiliser le forum pour les questions techniques.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h40.


 
 
 
 
Partenaires

Hébergement Web