Seite 1 von 1

pySerial readline() Python 3

Verfasst: Dienstag 7. März 2017, 18:54
von jofri
Hallo zusammen,

ich arbeite gerade mit dem Windows10, Arduino, pySerial und der Python Version 3. Ich hatte die pySerial Funktion readline() schon in Python 2 benutzt und dort hat sie einwandfrei funktioniert.
Ich sende etwas an den Arduino und er sollte mir etwas zurück geben. Wenn ich es in der Konsole probier funktioniert es auch:
Bild

Doch wenn ich die Funktion in eine Programm benutze stoppt das Programm immer an der readline() Funktion. Hier mal mein Code:

Code: Alles auswählen

import serial

port='COM3'
bauten=9600

serial_port=serial.Serial(port,bauten)

serial_port.write(b'T/r/n')

erg=serial_port.readline()
print(erg)
Das Programm läuft nun theoretisch ewig, sprich es hängt.
Ich habe auch schon versucht es in einem Thread auszuführen:

Code: Alles auswählen

from threading import Thread
import serial
import time

port='COM3'
bauten=9600

serial_port=serial.Serial(port,bauten)



def lesen(ser):
	erg=ser.readline()
	time.sleep(1)
	print(erg)


thread=Thread(target=lesen,args=(serial_port,))

serial_port.write(b'T/r/n')

thread.start()
thread.join()
Also wie kann ich das am besten fixen?

Danke schonmal im Vorraus,

jofri

Re: pySerial readline() Python 3

Verfasst: Dienstag 7. März 2017, 19:28
von jofri
Hier noch der Bildlink: http://imgur.com/a/oAquY (einbettung hat nicht funktioniert)

Re: pySerial readline() Python 3

Verfasst: Dienstag 7. März 2017, 19:40
von BlackJack
@jofri: Was denn für ein Arduino? Was sagt die Dokumentation zu dem wie lange nach dem öffnen der seriellen Schnittstelle man warten muss bis nicht mehr die Firmware auf ein neues Programm wartet und die serielle Schnittstelle für Dein Programm nutzbar ist?

Re: pySerial readline() Python 3

Verfasst: Dienstag 7. März 2017, 19:59
von jofri
Es handelt sich um den Arduino/Genuino Mega. Wie lange er braucht kann ich dir ehrlichgesagt nicht sagen(Hab ne weile in der Doku gesucht, hab in sowas aber auch kein überblick :D)allerdings hatte ich es auch schon mit einem time.sleep(5) versucht und es läuft auf den gleichen fehler hinaus.

Re: pySerial readline() Python 3

Verfasst: Dienstag 7. März 2017, 20:05
von Sirius3
@jofri: b'T/r/n' ist nicht gleich b'T\r\n'.

Re: pySerial readline() Python 3

Verfasst: Dienstag 7. März 2017, 20:27
von jofri
@Sirius3 Okay, danke. Habs damit mal versucht aber ohne Erfolg :c