Na, ich denke, Du weist schon, speziell bei Inkey() mag das jetzt nicht der Fall sein.
Muss zugeben, das wusste ich auch nicht genau, nur ergab sich aus der Hilfe:Ich weiss nämlich nicht, was Bascom bei Soft-Uart "Inkey()" genau generiert.
dass Inkey() nicht-blockierend wirkt und lustig weitermacht, wenn nichts ansteht. Ob etwas ansteht, kann bei Soft-UART sowieso nur aktiv per Polling festgestellt werden (außer man verwendet Intx).If there is no character waiting, a zero will be returned.
Daraus ergab sich, dass es im Pogrammablauf sehr unwahrscheinlich ist, dass das einzelne Inkey() gerade da kommt, wenn das Startbit vom PC kommt. Es gibt ein Beispiel dazu, "open.bas" im Samples-Ordner, da wird Inkey() in 'ner Do/Loop gepollt.
Aber um auch sagen zu können, was Inkey() tatsächlich macht, hab' ich's mir angesehen.
Wenn der Pin auf High liegt, liefert es eine 0 zurück, wenn er auf Low liegt, wird die Soft-UART Empfangsroutine ausgeführt.
Bei Deinem Code ist die Schleifenabbruchbedingung x = 0. Aus dem Gesagten ergibt sich, dass dies sehr wahrscheinlich gleich beim ersten Durchlauf zutrifft, die Schleife also sofort verlassen wird.
Waitkey() hingegen würde darauf warten, dass der Pegel Low geht, blockiert aber wenn nix über die Serielle kommt den weiteren Ablauf, deswegen mein Vorschlag mit dem Timeout.
Lesezeichen