Also an sich sollte das Funktionieren ja? Dann kann ich mir nur vorstellen das es an der PCIE liegt die das Problem verursacht den normale Texte ohne Zeichen wiederholung funktionieren ja auch. OK danke sehr für den Tip ich werde das mal Testen und das Script erweitern
LG
Pyton 3 Serial Fehler
Ok,
nachdem ich jetzt im Hyperterminal, bei Zeilenverzögerung und Zeichenverzögerung jeweils 1 Millisekunde hinzugefügt habe scheint es zu funktionieren.
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
============= RESTART: C:\Users\x\Documents\script\test 2.py =============
COM1
Test Daten Test Daten Test Daten Test Daten
Test Daten Test Daten Test Daten Test Daten
Test Daten Test Daten Test Daten Test Daten
Eine Textdatei lasse ich mir auch erstellen, muss nur noch herausfinden wie immer eine neue erstellt wird wenn ich das script neu starte.
Aufjedenfall vielen Dank für eure Hilfe.
LG
nachdem ich jetzt im Hyperterminal, bei Zeilenverzögerung und Zeichenverzögerung jeweils 1 Millisekunde hinzugefügt habe scheint es zu funktionieren.
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
============= RESTART: C:\Users\x\Documents\script\test 2.py =============
COM1
Test Daten Test Daten Test Daten Test Daten
Test Daten Test Daten Test Daten Test Daten
Test Daten Test Daten Test Daten Test Daten
Eine Textdatei lasse ich mir auch erstellen, muss nur noch herausfinden wie immer eine neue erstellt wird wenn ich das script neu starte.
Aufjedenfall vielen Dank für eure Hilfe.
LG
Code: Alles auswählen
import serial, time
ser = serial.Serial()
ser.baudrate = 19200
ser.port = 'COM1'
ser.timeout = 1
ser.open()
if ser.isOpen():
print (ser.name)
while True:
serial_line = ser.readline()
if len(serial_line) > 0:
print(serial_line.decode(encoding='utf-8',errors='replace'))
time.sleep(1)
date = time.strftime("%d.%m.%Y")
log = str(serial_line.decode(encoding='utf-8'))
f = open(r"C:\Users\x\Desktop\Test\Messung.txt", "a")
f.write(log)
f.close()
Hallo nochmals,
habe nochmal eine Frage, da das ja jetzt läuft hätte ich gerne eine möglichkeit beim erneuten Ausführen des Scriptes das immer eine neue .txt erstellt wird ohne die alte .txt zu überschreiben oder was hin zu zu schreiben. Momentan füge ich immer nur neues hin zu.
Würde gerne auch das Aktuelle Datum im Namen haben aber habe noch keine passende Lösung gefunden.
Habt ihr nen Tip dazu?
habe nochmal eine Frage, da das ja jetzt läuft hätte ich gerne eine möglichkeit beim erneuten Ausführen des Scriptes das immer eine neue .txt erstellt wird ohne die alte .txt zu überschreiben oder was hin zu zu schreiben. Momentan füge ich immer nur neues hin zu.
Würde gerne auch das Aktuelle Datum im Namen haben aber habe noch keine passende Lösung gefunden.
Habt ihr nen Tip dazu?
@AnDre86: am besten öffnet man Dateiobjekte mit `with`:
da das Protokoll doch wahrscheinlich zeilenbasiert ist, macht das timeout hier nicht wirklich Sinn:
Zu Deiner Frage: Dateinamen sind auch nur Strings, so dass man sie einfach mit Variablen zusammen formatieren kann.
Code: Alles auswählen
with serial.Serial('COM1', 19200, timeout=1) as ser:
while True:
serial_line = ser.readline()
if serial_line:
log = serial_line.decode('utf-8')
print(log)
with open(r"C:\Users\x\Desktop\Test\Messung.txt", "a") as f:
f.write(log)
Code: Alles auswählen
with serial.Serial('COM1', 19200) as ser:
while True:
serial_line = ser.readline()
log = serial_line.decode('utf-8')
print(log)
with open(r"C:\Users\x\Desktop\Test\Messung.txt", "a") as f:
f.write(log)
Das ist aber eine sehr kurze und elegante Lösung.
Hab mir die ganze Zeit schon nen Kopf zerbrochen wie ich aus dem Loop komme.
Jetzt hab ich aber noch eine Frage dazu, das wird ja nur einmal ausgeführt was mache ich wenn ich aber in 3 kurzen Zeitabständen 3 mal Daten gesendet bekomme ohne immer wieder das Script neu öffnen zu müssen?
Danke für eure Hilfe.
Hab mir die ganze Zeit schon nen Kopf zerbrochen wie ich aus dem Loop komme.
Jetzt hab ich aber noch eine Frage dazu, das wird ja nur einmal ausgeführt was mache ich wenn ich aber in 3 kurzen Zeitabständen 3 mal Daten gesendet bekomme ohne immer wieder das Script neu öffnen zu müssen?
Danke für eure Hilfe.
Mein fehler funktioniert so gut.
Habs auch mit dem Datum hinbekommen.
Dann steht die Grund Funktion sehr schön, danke allen für die Hilfe. Dann kann ich es ja nach und nach ausbauen.
LG
Habs auch mit dem Datum hinbekommen.
Code: Alles auswählen
date = time.strftime("%d.%m.%Y")
with open(r"C:\Users\x\Desktop\Test\{date}.txt".format(**vars()), "a") as f:
f.write(log)
LG
Zuletzt geändert von AnDre86 am Freitag 5. Januar 2018, 11:37, insgesamt 1-mal geändert.
@AnDre86: mach es explizit:
um die Dateien richtig sortiert zu bekommen, wird das Jahr immer als erstes ausgegeben:
Code: Alles auswählen
with open(r"C:\Users\xx\Desktop\Test\{date}.txt".format(date=date), "a") as f:
f.write(log)
Code: Alles auswählen
date = time.strftime("%Y.%m.%d")