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

Synchronisation Kategorie: Programmierung (von JensD - 21.08.2003 15:07)


Hallo da drauÃ?en

Ich habe 2 Sender (TRX433) und 1 Empfänger(TRX433). Beide Sender laufen einzeln betrieben
korrekt, wenn ich jedoch beide anschlie�e gibt mir die Empfängereinheit zwar Daten auf den
PC aus, jedoch nicht exakt die die ich gesendet habe. Versuche zur Synchronisation
(capture,release) waren bisher nicht so erfolgreich.Sollte man die Programmroutine zum
Empfang der Daten für jeden Sender in einen eigenen thread packen? Grundidee war die
Daten beider Sender auf der Empfängerseite in einen String zu schreiben und auf meinen PC
auszugeben.Wer kann mir ein paar Tips geben?

Mfg Jens

Zuerst ein "kleiner" Quellcode zu meiner TRX433 Empfängereinheit

string s;
string a;
int B,i;
int anzString;    //zur Längenbestimmung des strings 's',
const LO = 0;
const HI = -1;

/*------------------------------------------------------------------------------
  -----------------------thread empfang-----------------------------------------*/
thread empfang
{

loop
    {
      if ports.get(trx.DATA) == HI    //Frame angekommen?
      {
       trx.TRX_RECEIVE();    
       s = "";                

       B=trx.ADDR;                     //Sender1
       str.putint(s,B);  
       str.putstring(s,"/");  

//     Anzeige DB6 Sender 1
       B=trx.DB6;
       str.putint(s,B);
       str.putstring(s,"+");

//     Anzeige TXADDR Sender 2
       B=trx.ADDR;  
       str.putint(s,B);
       str.putstring(s,"-");  

//     Anzeige DB5 Sender 2
       B=trx.DB5;
       str.putint(s,B);
       str.putstring(s,"?");

       lcd.clear();
       lcd.print(s, str.length(s));    
       }
    }
}

/*----------------------------------------------------------------------------------
  -------------------------------thread sendenanpc----------------------------------*/
thread sendenanpc
{
anzString=12;   //nur zum testen

    if str.length(s) == anzString                                    
       {
// Baudrate einstellen, Standardeinstellung 9600 Baud
       hwcom.setspeed(5);

// Zeichenkette ueber HWCOM ausgeben
       hwcom.send(s, str.length(s));
       halt;      //weiss nicht ob wirklich richtig(will nur eine Ausgabe auf Hyperterminal)
     }
}

/*------------------------------------------------------------------------------
  ---------------------------thread main----------------------------------------*/
thread main
{
         lcd.clear();
// ------------- Startanzeige -------------------------
         a = "DemoTRX433";
         lcd.print(a, str.length(a));    

         lcd.goto(1, 0);

         a = "Empfang";
         lcd.print(a, str.length(a));

         sleep 5000;
         lcd.clear();
//---------------- TRX 433 Initialisierung -----------------------
         trx.TRXreset();                
         trx.CH2set();                  
         trx.PWR4set();                
         trx.ADDRset(100);           //Empfängeradresse 100

// ------- Thread Empfang ------------------------------------
         
         run empfang;
         
// ------- SENDE DATEN AN PC ---------------------------------

         run sendenanpc;
}


nun noch ein Quellcode zur Sendeeinheit(habe 2 Sender,bis auf Adresse und Datenbit alles gleich)

string s;
string a;
int test1;

/*------------------------------------------------------------------------------
  -------------------------thread senden an empfänger---------------------------*/
thread senden
{
test1=6;      //nur Hilfsvariable

loop
          {
          trx.ADDR=100;      //Adresse des Empfängers(immer 100)
          trx.DB0=trx.DB0+1;

     /*   trx.DB5=test2;   // wird als 2. Datenbit übertragen   */    (für Sender 2)
          trx.DB6=test1;   // wird als 1. Datenbit übertragen

          trx.TRX_SEND();
          }
}

/*------------------------------------------------------------------------------
  -------------------------thread main------------------------------------------*/
thread main
{

         lcd.init();

         a = "DemoTRX433";
         lcd.print(a, str.length(a));

         lcd.goto(1, 0);

         a = "Sender1";
         lcd.print(a, str.length(a));
//---------------- TRX 433 Initialisierung -----------------------
         trx.CH2set();            
         trx.PWR4set();        
         trx.ADDRset(133);        //Senderadresse 133(Sender 2 hat 166)
         
         run senden;
         sleep 500;
}


    Antwort schreiben


Antworten:

Re: Synchronisation (von André H. - 22.08.2003 12:19)
    Re: Synchronisation (von JensD - 25.08.2003 13:59)
    Re: Synchronisation (von JensD - 22.08.2003 12:55)