RaspFR :: Forum

Forum de la communauté francophone de Raspberry PI.

Vous n'êtes pas identifié(e).

Annonce

Canal irc: #raspfr sur zeolia.net

#1 30-04-2017 14:13:58

david84
Membre
Inscription : 14-08-2014
Messages : 101

Ballon sonde

Bonjour,

J'aurai aimé solliciter votre aide pour mon projet de ballon sonde. http://lyzda.be/ballon-stratospherique/

Bien-sur l’élément principale est un Rpi modèle 2. Plusieurs capteurs sont branché dessus ( température, pression, gps ) ainsi qu'un émetteur radio permettant de recevoir les coordonnées gps en plein vol.
Le script tourne sur Python.

J'ai un bug que je n'arrive pas à résoudre malgré mes nombreuses recherches.
Les données sont envoyé par radio via un convertisseur usb => série, j'utilise la librairie Pyserial pour cela.

Mon bug le voici: Après l'envois de 126 trames le script s’arrête avec ceci comme message:

[== Indéfini ==]
Trame 126 |__Ballon__|10:40| GPS: 50 22 xx, 04 27 xx| Sat: 08| Alt: 195.3| T_in = 17.3| T_ex = 17.6

Traceback (most recent call last):
  File "telemetryP4.py", line 215, in <module>
    send(datastring)

  File "telemetryP4.py", line 130, in send
    NTX2.write(data.encode())
  File "/usr/lib/python2.7/site-packages/serial/serialposix.py", line 515, in write
    abort, ready, _ = select.select([self.pipe_abort_write_r], [self.fd], [], None)
ValueError: filedescriptor out of range in select()

Et voici le morceau de code qui posse problème :

[== Indéfini ==]
def send(data):
    try:
        NTX2 = serial.Serial('/dev/ttyUSB0', 200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_TWO)
        NTX2.write(data.encode())
        print data
        NTX2.close()
    
    except:
        print("Erreur NTX2")

    finally:
        NTX2.close()

Ce que je ne comprends pas c'est que après chaque envoie je ferme ma liaison série NTX2.close() donc pas de fichier ouvert.
J'ai déjà tenté d'augmenter le nombre de fichier ouvert avec "ulimit -n" mais cela ne change rien.....

Si quelqu'un à une piste?

Merci

Hors ligne

#2 30-04-2017 17:28:48

CrazyCat
Chat
Inscription : 14-01-2016
Messages : 415

Re : Ballon sonde

D'après ce qui est dit sur https://bugzilla.redhat.com/show_bug.cgi?id=609020, le souci ne vient pas de ton code mais de celui de serialposix.py et plus particulièrement de l'utilisation de select.

This was due to the subprocess module using the "select" system call. The module now uses the "poll" system call, removing this limitation.

Il faudrait voir s'il existe une version plus récente de cette library, ou bien la modifier.

Hors ligne

#3 02-05-2017 09:29:43

david84
Membre
Inscription : 14-08-2014
Messages : 101

Re : Ballon sonde

Merci pour les infos CrazyCat.

J'ai trouvé une solution qui résous mon bug temporairement.

J'ai simplement supprimé ma librairie Pyserial et je l'ai réinstallé cette fois ci par "yum install pyserial"  et je n'ai plus l'erreur : filedescriptor out of range in select() et mon script tourne non stop! big_smile

Par contre j'ai quand même une erreur lors de l'arrête du script : OSError: [Error 9] Bad file descriptor

A investiguer!

Merci

Dernière modification par david84 (02-05-2017 09:33:53)

Hors ligne

#4 02-05-2017 10:20:43

CrazyCat
Chat
Inscription : 14-01-2016
Messages : 415

Re : Ballon sonde

Ca peut très vraisemblablement venir d'une tentative d'accès ou de fermeture sur un fichier/socket fermé. Est-ce que tu n'aurais pas un .close() à la fin de ton script qui s'exécuterait dans tous les cas ?

Hors ligne

#5 03-05-2017 18:29:36

david84
Membre
Inscription : 14-08-2014
Messages : 101

Re : Ballon sonde

Oui en effet, voici une partie du code en question:

[== Indéfini ==]
#--------------- Envoi des donnees par radio NTX2 ----------------------

def send(data):
    try:
        NTX2 = serial.Serial('/dev/ttyUSB0', 200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_TWO)
        NTX2.write(data.encode())
        print data
        NTX2.close()
    
    except:
        print("Erreur NTX2")

    finally:
        NTX2.close()

Est-ce que je dois supprimer les deux NTX2.close() ?

Dernière modification par david84 (03-05-2017 18:31:24)

Hors ligne

#6 03-05-2017 23:43:07

CrazyCat
Chat
Inscription : 14-01-2016
Messages : 415

Re : Ballon sonde

Je virerais celui du finally, tu n'ouvres le fichier que dans le try

Hors ligne

Pied de page des forums