Re: Serielle Schnittstelle V24 Kategorie: Programmierung (von reneforster - 7.03.2010 17:59) | ||
Als Antwort auf Serielle Schnittstelle V24 von Torsten - 6.03.2010 12:12 | ||
| ||
Hallo Torsten, anbei mein funktionierendes Beispiel, vergleiche mit deinem und ändere entsprechend ab. Ich sende immer 10 stellige Datensätze vom PC zur Control, im nachfolgenden Emfangsthread werden diese dann aufbereitet, bzw. anderen Programmteilen zur Verfügung gestellt. im Main Thread so ähnlich hwcom.init();hwcom.setspeed(6); im Emfangsthread dann so: /****************************************************************************** Eingsdaten erfassung vom Server ******************************************************************************/ thread ein232 { // Varis definieren und setzen ------------------------------------------------- int Befehl; string s,b,l; Befehl=0; s=" ";b=" ";l=" "; loop { global.watchdog1=1;hwcom.flush(); s=" ";b=" ";l=" "; wait hwcom.rxd(); hwcom.receive(s,10,50); // nur gültige Datensätze in die Verarbeitung schicken +++++++++++++++++++++++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ b="AD" ; if strx.compsel(s,b,2,0) { // wenn am Anfang ein "AD" ist b="E" ; if strx.compsel(s,b,1,9) { // wenn an letzter Stelle ein "E" ist stports.togLED(5); // Anzeige RS232 Empfang an LED 5 ---------------- // Rolladen Befehle / Datensätze ----------------------------------------- b="200" ; if strx.compsel(s,b,3,2) { // Datensätze mit 200 ----------- strx.mid(s,l,5,4); // Befehlsnummer in String l global.BeRo=strx.getNum(l); // String l in Integer umwandeln continue;} // Für Control Keller ------------------------------------------------ b="22" ; if strx.compsel(s,b,2,2) { // Datensätze mit 22 ------------ global.BeCa=2;global.DaCa2=s ;continue;} // Für Control Heizung ------------------------------------------------ b="23" ; if strx.compsel(s,b,2,2) { // Datensätze mit 23 ------------ global.BeCa=1;global.DaCa=s ;continue;} // Für Control Haus --------------------------------------------------- b="24" ; if strx.compsel(s,b,2,2) { // Datensätze mit 24 ------------ global.BeAn=1;global.DaAn=s ;continue;} // Licht Befehle / Datensätze ----------------------------------------- b="250" ; if strx.compsel(s,b,3,2) { // Datensätze mit 250 ----------- strx.mid(s,l,5,4); // Befehlsnummer in String l global.BeLi=strx.getNum(l); // String l in Integer umwandeln continue;} // Funktions Befehle / Datensätze ------------------------------------- b="260" ; if strx.compsel(s,b,3,2) { // Datensätze mit 260 ----------- strx.mid(s,l,5,4); // Befehlsnummer in String l global.BeFu=strx.getNum(l); // String l in Integer umwandeln continue;} // System Befehle ----------------------------------------------------- b="9990001"; // Watchdog für RS 232 auf Controlseite if strx.compsel(s,b,7,2) {global.watchdog1=1;continue;} b="9990002"; // Watchdog für I²C Bus auf Controlseite if strx.compsel(s,b,7,2) {i2c.init();sleep 150;i2c.stop();continue;} b="9990003"; // Software Reset des Systems if strx.compsel(s,b,7,2) { quit -1;continue;} b="9990004"; // Hostmodus einleiten if strx.compsel(s,b,7,2) { quit 63;continue;} }} // Ende Abarbeitung gültiger Datensätze +++++++++++++++++++++++++++++++++++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Anzeige ungültiger Datensätze // lcdext.clear();lcdext.print(""); // lcdext.line(2);lcdext.print(s); }} | ||
Antwort schreiben Antworten: Re: Serielle Schnittstelle V24 (von Torsten - 8.03.2010 21:15) Re: Serielle Schnittstelle V24 (von reneforster - 9.03.2010 15:06) Re: Serielle Schnittstelle V24 (von nitraM - 9.03.2010 13:23) |