pySerial readline() Python 3

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jofri
User
Beiträge: 4
Registriert: Dienstag 7. März 2017, 18:32

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
Zuletzt geändert von Anonymous am Dienstag 7. März 2017, 19:37, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
jofri
User
Beiträge: 4
Registriert: Dienstag 7. März 2017, 18:32

Hier noch der Bildlink: http://imgur.com/a/oAquY (einbettung hat nicht funktioniert)
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?
jofri
User
Beiträge: 4
Registriert: Dienstag 7. März 2017, 18:32

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.
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@jofri: b'T/r/n' ist nicht gleich b'T\r\n'.
jofri
User
Beiträge: 4
Registriert: Dienstag 7. März 2017, 18:32

@Sirius3 Okay, danke. Habs damit mal versucht aber ohne Erfolg :c
Antworten