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

Re: Daten über RS232 Kategorie: Programmierung (von Alex - 6.03.2006 12:34)
Als Antwort auf Re: Daten über RS232 von Matthias Koch - 28.02.2006 19:48
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.0
> > Hallo!
> >
> > Ich versuche von Matlab aus einen Integerwert über RS232 an die CControl zu schicken, aber
> > sobald die Daten im Eingangspuffer anliegen(überprüft mit hwcom.rxd()) komme ich nicht zu den
> > nachfolgenden Anweisungen, statt dessen wird ein Reset des main Threads durchgeführt. Bitte um Hilfe!
> >
> >
> > thread main
> > //---------
> > {
> >   byte i[2];
> >   int w;
> >
> >
> >   //Initialisieren der Schnittstelle
> >   hwcom.init();
> >   hwcom.setspeed(5);
> >   lcdext.init();
> >   lcdext.clear();
> >   lcdext.zahl(10);
> >   sleep 2000;
> >   lcdext.clear();
> >   lcdext.zahl(13);
> >  
> >
> >
> >   loop
> >   {
> >            wait hwcom.rxd();
> >            {
> >                hwcom.receive(i,2,1000);
> >                w = i[0] or (i[1] shl 8);
> >                lcdext.clear();
> >                lcdext.zahl(w);
> >            }
> >    }
> >
> >
> > }
> >  

>
> Guten Abend Alex,
>
> Dein Programm sieht soweit ganz ok. aus. Die Grundstuktur funktioniert bei mir.
> Jedoch würde ich vor wait hwcom.rxd() auf jedenfall ein flush setzen. Etwas nervös machen  mich
> die Klammerung des nichtausgeführten Codes. Falls Du statt dem wait hwcom.rxd()  vormals soetwas
> wie  if hwcom.rxd() {  ...} stehen hattest so muss ich sagen, das eine solche Synconisation auf
> sporadische serielle Daten bei mir auch nicht sehr gut funktionierten (Datenverlust).
>
>  
>  thread main
>  //---------
>  {
>    byte i[2];
>    int w;
>  
>  
>    //Initialisieren der Schnittstelle
>    hwcom.init();
>    hwcom.setspeed(5);
>    lcdext.init();
>    lcdext.clear();
>    lcdext.zahl(10);
>    sleep 2000;
>    lcdext.clear();
>    lcdext.zahl(13);
>   .........
>    hwcom.flush();
>    loop  // Diese LOOP wartet auf serielle Daten von hwcom
>    {
>             wait hwcom.rxd();          
>             hwcom.receive(i,2,1000);
>             w = i[0] or (i[1] shl 8);
>             lcdext.clear();
>             lcdext.zahl(w);
>             ...
>        
>     }
>  ........
>  }
>  

> Gruss Matthias


Hi!

Das Problem war das ich die system0002.hex nicht geladen hatte und somit hwcom.receive()
nicht funktioniert hat.

lg
alex


    Antwort schreiben


Antworten: