Ich sende im Extremfall "viele" Zeichen - Theoretisch ist eine ganze Litanei möglich. Wenn die Steuerzeichen-Markierung kommt - die steht am Anfang einer Steuersequenz - dann wird das erste Steuerzeichen-flag gesetzt und der folgende String in einem separaten Empfangsfeld abgelegt. Dieses Feld ist größer als die längste Steuersequenz. Wird das Steuerstring-Ende erkannt, wird das zweite Steuerzeichenflag gesetzt.Zitat von MDKMurdoc
Der Steuerstring bleibt im Empfangsfeld stehen bis er von einer Routine ausgelesen wird. Nach dem Auslesen werden die Steuerzeichenflags zurückgesetzt. Damit ist gesichert, dass ein empfangener String ausgelesen wird. >>> Kommt ein neuer Steuerstring an, bevor der alte ausgelesen wird, dann wird der nicht mitgeschnitten ! ! <<< Das ist aber bei der Schnelligkeit meiner main-Routine (und deren Unterroutinen) kaum möglich.
Natürlich, sonst wär das Ganze ja witzlos. Ich empfange die Zeichen mit einer Interruptroutine. >>> Daher auch die Geschichte mit den Steuerflags - die u.a. auch verhindern, dass während des Lesens ein neuer Steuerstring eingeschrieben wird - oder dass nur ein Teilstring ausgewertet wird.<<< Damit umgehe ich auch das von for_ro dargestellte Problem mit 1 und 10. Übrigens hat for_ro ja auch ein Merkmal um einen vollständigen String zu erkennen. Allerdings mache ich das eben in C und for_ro beschreibt ja eine Lösung, die in Basic funktioniert und auch interruptgesteuert abläuft. Ich kann kein Bascom - hatte ich ja geschrieben.Zitat von MDKMurdoc
Lesezeichen