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

Problem mit hwcom Sende und Empfangsthread Kategorie: Programmierung (von ACU, http://www.roboterbastler.de - 30.12.2005 17:06)
Ich nutze:
C-Control II Unit, OSOPT V3.0
Hallo!

Ich übertrage zwischen meinem Roboter (C-Control2) und einem Windows Programm (in C++) Daten.
Dazu verwende ich RNFUNK Module (Transceiver).
Roboterseitig laufen zwei Threads für die Schnittstelle (serielle).
Einer zum senden und einer zum empfangen.
Wenn ich den Sendethread anhalte, kommen meine Befehle vom Roboter super rüber.
Es gibt keine bzw. fast keine Ã?bertragungsfehler. Wenn ich aber den Sendethread parallel laufen
 lasse, muÃ? ich alles 20zig Mal senden, bis einmal korrekt übertragen wurde.
Ich hoffe ihr könnt mir helfen.

Hier meine Threads:


thread Empfang
{
 int Byte;
 int Length;
 int Switch;
 int iDaten;
 int Motorlinks,Motorrechts;
 Switch=1;
 string Header,Daten,Sendstring;
 loop
 {
 wait hwcom.rxd();
 lcdext.clear();
 Byte=hwcom.get();
 if (Byte==58)
 {
   iDaten=strx.getNum(Daten);
  if strx.comp(Header,"Halt")
  {
   if (iDaten==1)
   {
    motor.speedl(0);
    motor.speedr(0);
   }

   if (iDaten==0)
   {
    motor.speedl(1023);
    motor.speedr(1023);
   }
  }
    if strx.comp(Header,"Beep")
  {
       if (iDaten==1)
       {
        run Beep;
       }
       
       if (iDaten==0)
       {
        halt Beep;
        plm.beep(-1);
       }
 }
 lcdext.clear();
 lcdext.print(Header);
 lcdext.line(2);
 lcdext.print(Daten);
 str.clear(Daten);
 str.clear(Header);
 Switch=1;
 continue;
 }

 if (Byte==61)
 {
  Switch=2;
   lcdext.clear();
  continue;
 }
 if (Switch==1) Header=Header+Byte;
 if (Switch==2) Daten=Daten+Byte;

 }



thread Senden
{
string Fertig,Daten;
str.putfloat(Daten,sensor.RDistanz());
Fertig="liS"+"="+Daten+":";
hwcom.print(Fertig);
str.clear(Daten);
str.putfloat(Daten,sensor.LDistanz());
Fertig="reS"+"="+Daten+":";
hwcom.print(Fertig);
str.clear(Daten);
str.clear(Daten);
str.putint(Daten,variablen.Ultra);
Fertig="uS"+"="+Daten+":";
hwcom.print(Fertig);
Fertig="mli"+"="+variablen.Mlinks+":";
hwcom.print(Fertig);
Fertig="mre"+"="+variablen.Mrechts+":";
hwcom.print(Fertig);
str.clear(Daten);
sleep 100;
}




Zum Verständis ist noch zu sagen, dass ich die Daten im Format:
Ziel=Werte: übertrage.
Wenn ein = empfangen wurde, werden die Bytes zu Daten hinzugefügt, wenn ein :
empfangen wird, erfolgt die
Auswertung und es wird zurückgesetzt.


Wäre toll, wenn mir jemand helfen könnte.

MfG ACU


Meine Seite: http://www.roboterbastler.de


    Antwort schreiben


Antworten:

Re: Problem mit hwcom Sende und Empfangsthread (von André H. - 8.01.2006 15:51)