Pyton 3 Serial Fehler

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

@AnDre86: am besten öffnet man Dateiobjekte mit `with`:

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)
da das Protokoll doch wahrscheinlich zeilenbasiert ist, macht das timeout hier nicht wirklich Sinn:

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)
Zu Deiner Frage: Dateinamen sind auch nur Strings, so dass man sie einfach mit Variablen zusammen formatieren kann.
AnDre86
User
Beiträge: 31
Registriert: Dienstag 2. Januar 2018, 14:35

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

@AnDre86: das verstehe ich nicht, Du hast doch eine Endlosschleife.
AnDre86
User
Beiträge: 31
Registriert: Dienstag 2. Januar 2018, 14:35

Mein fehler funktioniert so gut. :)

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)
Dann steht die Grund Funktion sehr schön, danke allen für die Hilfe. Dann kann ich es ja nach und nach ausbauen.

LG
Zuletzt geändert von AnDre86 am Freitag 5. Januar 2018, 11:37, insgesamt 1-mal geändert.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@AnDre86: mach es explizit:

Code: Alles auswählen

with open(r"C:\Users\xx\Desktop\Test\{date}.txt".format(date=date), "a") as f:
    f.write(log)
um die Dateien richtig sortiert zu bekommen, wird das Jahr immer als erstes ausgegeben:

Code: Alles auswählen

date = time.strftime("%Y.%m.%d")
AnDre86
User
Beiträge: 31
Registriert: Dienstag 2. Januar 2018, 14:35

ok alles klar :)
Antworten