# thread_test_4.py

# Im Hauptprogramm (Thread_0) wird jede Sekunde count um 1 erhöht, das Ergebnis ausgegeben
# und in der Datei test2.txt gespeichert (angehängt).
# Im Thread_1 wird die Funktion blink() ausgeführt: LED an Pin25 blinkt mit 25 Hz.
# Im Thread_2 wird die Funktion test() ausgeführt: Jede 0,3 s wird die Datei test2.txt
# und ihr Inhalt ausgegeben.

# 3 Threads: main, test, blink

import time
import _thread
from machine import Pin
from time import sleep

# Initialisierungen
lock = _thread.allocate_lock()
file = open("test2.txt", "w") # bestehende Datei löschen...
file.write('0 ')              # ... und '0 ' speichern
file.close()

def blink():
    led = Pin(25, Pin.OUT)    
    while True:
        led.value(1)
        sleep(0.02)
        led.value(0)
        sleep(0.02)    

def test():
    while True:
        with lock: # mit Sperren (MUTEX) ausführen...
            with open("test2.txt", "r") as file: # automatisches close
                print('Lesen: ', file.read())
        time.sleep(0.3)

# Funktion test() vom 2. Kern ausführen lassen
_thread.start_new_thread(test, ())

_thread.start_new_thread(blink, ())

# Hauptprogramm (Sekundenzähler mit Schleife)
count = 0
while True:
    time.sleep(1)
    with lock: # s. o.
        count += 1
        with open("test2.txt", "a") as file: # automatisches close
            print('Schreiben: ', count)
            file.write(str(count)+' ')
