Re: CAN-Bus Kategorie: Programmierung (von Rene Forster - 30.01.2012 17:36) | ||
Als Antwort auf Re: CAN-Bus von Martina - 27.01.2012 11:03 | ||
| ||
Hier ein Sendethread: /****************************************************************************** Datenübertragung per CAN an Control Haus / Server ******************************************************************************/ byte data_s[8]; // Modulvariablen ************************************************************ thread cans1 { // Verzögerung, um beim Start keine falschen Messwerte zu senden sleep 20000;sleep 20000; data_s[0]=0;data_s[1]=0;data_s[2]=0;data_s[3]=0;data_s[4]=0;data_s[5]=0;data_s[6]=0;data_s[7]=0; loop{ // Temperatur IST Werte ++++++++++++++++++++ data_s[0]=101; data_s[1]=global.SoMe1/256;data_s[2]=global.SoMe1 and 255; data_s[3]=global.SoMe2/256;data_s[4]=global.SoMe2 and 255; data_s[5]=global.SoMe3/256;data_s[6]=global.SoMe3 and 255; can.send(1,100,data_s,8);sleep 250; data_s[0]=102; data_s[1]=global.SoMe4/256;data_s[2]=global.SoMe4 and 255; data_s[3]=global.SoMe5/256;data_s[4]=global.SoMe5 and 255; data_s[5]=global.SoMe6/256;data_s[6]=global.SoMe6 and 255; can.send(1,100,data_s,8);sleep 250; data_s[0]=103; data_s[1]=global.SoMe7/256;data_s[2]=global.SoMe7 and 255; data_s[3]=global.SoMe8/256;data_s[4]=global.SoMe8 and 255; data_s[5]=global.HzMe1/256;data_s[6]=global.HzMe1 and 255; can.send(1,100,data_s,8);sleep 250; data_s[0]=104; data_s[1]=global.HzMe2/256;data_s[2]=global.HzMe2 and 255; data_s[3]=global.HzMe3/256;data_s[4]=global.HzMe3 and 255; data_s[5]=global.HzMe4/256;data_s[6]=global.HzMe4 and 255; can.send(1,100,data_s,8);sleep 250; data_s[0]=110; data_s[1]=global.HzMe5/256;data_s[2]=global.HzMe5 and 255; data_s[3]=global.HzMe6/256;data_s[4]=global.HzMe6 and 255; data_s[5]=global.HzMe7/256;data_s[6]=global.HzMe7 and 255; can.send(1,100,data_s,8);sleep 250; data_s[0]=111; data_s[1]=global.HzMe8/256;data_s[2]=global.HzMe8 and 255; can.send(1,100,data_s,8);sleep 250; // Zustand Stellantriebe und Sonstiges +++++ data_s[0]=105; data_s[1]=global.ZuHzPuOg;data_s[2]=global.ZuSoVe; data_s[3]=global.ZuRuVe;data_s[4]=global.ZuHzPuEg; data_s[5]=global.ZuZiPuEg;data_s[6]=global.ZuZiPuOg; data_s[7]=global.ZuZiVeEg; can.send(1,100,data_s,8);sleep 250; data_s[0]=106; data_s[1]=global.ZuZiVeOg;data_s[2]=global.ZuSoPu; data_s[3]=global.HZBrenner;data_s[4]=global.ZWZuAV2; can.send(1,100,data_s,8);sleep 250; data_s[0]=107; data_s[1]=global.ZPE;data_s[2]=global.ZPO; data_s[3]=global.ZVS;data_s[4]=global.ZVE; data_s[5]=global.ZVO;data_s[6]=global.ZVR; data_s[7]=global.ZPS; can.send(1,100,data_s,8);sleep 250; data_s[0]=108; data_s[1]=global.ZHO;data_s[2]=global.ZHE; data_s[3]=global.ZBB;data_s[4]=global.ZNK; data_s[5]=global.HZNK;data_s[6]=global.HZSoWi; data_s[7]=global.LP2FR; can.send(1,100,data_s,8);sleep 250; data_s[0]=109; data_s[1]=global.ZuSoVe2;data_s[2]=global.ZuLP2; data_s[3]=global.ZuAV1;data_s[4]=global.ZuAV2; data_s[5]=global.ZWZuSoVe2;data_s[6]=global.ZWZuLP2; data_s[7]=global.ZWZuAV1; can.send(1,100,data_s,8);sleep 250; data_s[0]=112; data_s[1]=global.SoMi;data_s[2]=global.SoMiEinlernen; data_s[3]=global.ZuSoNK;data_s[4]=global.ZWZuSoNK; can.send(1,100,data_s,8);sleep 250; }} und hier der Emfangsthread: /****************************************************************************** Datenübertragung per CAN auf Kanal 1 ID 100 ******************************************************************************/ // Modulvariablen ************************************************************ thread cane1 { // Varis definieren und setzen ------------------------------------------------- byte data_e[8]; data_e[0]=0;data_e[1]=0;data_e[2]=0;data_e[3]=0;data_e[4]=0;data_e[5]=0;data_e[6]=0;data_e[7]=0; can.expect (1,100); loop { data_e[0]=0;data_e[1]=0;data_e[2]=0;data_e[3]=0; data_e[4]=0;data_e[5]=0;data_e[6]=0;data_e[7]=0; wait can.rxd(1); // warte auf Nachrichten auf Kanal 1 can.get(1,data_e);// hole Nachrichten ab // Keller +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if data_e[0]==101 { global.SoMe1=data_e[1]*256+data_e[2]; global.SoMe2=data_e[3]*256+data_e[4]; global.SoMe3=data_e[5]*256+data_e[6];continue;} if data_e[0]==102 { global.SoMe4=data_e[1]*256+data_e[2]; global.SoMe5=data_e[3]*256+data_e[4]; global.SoMe6=data_e[5]*256+data_e[6];continue;} if data_e[0]==103 { global.SoMe7=data_e[1]*256+data_e[2]; global.SoMe8=data_e[3]*256+data_e[4]; global.HzMe1=data_e[5]*256+data_e[6];continue;} if data_e[0]==104 { global.HzMe2=data_e[1]*256+data_e[2]; global.HzMe3=data_e[3]*256+data_e[4]; global.HzMe4=data_e[5]*256+data_e[6];continue;} if data_e[0]==110 { global.HzMe5=data_e[1]*256+data_e[2]; global.HzMe6=data_e[3]*256+data_e[4]; global.HzMe7=data_e[5]*256+data_e[6];continue;} if data_e[0]==111 { global.HzMe8=data_e[1]*256+data_e[2];continue;} // Zustand Stellantriebe und Sonstiges +++++ if data_e[0]==105 { global.ZuHzPuOg=data_e[1];global.ZuSoVe=data_e[2]; global.ZuRuVe=data_e[3];global.ZuHzPuEg=data_e[4]; global.ZuZiPuEg=data_e[5];global.ZuZiPuOg=data_e[6]; global.ZuZiVeEg=data_e[7];continue;} if data_e[0]==106 { global.ZuZiVeOg=data_e[1];global.ZuSoPu=data_e[2]; global.HZBrenner=data_e[3];global.ZWZuAV2=data_e[4];continue;} if data_e[0]==107 { global.ZPE=data_e[1];global.ZPO=data_e[2]; global.ZVS=data_e[3];global.ZVE=data_e[4]; global.ZVO=data_e[5];global.ZVR=data_e[6]; global.ZPS=data_e[7];continue;} if data_e[0]==108 { global.ZHO=data_e[1];global.ZHE=data_e[2]; global.ZBB=data_e[3];global.ZNK=data_e[4]; global.HZNK=data_e[5];global.HZSoWi=data_e[6]; global.LP2FR=data_e[7];continue;} if data_e[0]==109 { global.ZuSoVe2=data_e[1];global.ZuLP2=data_e[2]; global.ZuAV1=data_e[3];global.ZuAV2=data_e[4]; global.ZWZuSoVe2=data_e[5];global.ZWZuLP2=data_e[6]; global.ZWZuAV1=data_e[7];continue;} if data_e[0]==112 { global.SoMi=data_e[1];global.SoMiEinlernen=data_e[2]; global.ZuSoNK=data_e[3];global.ZWZuSoNK=data_e[4];continue;} }} Rene | ||
Antwort schreiben Antworten: |