Re: synchronisiertes Auslesen von hwcom Kategorie: Programmierung (von Felix W. - 12.11.2003 14:37) | |
Als Antwort auf Re: synchronisiertes Auslesen von hwcom von Tom - 10.11.2003 10:00
| |
Hallo Tom! Erstmal danke für die Antwort! Leider hat mich dein Tip auch nur bedingt weitergebracht. Hab ihn erst so übernommen, dann hat aber mein Programm den ersten Befehl gesendet und dann anscheinend vergeblich auf eine Antwort gewartet. Dann hab ich das wait in der Schleife durch ein while ersetzt, dann funktioniert es leidlich, aber was mich wundert, ist, dass die zur CControl zurückgesendeten Bytes anscheinend nur unregelmä�ig ausge- lesen bzw. angezeigt werden. Parallel überwache ich den Datenverkehr mit einem Terminalprogramm und finde die dort angezeigten Bytes auf meinem Display nur vereinzelt vor. Liest denn hwcom.get() die Bytes sequenziell, also bei jedem Aufruf das nächste? Und löscht hwcom.flush() den gesamten Eingangspuffer oder immer nur ein Byte? Da die Befehle und Schlüsselwörter von C2 im Handbuch z.T.nur recht dürftig erklärt werden: Gibt es eigent- lich eine ausführlichere Dokumentation? Danke im Voraus! Felix > Hallo Felix, > > ich hab das Ganze bei mir gerade getestet, so läufts: > > function Connection (string outp) > { > string Send; byte errnumber,i; > if str.length(outp)==0 return; > station_lcd.clear(); > station_lcd.cursorpos(1,0); > errnumber=0; > wait hwcom.ready(); > Send=2+outp+3; > hwcom.send (Send, str.length(Send)); > for i = 0...6 > { > wait hwcom.rxd(); > errnumber=hwcom.get(); > s=""; > str.putint(s,errnumber); > station_lcd.print(s); > hwcom.flush(); > } > } > > > > mfg Tom > > > > Hallo, > > > > über hwcom sende ich einen String, der vom anderen Gerät umgehend beantwortet wird, und zwar > > im immer gleichen Format (als ASCII-Zeichen): 6 6 (Wiederholung meines gesendeten Strings). > > Diese Antwort möchte zur Veranschaulichung im Byte-Format im LCD-Display anzeigen. > > Dazu habe ich folgende Funktion geschrieben: > > > > > > function Connection (string outp) > > { > > string Send; byte errnumber,i; > > if str.length(outp)==0 return; > > station_lcd.clear(); > > station_lcd.cursorpos(1,0); > > errnumber=0; > > wait hwcom.ready(); > > Send=2+outp+3; > > hwcom.send (Send, str.length(Send)); > > wait hwcom.rxd(); > > for i = 0...6 > > {errnumber=hwcom.get(); > > s="";str.putint(s,errnumber); > > station_lcd.print(s);} > > hwcom.flush(); > > } > > > > > > Nach meinem Ermessen müsste im Display immer linksbündig eine Zahlenkolonne synchron beginnend > > mit "66" erscheinen. Tut sie aber nicht, obwohl ich ja immer nach dem Auslesen den Eingangspuffer lösche. > > Die Anzeige setzt scheinbar immer irgendwo mitten in der Antwort ein, meistens genau nach der "66", und > > auch scheinbar immer einen Befehl verspätet, d.h. ich sehe immer den Befehl, den ich im Durchlauf vorher > > gesendet hatte. > > Was ist falsch? > > > > Vielen Dank! > > > > Felix | |
Antwort schreiben Antworten: Re: synchronisiertes Auslesen von hwcom (von Felix W. - 12.11.2003 19:45) Re: synchronisiertes Auslesen von hwcom (von André H. - 13.11.2003 0:32) Re: synchronisiertes Auslesen von hwcom (von Felix W. - 13.11.2003 8:29) Re: synchronisiertes Auslesen von hwcom (von André H. - 15.11.2003 21:37) |