Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: synchronisiertes Auslesen von hwcom Kategorie: Programmierung (von Felix W. - 12.11.2003 19:45)
Als Antwort auf Re: synchronisiertes Auslesen von hwcom von Felix W. - 12.11.2003 14:37

Nochmal Hallo Tom,

habs jetzt selber rausgefunden. Dein Original-Listing, aber hwcom.flush erst nach der Schleife
und zur Sicherheit nochmal unmittelbar vor der nächsten Sendung von der CControl.
Dann startet meine Anzeige immer synchron mit "6 6".
Aber die C2-Dokumentation seitens Conrad könnte schon etwas ausführlicher sein!

Danke vielmals!

Felix


> 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 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)