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

Quelltext Kategorie: Programmierung (von LittleHouse - 1.08.2003 7:34)
Als Antwort auf Re: Probleme beim Datenaustausch von LittleHouse - 1.08.2003 7:08

Huch hab's verrafft:
Hier das zu ober ähnlich Hauptprogramm:


thread main
{
 if (variable.init == 0)
    {
    funktionen.thread_Init();
    if (variable.init == 1)
    station_lcd.print("Bereit...");
    }
   
 run threads.rxd;
 run threads.write_buf;
 run threads.read_buf;
 }




Hier die 3 Threads:

thread read_buf
{
string        s,t,buffer;
int           i,a;

if ((variable.write_ptr > 0) | (variable.write_Runde > 0 ))
   {
   if ((variable.write_Runde > variable.read_Runde) | ((variable.write_Runde == variable.read_Runde) &
 (variable.read_ptr <= variable.write_ptr)))
      {
      i = (variable.write_ptr + variable.write_Runde * 1000) - (variable.read_ptr + variable.read_Runde * 1000);
      if (i >= 8)
         {
         for a = 0 ... 7
             {
             str.putchar(s, variable.e_buf[variable.read_ptr]);
             variable.read_ptr = variable.read_ptr + 1;
             }
         hwcom.print(s);
         s = "";
         }
      else
         {
         for a = 0 ... i-1
             {
             str.putchar(s, variable.e_buf[variable.read_ptr]);
             variable.read_ptr = variable.read_ptr + 1;
             }
         hwcom.print(s);
         s = "";
        
         }
      }
   }
}


thread write_buf
{
int i;
while (hwcom.rxd() == -1)
   {
   variable.e_buf[variable.write_ptr] = hwcom.get();
   variable.write_ptr = variable.write_ptr + 1;

   if (variable.write_ptr == 1001)
     {
      variable.write_ptr = 0;
      variable.write_Runde = variable.write_Runde + 1;
      }
   }
}

thread rxd
{
        wait hwcom.rxd() == -1;
}


Die Funktion:

function thread_Init()
{
hwcom.setspeed(5);
station_lcd.init();
station_io.Clear();
variable.init = 1;
variable.StringLen = 0;
variable.read_ptr =  0;
variable.read_Runde = 0;
variable.write_ptr = 0;
variable.write_Runde = 0;

station_lcd.print("INITIALISIERUNG");
plm.beep(12);
sleep 50;
plm.beep(-1);

sleep 1500;
station_lcd.clear1();
sleep 1000;

}


und die Variablen:

//Variable:
byte e_buf[1000];
int write_ptr, write_Runde;
int read_ptr,  read_Runde;
int StringLen, init;


Also das Problem mit dem Datenaustausch wäre gelöst das lag am mitgesendeten(von Conrad) Kabel.
Chefchen hat mit ein anderes gegeben - jetz gehts!

Nur könnt ihr euch mal den READ Thread anschauen?? Der schickt nämlich immer ne 0 zurück! Aber wieso??


    Antwort schreiben


Antworten:

Re: Quelltext (von André H. - 2.08.2003 14:41)
    Re: Quelltext (von LittleHouse - 4.08.2003 11:44)
        Re: Quelltext (von André H. - 4.08.2003 12:09)
            Re: Quelltext (von Rolf - 4.08.2003 16:31)
                Re: Quelltext (von Burkhard Fischer - 4.08.2003 20:44)
                    Re: Quelltext (von Rolf - 4.08.2003 21:13)
            Re: Quelltext (von LittleHouse - 4.08.2003 12:30)
                Re: QuelltextTastatur (von Thomas - 5.08.2003 12:56)
Re: Quelltext (von Cris - 1.08.2003 17:45)