Quand j'ai vider le tampon série en Python, il s'arrête de lire

J'ai programmé un Arduino pour envoyer les données en série à mon ordinateur. pySerial est une lecture correcte de la série, mais depuis j'ai toujours envie d'avoir le plus up-to-date information, j'ai pensé que je pourrais vider le tampon d'entrée à l'aide de flushInput(), mais lorsque la commande est exécutée, je ne peux plus lire de la série. J'ai essayé seulement de rinçage de 51 fois (parce que 51 est un nombre premier et je peux facilement compter 51 fois avec un compteur sans avoir à le réinitialiser), de sorte que l'Arduino aurait suffisamment de temps pour envoyer le prochain paquet de données (course à 57600 bauds), mais ne fonctionne toujours pas. À savoir, j'ai utilisé une variable pour stocker la longueur de la ligne de lecture date limite d'utilisation(), mais, dès que j'ai touché 51 et l'entrée buffer est vidé, j'ai toujours obtenir une lecture de 0, ce qui signifie qu'il n'est pas de lire n'importe quoi. J'ai lu dans la documentation de pySerial, mais n'ai pas trouvé d'informations pertinentes. Ne flushInput() mettre fin à la connexion série ainsi? Merci beaucoup.

EDIT: je suis sous Mac OS 10.7.5 et Python 2.7.3

try:
    self.s = serial.Serial("/dev/tty.usbmodemfa131", 57600, timeout = 0)
    self.FlightLoopCB = self.FlightLoopCallback
    XPLMRegisterFlightLoopCallback(self, self.FlightLoopCB, self.interval, 0)
except serial.SerialException:
    self.s = None
    .
    .
    .

    self.length=0
    self.myline=self.s.readline()
    self.length=len(self.myline)
    print "Test: %i %i" % (self.length, self.j)
    if(self.length>=7):
        if(self.myline[0:2]=="R,"):
            if(self.j%51==0):
                self.s.flushInput()

            self.length=len(self.myline)
            self.myline=self.myline[2:6]
            self.myLineBytes=[0,0]

            self.myLineBytes[0]=unpack('>H', self.myline[0:2])
            self.myLineBytes[1]=unpack('>H', self.myline[2:4])
  • Pourriez-vous poster votre code? Ou au moins la partie d'elle qui ouvre le socket et les bouffées de chaleur de l'entrée?
  • PS: sur quelle plateforme utilisez-vous ce(windows, linux, osx, quelque chose d'autre...)? Comme le pySerial code diffère de l'un à l'autre, ce peut être importante
  • J'ai édité le post.
InformationsquelleAutor Gepapado | 2013-02-23