Arduino - Phyton - Problem mit read in Python

Liebe Arduinogemeinde,

ich habe voller Elan damit begonnen, die LED meines Arduinos über Python zu steuern. Das Ziel ist es, mittels Python einen Wert über den seriellen Port an das Arduino zu senden. Der Wert hat das Format ABB, A steht für LED an (=1) oder aus (=0) und BB für die Zeit in Zehntelssekunden. Hat das Arduino mit diesem Wert die LED zum leuchten oder eben nicht-leuchten gebracht, gibt es ein "r" an den seriellen Port zurück, um dem Pythonscript mitzuteilen, dass es "ready" für den nächsten Befehl ist. Wahrscheinlich verpasst das Python-Script ab und zu dieses r (aus einem mir unbekannten Grund, denn manchmal geht auch alles gut) und die ganze Geschichte bleibt dann hängen.

Was mach ich falsch, oder wie krieg ich das hin?

Arduino-Script:

int led = 13;

void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  }


void loop() {
   String empfangenerString = empfangen();
   String anab;
   String dauer;
   char eingabe[4];

   empfangenerString.toCharArray(eingabe,4);
   
   for (int i=0;i<1;i++) {
   anab += char(eingabe[i]);
   }
   
   for (int i=1;i<3;i++) {
   dauer += char(eingabe[i]);
   }
   
   unsigned long dauerform = dauer.toInt() * 100;
   
   if (anab.equals("0")) {
      digitalWrite(led, LOW);
      delay(dauerform);
      Serial.println("r");
      }
      
      
   if (anab.equals("1")) {
      digitalWrite(led, HIGH);
      delay(dauerform);
      Serial.println("r");
      }

   else {
      }
   }

   String empfangen() {
      if(Serial.available()) {
         String inString;
         while(Serial.available()) {
            inString += char(Serial.read());
            delay(10);
            }
         return inString;
         }
      return "";
      }

und das Testscript in Python:

import serial as s
import time as t

def sandw(output):
	ready = 0
	port = s.Serial('/dev/tty.usbmodem621', 9600, timeout=0)
	port.write(output)
	while ready != "r":
		ready = port.readline(1)
	return
	
for i in range(5):	
	sandw("010")
	sandw("102")
	sandw("010")
	sandw("103")
	sandw("010")
	sandw("101")

Wäre super dankbar für jede Hilfe!

Sorry that I cannot write it in German, hopefully google translate is good enough.
Look at my comment here for your python script: Problems with serial port and Python - #3 by system - Programming Questions - Arduino Forum
Also, Serial.println(1) is actually sending 1\n. So, your python script is reading one byte 'r'. The next time it reads from the serial port, it reads '', then 'n'. It would be best to do Serial.write(1) or change your python script to readline(). This will continually read till timeout or if it reads \n.