python3 pb avec librairie serial

Salut les gens :slightly_smiling:

Voilà mon problème :

J’ai resorti un petit programme que j’avais commencé et qui fonctionnait… Il s’agit de récupérer la température sur un arduino avec un module bluetooth.

Bon… coté hardware, aucun soucis… pour preuve :

$ cat /dev/rfcomm0 [20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37][20.37]

seulement mon code python qui fonctionnait me dit maintenant que mon port serie est occupé… heu… ben non, puisque je peux faire la commande du dessus… je comprends pas.

Voici le code :

#!/usr/bin/python3
# -*- coding: utf-8 -*-

from serial import *
import time
import threading
import csv

import sys

class serTemp :

     ... (threads et compagnie...)

    def __init__(self, port, baud):
        self.ser = Serial(port, baud)
        self.ThreadRuned = False
        self.texte = ""
        self.ser.open()
        if (self.ser.isOpen()):
            print("__init__ : Port ", self.ser.isOpen())
            self.ser.flushInput()
            self.ser.flushOutput()

        self.ThreadLCD = threading.Thread(None, self.threadTemp)



if __name__ == '__main__':
    test = serTemp("/dev/rfcomm0", 115200)
    ...

réponse :

./bttemperature.py Traceback (most recent call last): File "./bttemperature.py", line 114, in <module> test = serTemp("/dev/rfcomm0", 115200) File "./bttemperature.py", line 103, in __init__ self.ser.open() File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 271, in open raise SerialException("Port is already open.") serial.serialutil.SerialException: Port is already open.

Quelqu’un à une idée du pb ?

Merci d’avance :blush:

Bon… j’ai résolu le problème en faisant :

def __init__(self, port, baud): self.ser = Serial(port, baud) self.ThreadRuned = False self.texte = "" self.ser.close() self.ser.open() if (self.ser.isOpen()): print("__init__ : Port ", self.ser.isOpen()) self.ser.flushInput() self.ser.flushOutput()

Mais j’aimerai bien comprendre pourquoi il est ouvert avant même que je l’ouvre :frowning:

[quote=“vohu”]Quelqu’un à une idée du pb ?
Merci d’avance :$[/quote]
bonjour peut être lors d’un passage de python3.2 vers python3.3
C’a m’est arrivé l’autre jour.

Oui, m’enfin, je verrais si ça change à nouveau…