Re: Funktion HWCOM bleibt hängen Kategorie: C-Robotics mit CC2 (von André H. - 21.10.2005 9:03) | ||
Als Antwort auf Funktion HWCOM bleibt hängen von Volker Thom - 19.10.2005 22:21 | ||
| ||
Hallo Volker, Bitte schaue mal in den Modul-Header von hwcom.c2 . Dort steht deutlich, da� noch sys0002.hex geladen werden mu�. Dieser Treiber wird u.a. für hwcom.receive() benötigt. Dieser Treiber wir auch für die Module swcom.c2, mem.c2, sowie strx.c2 benötigt. Beachte bitte, da� die Beispiele aus dem Buch leider nicht mehr aktuell sind,# sondern grö�tenteils auf die alten Module zugeschnitten sind. Das ser2.c2 /************************* Ser2.C2 LCD-Terminal Lesen über hwcom **************************/ //------------ thread main //------------ { string s; hwcom.init (); hwcom.setspeed (hwcom.SPEED_9600); lcdext.init(); lcdext.print("Terminal"); loop { s = " "; wait hwcom.rxd(); hwcom.receive(s,16,1000); lcdext.goto(1,0); lcdext.print(s); wait hwcom.rxd(); lcdext.goto(0,0); lcdext.print(s); } } müsste nun so aussehen: /************************* Ser2.C2 LCD-Terminal Lesen über hwcom **************************/ //------------ thread main //------------ {byte len, s[16]; hwcom.init (); hwcom.setspeed (hwcom.SPEED_9600); lcdext.init(); lcdext.print("Terminal"); loop { wait hwcom.rxd(); len=hwcom.receive(s,16,1000); lcdext.line(2); lcdext.printlength(s,len); wait hwcom.rxd(); lcdext.delline(1); lcdext.delline(2); lcdext.line(1); lcdext.printlength(s,len); } } Ein weiters Beispiel für eine Stringeingabe wäre folgendes: thread main {string s; hwcom.init(); hwcom.setspeed(hwcom.SPEED_9600); lcdext.init(); lcdwext.print("inputstr()-Test"); loop { hwcom.inputstr(s,1); lcdext.line(2); lcdext.print(s); wait hwcom.rxd(); lcdext.delline(1) lcdext.delline(2) lcdext.line(1); lcdext.print(s); } } Hier mu� aber nach jeder Eingabe im Terminal Enter gedrückt werden, damit die Funktion inputstr() abgeschlossen wird. MfG André H. > Hallo, > > ich möchte die Funktion hwcom.receive() verwenden um Antworten eines GSM-Modems zu empfangen. > Dazu teste ich das Porgramms "Ser2.C2" von der CD-ROM des Buches Messen Steuern und Regeln > mit C-Control2. Mit dabei ist ein gutes Terminalprogramm über das man gute Kontrolle über die > Handshakeleitungen RTS/CTS und die weiteren hat. > > So nun endlich zum Problem: Es sieht so aus, als ob das Porgramm in der Funktion hwcom.receive() > hängenbleibt! > ich setze vor dem Aufruf der Funktion einen Ausgangsport an dem ich eine LED angeschlossen habe > und nach dem die Funktion verlassen wird setze ich ihn zurück. > Wenn ich nun über das Terminalprogramm ein Zeichen sende, leuchtet die LED geht aber nicht mehr aus. > Somit komme ich aus der Funktion nicht mehr heraus! Aber wieso? > Auf das Display wird auch nichts geschrieben. > > Ich hoffe es kann mir jemand von Euch weiterhelfen. Im voraus schon mal vielen Dank. > > Ich benutze das aktuelle OS V3.0 und das neuste Modul hwcom. > > Anbei der Quelltext: > > //------------ > thread main > //------------ > { > string s; > > hwcom.init (); > hwcom.setspeed (hwcom.SPEED_9600); > lcdext.init(); > lcdext.print("Terminal"); > loop > { > s = " "; > wait hwcom.rxd(); > ports.set(12,1); // LED setzen > hwcom.receive(s,16,1000); // besagte Funktion > sleep (100); > ports.set(12,0); //LED rücksetzen -> wird nie gemacht! > lcdext.goto(1,0); > lcdext.print(s); > wait hwcom.rxd(); > lcdext.goto(0,0); > lcdext.print(s); > } > } > Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: |