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

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
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
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: