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) |