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 Matthias Koch - 28.02.2006 19:48)
Als Antwort auf Daten über RS232 von Alex - 28.02.2006 10:54
Ich nutze:
eigenes 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


    Antwort schreiben


Antworten:

Re: Daten über RS232 (von Alex - 6.03.2006 12:34)