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