PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom Software Uart Inkey Fehler



Furtion
18.10.2008, 23:45
Hi,

ich habe hier grade eine kleine Kriese mit Bascom und zwar benutze ich den
Soft Uart und lese Daten per Inkey() ein, und gebe sie dann per Hard Uart
weiter, die Daten wertden quasi durchgeleitet.

DAS Problem ist nur wenn ich 0 sende (also nicht das Zeichen "0" ) sondern
Print Hex (0) das ist nichts, kA wie man das besser beschreiben kann.
Vill. trifft es, das Erste Zeichen an AscII Tabellen besser....

Gut Waitkey() funktioniert, wenn man null abschickt kommt auch null an.

Aber Inkey() gibt den Wert 0 zurück wenn es nichts empfangen hat...
Was soll Inkey zurückgeben, wenn es Hex(0) empfängt?

Gibt es da iWas was man machen kann?

Wenn wir grade dabei sind: Ischarwaiting(#Channel) kann man laut meiner
Interpreation der Beschreibung auch für Soft Uarts beutzen, warum gibt
Bascom dann ein Fehler aus, das der Soft Uart nicht unterstützt wird?

linux_80
19.10.2008, 02:45
Hi,

ich denke mal das liegt Grundsätzlich an Soft-UART, hier gibts ja keinen Eingangspuffer wie bei Hard-UART, deswegen kann man das nicht abfragen.
IIRC muss man bei Soft-UART immer aktiv mitlauschen damit nichts verschluckt wird. Mit Waitkey ist man wohl besser dran. :-k

Furtion
19.10.2008, 09:36
Hi,

jo der Soft-Uart mag vill. nicht umbedingt der tollste sein, aber Inkey()
sollte doch funktionieren, ich denke auch, das das beim HardUart nicht gehen
wird, denn da liefert Inkey() ja auch 0 zurück wenn er nichts empfangen hat,
wenn man aber Null sendet, hat es logischerweise auch den Wert 0, d.h.
es gibt 2 verschiedene Zustände, die den gleichen Wert habe....

linux_80
19.10.2008, 13:33
Hi,

Du kannst bei SoftUART normalerweise nicht warten bis was gekommen ist, Du musst schon immer mitlauschen am UART, deswegen geht da Inkey nicht.
Waitkey wartet solange bis was kommt, also ist ein 0 auch eine 0.

Bei Hard-UART, macht das, wie der Name sagt, die Hardware, und wenn ein Byte fertig übertragen ist, kann man checken ob eins da ist, oder eben nicht. Bei Software geht das nicht, da kein Byte kommt wenn man nicht selber die Bytes reinschiebt in die Software vom EingangsPort !

Furtion
19.10.2008, 15:19
Hi,

Was ist, wenn man per Waitkey() wartet, und dann die Daten empfängt,
das Problem was ja besteht, ist, das die Gegenrichtung (HardUart---> Soft)
auch noch abgefragt werden will. Könnte man das dann per Timer machen?
Das der per Ischarwaiting schaut ob ein Zeichen im Hardbuffer liegt und es
dann holt, oder wieder zu waitkey geht.

Vitis
19.10.2008, 20:02
oder per interrupt

on urxc

linux_80
19.10.2008, 21:45
Der Hard-UART kann man per Config Serialin einen "asynchronen" Empfang, mit Puffer, beibringen.
Siehe Bascom-Hilfe.

bugmenot
10.11.2010, 14:24
Nur fürs Archiv:

So kann man auch NULL (&b00000000) am Softwareuart erkennen:





Open "comd.5:2400,8,n,1" For Input As #2

inputbin #2, buffer(1), 25