posledna fungujuca semestralna praca

Committer:
zdenka
Date:
Wed Dec 27 13:12:33 2017 +0000
Revision:
0:140ca5e86a6a
posledny fungujuci vytah

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zdenka 0:140ca5e86a6a 1 #include "mbed.h"
zdenka 0:140ca5e86a6a 2 #include "MMA8451Q.h"
zdenka 0:140ca5e86a6a 3 ////////////////////definicie pre freefall//////////////
zdenka 0:140ca5e86a6a 4 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
zdenka 0:140ca5e86a6a 5 PinName const SDA = PTE25;
zdenka 0:140ca5e86a6a 6 PinName const SCL = PTE24;
zdenka 0:140ca5e86a6a 7 #elif defined (TARGET_KL05Z)
zdenka 0:140ca5e86a6a 8 PinName const SDA = PTB4;
zdenka 0:140ca5e86a6a 9 PinName const SCL = PTB3;
zdenka 0:140ca5e86a6a 10 #elif defined (TARGET_K20D50M)
zdenka 0:140ca5e86a6a 11 PinName const SDA = PTB1;
zdenka 0:140ca5e86a6a 12 PinName const SCL = PTB0;
zdenka 0:140ca5e86a6a 13 #else
zdenka 0:140ca5e86a6a 14 #error TARGET NOT DEFINED
zdenka 0:140ca5e86a6a 15 #endif
zdenka 0:140ca5e86a6a 16
zdenka 0:140ca5e86a6a 17 #define MMA8451_I2C_ADDRESS (0x1d<<1)
zdenka 0:140ca5e86a6a 18 ///////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 19
zdenka 0:140ca5e86a6a 20 ////////////////////definicie adries////////////////////
zdenka 0:140ca5e86a6a 21 #define INF_DISPLAY 0x30
zdenka 0:140ca5e86a6a 22 #define TERMINAL 0x0D
zdenka 0:140ca5e86a6a 23
zdenka 0:140ca5e86a6a 24 #define CAB_BUT_P 0xb0
zdenka 0:140ca5e86a6a 25 #define CAB_BUT_1 0xb1
zdenka 0:140ca5e86a6a 26 #define CAB_BUT_2 0xb2
zdenka 0:140ca5e86a6a 27 #define CAB_BUT_3 0xb3
zdenka 0:140ca5e86a6a 28 #define CAB_BUT_4 0xb4
zdenka 0:140ca5e86a6a 29
zdenka 0:140ca5e86a6a 30 #define CAB_DIODE_P 0x20
zdenka 0:140ca5e86a6a 31 #define CAB_DIODE_1 0x21
zdenka 0:140ca5e86a6a 32 #define CAB_DIODE_2 0x22
zdenka 0:140ca5e86a6a 33 #define CAB_DIODE_3 0x23
zdenka 0:140ca5e86a6a 34 #define CAB_DIODE_4 0x24
zdenka 0:140ca5e86a6a 35
zdenka 0:140ca5e86a6a 36 #define ELEVATOR 0xf0
zdenka 0:140ca5e86a6a 37
zdenka 0:140ca5e86a6a 38 #define FLOOR_BUT_4 0xc4
zdenka 0:140ca5e86a6a 39 #define FLOOR_BUT_3 0xc3
zdenka 0:140ca5e86a6a 40 #define FLOOR_BUT_2 0xc2
zdenka 0:140ca5e86a6a 41 #define FLOOR_BUT_1 0xc1
zdenka 0:140ca5e86a6a 42 #define FLOOR_BUT_P 0xc0
zdenka 0:140ca5e86a6a 43
zdenka 0:140ca5e86a6a 44 #define FLOOR_DIODE_4 0x14
zdenka 0:140ca5e86a6a 45 #define FLOOR_DIODE_3 0x13
zdenka 0:140ca5e86a6a 46 #define FLOOR_DIODE_2 0x12
zdenka 0:140ca5e86a6a 47 #define FLOOR_DIODE_1 0x11
zdenka 0:140ca5e86a6a 48 #define FLOOR_DIODE_P 0x10
zdenka 0:140ca5e86a6a 49
zdenka 0:140ca5e86a6a 50 #define FLOOR_LIMIT_SWITCH_4 0xe4
zdenka 0:140ca5e86a6a 51 #define FLOOR_LIMIT_SWITCH_3 0xe3
zdenka 0:140ca5e86a6a 52 #define FLOOR_LIMIT_SWITCH_2 0xe2
zdenka 0:140ca5e86a6a 53 #define FLOOR_LIMIT_SWITCH_1 0xe1
zdenka 0:140ca5e86a6a 54 #define FLOOR_LIMIT_SWITCH_P 0xe0
zdenka 0:140ca5e86a6a 55
zdenka 0:140ca5e86a6a 56 #define WATCHDOG_TIMER 0xfe
zdenka 0:140ca5e86a6a 57 #define MOTOR 0xf1
zdenka 0:140ca5e86a6a 58 #define EMERGENCY_BREAK 0xf
zdenka 0:140ca5e86a6a 59 #define MOJA_ADRESA 0xAA
zdenka 0:140ca5e86a6a 60 //////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 61
zdenka 0:140ca5e86a6a 62 ////////////////globalne premenne//////////////////
zdenka 0:140ca5e86a6a 63 InterruptIn intin(PTA15);//Interupt pre freefall
zdenka 0:140ca5e86a6a 64 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);//accelerometer
zdenka 0:140ca5e86a6a 65 Serial pc(USBTX, USBRX,57600);
zdenka 0:140ca5e86a6a 66 char crc=0x00;//pre vypocet crc
zdenka 0:140ca5e86a6a 67 char cesta[5]={'x','x','x','x','x'};//pole na ulozenie poziadaviek
zdenka 0:140ca5e86a6a 68 int aktpozicia=4;//aktualna pozicia vytahu
zdenka 0:140ca5e86a6a 69 char smerpohybu=0x03;//smer pohybu vytahu
zdenka 0:140ca5e86a6a 70 unsigned char kruhovybuffer[200];//obsahuje prijate znaky
zdenka 0:140ca5e86a6a 71 int indexcitania=0;//urcuje index nacitavania z kruhoveho buferu
zdenka 0:140ca5e86a6a 72 Timer timer;
zdenka 0:140ca5e86a6a 73 Ticker ticker;
zdenka 0:140ca5e86a6a 74 int indexzapisu=0;
zdenka 0:140ca5e86a6a 75 char ccc[256]={0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
zdenka 0:140ca5e86a6a 76 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
zdenka 0:140ca5e86a6a 77 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
zdenka 0:140ca5e86a6a 78 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
zdenka 0:140ca5e86a6a 79 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
zdenka 0:140ca5e86a6a 80 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
zdenka 0:140ca5e86a6a 81 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
zdenka 0:140ca5e86a6a 82 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
zdenka 0:140ca5e86a6a 83 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
zdenka 0:140ca5e86a6a 84 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
zdenka 0:140ca5e86a6a 85 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
zdenka 0:140ca5e86a6a 86 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
zdenka 0:140ca5e86a6a 87 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
zdenka 0:140ca5e86a6a 88 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
zdenka 0:140ca5e86a6a 89 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
zdenka 0:140ca5e86a6a 90 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};
zdenka 0:140ca5e86a6a 91
zdenka 0:140ca5e86a6a 92 ///////prototypy funkcii////////////////////////
zdenka 0:140ca5e86a6a 93 void spustiVytah(int nasledujucePoschodie);
zdenka 0:140ca5e86a6a 94 void zobrazPoschodie(char poschodie);
zdenka 0:140ca5e86a6a 95 void zamkniVytah();
zdenka 0:140ca5e86a6a 96 void odomkniVytah();
zdenka 0:140ca5e86a6a 97 void zastavVytah();
zdenka 0:140ca5e86a6a 98 void zasvietDiodu(char ktoru);
zdenka 0:140ca5e86a6a 99 void zhasniDiodu(char ktoru);
zdenka 0:140ca5e86a6a 100 void watchdogReset();
zdenka 0:140ca5e86a6a 101 void odstranPotvrdenia();
zdenka 0:140ca5e86a6a 102 ///////////////////////////////////////////////
zdenka 0:140ca5e86a6a 103
zdenka 0:140ca5e86a6a 104 //////////////////////prerusenie vyvolane pri freefall///////
zdenka 0:140ca5e86a6a 105 void intfun(){
zdenka 0:140ca5e86a6a 106
zdenka 0:140ca5e86a6a 107 uint8_t datan[1];
zdenka 0:140ca5e86a6a 108 acc.readRegs(0x0C,datan,1);//precitam register z akcelerometra
zdenka 0:140ca5e86a6a 109 if((datan[0]&0x04)==0x04){//ak je prerusenie pre freefall
zdenka 0:140ca5e86a6a 110 acc.readRegs(0x16,datan,1);//precitanim registra rusim poziadavku o prerusenie
zdenka 0:140ca5e86a6a 111 timer.start();
zdenka 0:140ca5e86a6a 112 int begin=timer.read();
zdenka 0:140ca5e86a6a 113 while((timer.read()-begin)<=5){
zdenka 0:140ca5e86a6a 114 char stopVytah[6];
zdenka 0:140ca5e86a6a 115 stopVytah[0]=0xA0;
zdenka 0:140ca5e86a6a 116 stopVytah[1]=EMERGENCY_BREAK;
zdenka 0:140ca5e86a6a 117 stopVytah[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 118 stopVytah[3]=0x01;
zdenka 0:140ca5e86a6a 119 stopVytah[4]=0x02;
zdenka 0:140ca5e86a6a 120
zdenka 0:140ca5e86a6a 121 crc=0;
zdenka 0:140ca5e86a6a 122 crc=ccc[crc^stopVytah[1]];
zdenka 0:140ca5e86a6a 123 crc=ccc[crc^stopVytah[2]];
zdenka 0:140ca5e86a6a 124 crc=ccc[crc^stopVytah[4]];
zdenka 0:140ca5e86a6a 125 stopVytah[5]=crc;
zdenka 0:140ca5e86a6a 126
zdenka 0:140ca5e86a6a 127 for(int p=0;p<=5;p++){
zdenka 0:140ca5e86a6a 128 while(pc.writable()==0){}
zdenka 0:140ca5e86a6a 129 pc.putc(stopVytah[p]);
zdenka 0:140ca5e86a6a 130 }
zdenka 0:140ca5e86a6a 131 }
zdenka 0:140ca5e86a6a 132 }
zdenka 0:140ca5e86a6a 133 }
zdenka 0:140ca5e86a6a 134 ////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 135
zdenka 0:140ca5e86a6a 136 ////////funkcia volana tickerom pre reset watchdogu////
zdenka 0:140ca5e86a6a 137 void atTime(){
zdenka 0:140ca5e86a6a 138 watchdogReset();
zdenka 0:140ca5e86a6a 139 }
zdenka 0:140ca5e86a6a 140 //////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 141
zdenka 0:140ca5e86a6a 142 ///////funkcia prerusenia serioveho portu////
zdenka 0:140ca5e86a6a 143 void funkcia(){
zdenka 0:140ca5e86a6a 144 kruhovybuffer[indexzapisu]=pc.getc();
zdenka 0:140ca5e86a6a 145 indexzapisu=indexzapisu+1;
zdenka 0:140ca5e86a6a 146 if(indexzapisu==200){
zdenka 0:140ca5e86a6a 147 indexzapisu=0;
zdenka 0:140ca5e86a6a 148 }
zdenka 0:140ca5e86a6a 149 }
zdenka 0:140ca5e86a6a 150 /////////////////////////////////////////
zdenka 0:140ca5e86a6a 151 int main(void)
zdenka 0:140ca5e86a6a 152 {
zdenka 0:140ca5e86a6a 153 ///////////////////////nastavenie akcelerometra pre volny pad/////////////////////////////////////
zdenka 0:140ca5e86a6a 154
zdenka 0:140ca5e86a6a 155 intin.fall(&intfun);//priradim preruseniu od akcelerometra funkciu intfun
zdenka 0:140ca5e86a6a 156
zdenka 0:140ca5e86a6a 157 uint8_t krok1[2] = {0x2A, 0x20};
zdenka 0:140ca5e86a6a 158 acc.writeRegs(krok1, 2);
zdenka 0:140ca5e86a6a 159
zdenka 0:140ca5e86a6a 160 uint8_t krok2[2] = {0x15, 0xB8};
zdenka 0:140ca5e86a6a 161 acc.writeRegs(krok2,2);
zdenka 0:140ca5e86a6a 162
zdenka 0:140ca5e86a6a 163 uint8_t krok3[2] = {0x17, 0x03};
zdenka 0:140ca5e86a6a 164 acc.writeRegs(krok3,2);
zdenka 0:140ca5e86a6a 165
zdenka 0:140ca5e86a6a 166 uint8_t krok4[2] = {0x18, 0x06};
zdenka 0:140ca5e86a6a 167 acc.writeRegs(krok4,2);
zdenka 0:140ca5e86a6a 168
zdenka 0:140ca5e86a6a 169 uint8_t krok5[2] = {0x2D, 0x04};
zdenka 0:140ca5e86a6a 170 acc.writeRegs(krok5,2);
zdenka 0:140ca5e86a6a 171
zdenka 0:140ca5e86a6a 172 uint8_t krok6[2] = {0x2E, 0x00};
zdenka 0:140ca5e86a6a 173 acc.writeRegs(krok6,2);
zdenka 0:140ca5e86a6a 174
zdenka 0:140ca5e86a6a 175
zdenka 0:140ca5e86a6a 176 //krok7
zdenka 0:140ca5e86a6a 177 uint8_t data[1];
zdenka 0:140ca5e86a6a 178 acc.readRegs(0x2A,data,1);
zdenka 0:140ca5e86a6a 179 data[0]=data[0]| 0x01;
zdenka 0:140ca5e86a6a 180
zdenka 0:140ca5e86a6a 181 uint8_t krok7[2] = {0x2A, data[0]};
zdenka 0:140ca5e86a6a 182 krok7[1] = data[0];
zdenka 0:140ca5e86a6a 183 acc.writeRegs(krok7,2);
zdenka 0:140ca5e86a6a 184 ////////////////////////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 185
zdenka 0:140ca5e86a6a 186
zdenka 0:140ca5e86a6a 187 pc.attach(&funkcia,pc.RxIrq);//priradujem funkciu pre seriovy port, ktoru vykona pri vzniku prerusenia
zdenka 0:140ca5e86a6a 188 ticker.attach(&atTime,0.4);
zdenka 0:140ca5e86a6a 189 char sprava[4];
zdenka 0:140ca5e86a6a 190 while (true) {
zdenka 0:140ca5e86a6a 191 int dlzkanacitanych=0;
zdenka 0:140ca5e86a6a 192
zdenka 0:140ca5e86a6a 193 odstranPotvrdenia(); //odstrani vsetky potvrdzovacie spravy z kruhoveho buffra
zdenka 0:140ca5e86a6a 194
zdenka 0:140ca5e86a6a 195 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 196 dlzkanacitanych=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 197 }else{dlzkanacitanych=(200-indexcitania)+indexzapisu;}// v if else pocitam pocet prijatych dat
zdenka 0:140ca5e86a6a 198
zdenka 0:140ca5e86a6a 199
zdenka 0:140ca5e86a6a 200
zdenka 0:140ca5e86a6a 201 while(dlzkanacitanych>0&&kruhovybuffer[indexcitania]!=0xA0){
zdenka 0:140ca5e86a6a 202
zdenka 0:140ca5e86a6a 203 indexcitania=(indexcitania+1)%200;
zdenka 0:140ca5e86a6a 204
zdenka 0:140ca5e86a6a 205
zdenka 0:140ca5e86a6a 206 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 207 dlzkanacitanych=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 208 }else{dlzkanacitanych=(200-indexcitania)+indexzapisu;}// v if else pocitam pocet prijatych dat
zdenka 0:140ca5e86a6a 209
zdenka 0:140ca5e86a6a 210 }
zdenka 0:140ca5e86a6a 211
zdenka 0:140ca5e86a6a 212 if(dlzkanacitanych>=5&&dlzkanacitanych>=5+kruhovybuffer[indexcitania+3]){ //pocet prijatych dat musi byt >=pocet dat spravy
zdenka 0:140ca5e86a6a 213
zdenka 0:140ca5e86a6a 214 //////////////////////////////////////ukladam do pola "sprava" a "zvysokspravy" casti spravy na jednotlive indexy//////////////////////////////////////
zdenka 0:140ca5e86a6a 215 sprava[0]=kruhovybuffer[indexcitania];//zaciatocny bajt 0xA0
zdenka 0:140ca5e86a6a 216 indexcitania=indexcitania+1;
zdenka 0:140ca5e86a6a 217 if(indexcitania==200){indexcitania=0;}
zdenka 0:140ca5e86a6a 218
zdenka 0:140ca5e86a6a 219 sprava[1]=kruhovybuffer[indexcitania];//adresa prijimatela
zdenka 0:140ca5e86a6a 220 indexcitania=indexcitania+1;
zdenka 0:140ca5e86a6a 221 if(indexcitania==200){indexcitania=0;}
zdenka 0:140ca5e86a6a 222
zdenka 0:140ca5e86a6a 223 sprava[2]=kruhovybuffer[indexcitania];//adresa odosielatela
zdenka 0:140ca5e86a6a 224 indexcitania=indexcitania+1;
zdenka 0:140ca5e86a6a 225 if(indexcitania==200){indexcitania=0;}
zdenka 0:140ca5e86a6a 226
zdenka 0:140ca5e86a6a 227 sprava[3]=kruhovybuffer[indexcitania];//pocet dat
zdenka 0:140ca5e86a6a 228 indexcitania=indexcitania+1;
zdenka 0:140ca5e86a6a 229 if(indexcitania==200){indexcitania=0;}
zdenka 0:140ca5e86a6a 230
zdenka 0:140ca5e86a6a 231 int dlzkazvysku=sprava[3]+1;
zdenka 0:140ca5e86a6a 232 char zvysokspravy[dlzkazvysku];//bude obsahovat data a crc
zdenka 0:140ca5e86a6a 233
zdenka 0:140ca5e86a6a 234 for(int i=0;i<dlzkazvysku;i++){
zdenka 0:140ca5e86a6a 235 zvysokspravy[i]=kruhovybuffer[indexcitania];//pocet dat
zdenka 0:140ca5e86a6a 236 indexcitania=indexcitania+1;
zdenka 0:140ca5e86a6a 237 if(indexcitania==200){indexcitania=0;}
zdenka 0:140ca5e86a6a 238 }
zdenka 0:140ca5e86a6a 239 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 240
zdenka 0:140ca5e86a6a 241 //mam precitanu celu spravu
zdenka 0:140ca5e86a6a 242
zdenka 0:140ca5e86a6a 243
zdenka 0:140ca5e86a6a 244 if((sprava[2]&0xf0)==0xc0&&cesta[0]=='x'){//stlacene tlacidlo na poschodi a zaroven nie je ziadna poziadavka v poli cesta
zdenka 0:140ca5e86a6a 245
zdenka 0:140ca5e86a6a 246 int naslpozicia;
zdenka 0:140ca5e86a6a 247 char adrDiodyPoschodia;
zdenka 0:140ca5e86a6a 248
zdenka 0:140ca5e86a6a 249
zdenka 0:140ca5e86a6a 250 if(sprava[2]==FLOOR_BUT_4){
zdenka 0:140ca5e86a6a 251 adrDiodyPoschodia=FLOOR_DIODE_4;
zdenka 0:140ca5e86a6a 252 cesta[0]='4';
zdenka 0:140ca5e86a6a 253 naslpozicia=4;
zdenka 0:140ca5e86a6a 254 }else if(sprava[2]==FLOOR_BUT_3){
zdenka 0:140ca5e86a6a 255 adrDiodyPoschodia=FLOOR_DIODE_3;
zdenka 0:140ca5e86a6a 256 cesta[0]='3';
zdenka 0:140ca5e86a6a 257 naslpozicia=3;
zdenka 0:140ca5e86a6a 258 }else if(sprava[2]==FLOOR_BUT_2){
zdenka 0:140ca5e86a6a 259 adrDiodyPoschodia=FLOOR_DIODE_2;
zdenka 0:140ca5e86a6a 260 cesta[0]='2';
zdenka 0:140ca5e86a6a 261 naslpozicia=2;
zdenka 0:140ca5e86a6a 262 }else if(sprava[2]==FLOOR_BUT_1){
zdenka 0:140ca5e86a6a 263 adrDiodyPoschodia=FLOOR_DIODE_1;
zdenka 0:140ca5e86a6a 264 cesta[0]='1';
zdenka 0:140ca5e86a6a 265 naslpozicia=1;
zdenka 0:140ca5e86a6a 266 }else if(sprava[2]==FLOOR_BUT_P){
zdenka 0:140ca5e86a6a 267 adrDiodyPoschodia=FLOOR_DIODE_P;
zdenka 0:140ca5e86a6a 268 cesta[0]='P';
zdenka 0:140ca5e86a6a 269 naslpozicia=0;
zdenka 0:140ca5e86a6a 270 }
zdenka 0:140ca5e86a6a 271
zdenka 0:140ca5e86a6a 272 if(aktpozicia==naslpozicia){
zdenka 0:140ca5e86a6a 273 cesta[0]='x';
zdenka 0:140ca5e86a6a 274 }else{///////////////ak poschodie kde je vytah privolany je ine ako to na ktorom aktualne vytah stoji
zdenka 0:140ca5e86a6a 275
zdenka 0:140ca5e86a6a 276 ////////////////svietim diodu na poschodi//////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 277
zdenka 0:140ca5e86a6a 278 zasvietDiodu(adrDiodyPoschodia);
zdenka 0:140ca5e86a6a 279
zdenka 0:140ca5e86a6a 280 //////////////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 281
zdenka 0:140ca5e86a6a 282 /////////////////////spustam vytah//////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 283 spustiVytah(naslpozicia);
zdenka 0:140ca5e86a6a 284 //////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 285
zdenka 0:140ca5e86a6a 286 ///////////////////////////zamknem vytah/////////////////////////////////
zdenka 0:140ca5e86a6a 287 zamkniVytah();
zdenka 0:140ca5e86a6a 288 //////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 289
zdenka 0:140ca5e86a6a 290 ///////////////////////zobrazim poschodie//////////////////////////////////
zdenka 0:140ca5e86a6a 291 if(aktpozicia==4){
zdenka 0:140ca5e86a6a 292 zobrazPoschodie('4');
zdenka 0:140ca5e86a6a 293 }else if(aktpozicia==3){
zdenka 0:140ca5e86a6a 294 zobrazPoschodie('3');
zdenka 0:140ca5e86a6a 295 }else if(aktpozicia==2){
zdenka 0:140ca5e86a6a 296 zobrazPoschodie('2');
zdenka 0:140ca5e86a6a 297 }else if(aktpozicia==1){
zdenka 0:140ca5e86a6a 298 zobrazPoschodie('1');
zdenka 0:140ca5e86a6a 299 }else if(aktpozicia==0){
zdenka 0:140ca5e86a6a 300 zobrazPoschodie('P');
zdenka 0:140ca5e86a6a 301 }
zdenka 0:140ca5e86a6a 302 //////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 303 }//aktpozicia!=naslpozicia
zdenka 0:140ca5e86a6a 304
zdenka 0:140ca5e86a6a 305 }else if((sprava[2]&0xf0)==0xb0){//ak je kliknute na tlacidla z kabiny
zdenka 0:140ca5e86a6a 306
zdenka 0:140ca5e86a6a 307 int poschodie;
zdenka 0:140ca5e86a6a 308 char znakposch;
zdenka 0:140ca5e86a6a 309 char adrDiodyKabiny;
zdenka 0:140ca5e86a6a 310
zdenka 0:140ca5e86a6a 311 if(sprava[2]==CAB_BUT_4){
zdenka 0:140ca5e86a6a 312 poschodie=4;
zdenka 0:140ca5e86a6a 313 znakposch='4';
zdenka 0:140ca5e86a6a 314 adrDiodyKabiny=CAB_DIODE_4;
zdenka 0:140ca5e86a6a 315 }else if(sprava[2]==CAB_BUT_3){
zdenka 0:140ca5e86a6a 316 poschodie=3;
zdenka 0:140ca5e86a6a 317 znakposch='3';
zdenka 0:140ca5e86a6a 318 adrDiodyKabiny=CAB_DIODE_3;
zdenka 0:140ca5e86a6a 319 }else if(sprava[2]==CAB_BUT_2){
zdenka 0:140ca5e86a6a 320 poschodie=2;
zdenka 0:140ca5e86a6a 321 znakposch='2';
zdenka 0:140ca5e86a6a 322 adrDiodyKabiny=CAB_DIODE_2;
zdenka 0:140ca5e86a6a 323 }else if(sprava[2]==CAB_BUT_1){
zdenka 0:140ca5e86a6a 324 poschodie=1;
zdenka 0:140ca5e86a6a 325 znakposch='1';
zdenka 0:140ca5e86a6a 326 adrDiodyKabiny=CAB_DIODE_1;
zdenka 0:140ca5e86a6a 327 }else if(sprava[2]==CAB_BUT_P){
zdenka 0:140ca5e86a6a 328 poschodie=0;
zdenka 0:140ca5e86a6a 329 znakposch='P';
zdenka 0:140ca5e86a6a 330 adrDiodyKabiny=CAB_DIODE_P;
zdenka 0:140ca5e86a6a 331 }
zdenka 0:140ca5e86a6a 332
zdenka 0:140ca5e86a6a 333 if(aktpozicia!=poschodie){//svietim len ked je aktualna pozicia vytahu ina ako stlacena
zdenka 0:140ca5e86a6a 334
zdenka 0:140ca5e86a6a 335
zdenka 0:140ca5e86a6a 336
zdenka 0:140ca5e86a6a 337 ////////ak je pole poziadaviek prazdne//////////
zdenka 0:140ca5e86a6a 338 int prazdne=0;
zdenka 0:140ca5e86a6a 339 if(cesta[0]=='x'&&cesta[1]=='x'&&cesta[2]=='x'&&cesta[3]=='x'&&cesta[4]=='x'){
zdenka 0:140ca5e86a6a 340 prazdne=1;
zdenka 0:140ca5e86a6a 341 }
zdenka 0:140ca5e86a6a 342 ///////////////////////////////////////////////
zdenka 0:140ca5e86a6a 343
zdenka 0:140ca5e86a6a 344
zdenka 0:140ca5e86a6a 345 /////////////////ulozim poziadavku do pola///////////////////////////////
zdenka 0:140ca5e86a6a 346 int uztamje=0;
zdenka 0:140ca5e86a6a 347 for(int t=0;t<5;t++){
zdenka 0:140ca5e86a6a 348 if(znakposch==cesta[t]){
zdenka 0:140ca5e86a6a 349 uztamje=1;
zdenka 0:140ca5e86a6a 350 }
zdenka 0:140ca5e86a6a 351 }
zdenka 0:140ca5e86a6a 352
zdenka 0:140ca5e86a6a 353 if(uztamje==0){
zdenka 0:140ca5e86a6a 354
zdenka 0:140ca5e86a6a 355 //////////////////////svietim diodu pri tlacidle/////////////////////
zdenka 0:140ca5e86a6a 356
zdenka 0:140ca5e86a6a 357 zasvietDiodu(adrDiodyKabiny);
zdenka 0:140ca5e86a6a 358
zdenka 0:140ca5e86a6a 359 ////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 360
zdenka 0:140ca5e86a6a 361 for(int t=0;t<5;t++){
zdenka 0:140ca5e86a6a 362 if(cesta[t]=='x'){
zdenka 0:140ca5e86a6a 363 cesta[t]=znakposch;
zdenka 0:140ca5e86a6a 364 break;
zdenka 0:140ca5e86a6a 365 }
zdenka 0:140ca5e86a6a 366 }
zdenka 0:140ca5e86a6a 367
zdenka 0:140ca5e86a6a 368 }
zdenka 0:140ca5e86a6a 369 //////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 370
zdenka 0:140ca5e86a6a 371 if(prazdne==1){
zdenka 0:140ca5e86a6a 372 ///////////////////////////zamknem vytah/////////////////////////////////
zdenka 0:140ca5e86a6a 373
zdenka 0:140ca5e86a6a 374 zamkniVytah();
zdenka 0:140ca5e86a6a 375
zdenka 0:140ca5e86a6a 376 //////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 377
zdenka 0:140ca5e86a6a 378 /////////////////////spustam vytah//////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 379 spustiVytah(poschodie);
zdenka 0:140ca5e86a6a 380 //////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 381
zdenka 0:140ca5e86a6a 382 ///////////////////////zobrazim poschodie//////////////////////////////////
zdenka 0:140ca5e86a6a 383 if(aktpozicia==4){
zdenka 0:140ca5e86a6a 384 zobrazPoschodie('4');
zdenka 0:140ca5e86a6a 385 }else if(aktpozicia==3){
zdenka 0:140ca5e86a6a 386 zobrazPoschodie('3');
zdenka 0:140ca5e86a6a 387 }else if(aktpozicia==2){
zdenka 0:140ca5e86a6a 388 zobrazPoschodie('2');
zdenka 0:140ca5e86a6a 389 }else if(aktpozicia==1){
zdenka 0:140ca5e86a6a 390 zobrazPoschodie('1');
zdenka 0:140ca5e86a6a 391 }else if(aktpozicia==0){
zdenka 0:140ca5e86a6a 392 zobrazPoschodie('P');
zdenka 0:140ca5e86a6a 393 }
zdenka 0:140ca5e86a6a 394 //////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 395
zdenka 0:140ca5e86a6a 396 }// if prazdne==1
zdenka 0:140ca5e86a6a 397
zdenka 0:140ca5e86a6a 398
zdenka 0:140ca5e86a6a 399
zdenka 0:140ca5e86a6a 400 }//if aktualnapozticia je ina ako stlacena
zdenka 0:140ca5e86a6a 401 } else if((sprava[2]&0xf0)==0xe0&&zvysokspravy[0]==0x01){// ak sprava od jedneho zo switchov a zaroven je vytah dalej
zdenka 0:140ca5e86a6a 402 char kdesom;
zdenka 0:140ca5e86a6a 403 if(sprava[2]==FLOOR_LIMIT_SWITCH_4){
zdenka 0:140ca5e86a6a 404 kdesom='4';
zdenka 0:140ca5e86a6a 405 }else if(sprava[2]==FLOOR_LIMIT_SWITCH_3){
zdenka 0:140ca5e86a6a 406 kdesom='3';
zdenka 0:140ca5e86a6a 407 }else if(sprava[2]==FLOOR_LIMIT_SWITCH_2){
zdenka 0:140ca5e86a6a 408 kdesom='2';
zdenka 0:140ca5e86a6a 409 }else if(sprava[2]==FLOOR_LIMIT_SWITCH_1){
zdenka 0:140ca5e86a6a 410 kdesom='1';
zdenka 0:140ca5e86a6a 411 }else if(sprava[2]==FLOOR_LIMIT_SWITCH_P){
zdenka 0:140ca5e86a6a 412 kdesom='P';
zdenka 0:140ca5e86a6a 413 }
zdenka 0:140ca5e86a6a 414
zdenka 0:140ca5e86a6a 415 if(kdesom==cesta[0]){//ak som na poschodi kde chcem zastavit
zdenka 0:140ca5e86a6a 416 zastavVytah();
zdenka 0:140ca5e86a6a 417 }
zdenka 0:140ca5e86a6a 418 } else if((sprava[2]&0xf0)==0xe0&&zvysokspravy[0]==0x02){//som blizko pri switchi, svieti na cerveno
zdenka 0:140ca5e86a6a 419 char kdesom;
zdenka 0:140ca5e86a6a 420 if(sprava[2]==FLOOR_LIMIT_SWITCH_4){
zdenka 0:140ca5e86a6a 421 kdesom='4';
zdenka 0:140ca5e86a6a 422 }else if(sprava[2]==FLOOR_LIMIT_SWITCH_3){
zdenka 0:140ca5e86a6a 423 kdesom='3';
zdenka 0:140ca5e86a6a 424 }else if(sprava[2]==FLOOR_LIMIT_SWITCH_2){
zdenka 0:140ca5e86a6a 425 kdesom='2';
zdenka 0:140ca5e86a6a 426 }else if(sprava[2]==FLOOR_LIMIT_SWITCH_1){
zdenka 0:140ca5e86a6a 427 kdesom='1';
zdenka 0:140ca5e86a6a 428 }else if(sprava[2]==FLOOR_LIMIT_SWITCH_P){
zdenka 0:140ca5e86a6a 429 kdesom='P';
zdenka 0:140ca5e86a6a 430 }
zdenka 0:140ca5e86a6a 431
zdenka 0:140ca5e86a6a 432 if(kdesom==cesta[0]){
zdenka 0:140ca5e86a6a 433 ///////////////////////poposuvam poziadavky v poli//////////////////////////////
zdenka 0:140ca5e86a6a 434 cesta[0]=cesta[1];
zdenka 0:140ca5e86a6a 435 cesta[1]=cesta[2];
zdenka 0:140ca5e86a6a 436 cesta[2]=cesta[3];
zdenka 0:140ca5e86a6a 437 cesta[3]=cesta[4];
zdenka 0:140ca5e86a6a 438 cesta[4]='x';
zdenka 0:140ca5e86a6a 439 ////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 440
zdenka 0:140ca5e86a6a 441 ///////////////////////////////zhasnem diodu na poschodi////////////////////////////////
zdenka 0:140ca5e86a6a 442 char adrDiodyPoschodia;
zdenka 0:140ca5e86a6a 443
zdenka 0:140ca5e86a6a 444 if(kdesom=='4'){
zdenka 0:140ca5e86a6a 445 aktpozicia=4;
zdenka 0:140ca5e86a6a 446 adrDiodyPoschodia=FLOOR_DIODE_4;
zdenka 0:140ca5e86a6a 447 }else if(kdesom=='3'){
zdenka 0:140ca5e86a6a 448 aktpozicia=3;
zdenka 0:140ca5e86a6a 449 adrDiodyPoschodia=FLOOR_DIODE_3;
zdenka 0:140ca5e86a6a 450 }else if(kdesom=='2'){
zdenka 0:140ca5e86a6a 451 aktpozicia=2;
zdenka 0:140ca5e86a6a 452 adrDiodyPoschodia=FLOOR_DIODE_2;
zdenka 0:140ca5e86a6a 453 }else if(kdesom=='1'){
zdenka 0:140ca5e86a6a 454 aktpozicia=1;
zdenka 0:140ca5e86a6a 455 adrDiodyPoschodia=FLOOR_DIODE_1;
zdenka 0:140ca5e86a6a 456 }else if(kdesom=='P'){
zdenka 0:140ca5e86a6a 457 aktpozicia=0;
zdenka 0:140ca5e86a6a 458 adrDiodyPoschodia=FLOOR_DIODE_P;
zdenka 0:140ca5e86a6a 459 }
zdenka 0:140ca5e86a6a 460
zdenka 0:140ca5e86a6a 461 zhasniDiodu(adrDiodyPoschodia);
zdenka 0:140ca5e86a6a 462
zdenka 0:140ca5e86a6a 463 ////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 464
zdenka 0:140ca5e86a6a 465 ///////////////////////zhasnem diodu vo vytahu//////////////////////////////////
zdenka 0:140ca5e86a6a 466
zdenka 0:140ca5e86a6a 467 char adrDiodyKabiny;
zdenka 0:140ca5e86a6a 468 if(kdesom=='4'){
zdenka 0:140ca5e86a6a 469 adrDiodyKabiny=CAB_DIODE_4;
zdenka 0:140ca5e86a6a 470 }else if(kdesom=='3'){
zdenka 0:140ca5e86a6a 471 adrDiodyKabiny=CAB_DIODE_3;
zdenka 0:140ca5e86a6a 472 }else if(kdesom=='2'){
zdenka 0:140ca5e86a6a 473 adrDiodyKabiny=CAB_DIODE_2;
zdenka 0:140ca5e86a6a 474 }else if(kdesom=='1'){
zdenka 0:140ca5e86a6a 475 adrDiodyKabiny=CAB_DIODE_1;
zdenka 0:140ca5e86a6a 476 }else if(kdesom=='P'){
zdenka 0:140ca5e86a6a 477 adrDiodyKabiny=CAB_DIODE_P;
zdenka 0:140ca5e86a6a 478 }
zdenka 0:140ca5e86a6a 479
zdenka 0:140ca5e86a6a 480 zhasniDiodu(adrDiodyKabiny);
zdenka 0:140ca5e86a6a 481
zdenka 0:140ca5e86a6a 482 ///////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 483
zdenka 0:140ca5e86a6a 484 smerpohybu=0x03;
zdenka 0:140ca5e86a6a 485 ////////////////////odomknem vytah///////////////////////////////////////////////
zdenka 0:140ca5e86a6a 486 odomkniVytah();
zdenka 0:140ca5e86a6a 487
zdenka 0:140ca5e86a6a 488 /////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 489
zdenka 0:140ca5e86a6a 490 /////////////////zobraz poschodie//////////////////////
zdenka 0:140ca5e86a6a 491 zobrazPoschodie(kdesom);
zdenka 0:140ca5e86a6a 492 ///////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 493
zdenka 0:140ca5e86a6a 494 if(cesta[0]!='x'){//ak existuje nasledujuca poziadavka
zdenka 0:140ca5e86a6a 495 //////////////////////////cakam 5 sekund///////////////////////////
zdenka 0:140ca5e86a6a 496 timer.start();
zdenka 0:140ca5e86a6a 497 while(timer.read()<=5){}
zdenka 0:140ca5e86a6a 498 timer.stop();
zdenka 0:140ca5e86a6a 499 timer.reset();
zdenka 0:140ca5e86a6a 500 ////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 501
zdenka 0:140ca5e86a6a 502 ///////////////////////////zamknem vytah/////////////////////////////////
zdenka 0:140ca5e86a6a 503
zdenka 0:140ca5e86a6a 504 zamkniVytah();
zdenka 0:140ca5e86a6a 505
zdenka 0:140ca5e86a6a 506 //////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 507
zdenka 0:140ca5e86a6a 508 /////////////////////spustam vytah//////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 509 int poschodie;
zdenka 0:140ca5e86a6a 510 if(cesta[0]=='4'){poschodie=4;}
zdenka 0:140ca5e86a6a 511 else if(cesta[0]=='3'){poschodie=3;}
zdenka 0:140ca5e86a6a 512 else if(cesta[0]=='2'){poschodie=2;}
zdenka 0:140ca5e86a6a 513 else if(cesta[0]=='1'){poschodie=1;}
zdenka 0:140ca5e86a6a 514 else if(cesta[0]=='P'){poschodie=0;}
zdenka 0:140ca5e86a6a 515
zdenka 0:140ca5e86a6a 516 spustiVytah(poschodie);
zdenka 0:140ca5e86a6a 517 //////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 518
zdenka 0:140ca5e86a6a 519 ///////////////////////zobrazim poschodie//////////////////////////////////
zdenka 0:140ca5e86a6a 520 zobrazPoschodie(kdesom);
zdenka 0:140ca5e86a6a 521 //////////////////////////////////////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 522
zdenka 0:140ca5e86a6a 523
zdenka 0:140ca5e86a6a 524 }//ak je dalsia poziadavka
zdenka 0:140ca5e86a6a 525
zdenka 0:140ca5e86a6a 526 }//ak je sprava od switchu na poschodi kde zastavujem
zdenka 0:140ca5e86a6a 527 else{
zdenka 0:140ca5e86a6a 528 zobrazPoschodie(kdesom);
zdenka 0:140ca5e86a6a 529 }
zdenka 0:140ca5e86a6a 530 }//posledny if
zdenka 0:140ca5e86a6a 531 }//ak je cela sprava
zdenka 0:140ca5e86a6a 532 }//while
zdenka 0:140ca5e86a6a 533 }//koniec mainu
zdenka 0:140ca5e86a6a 534 ///////////////////////////////////////////nadefinovane funkcie//////////////////////////////////////////////////
zdenka 0:140ca5e86a6a 535 void zasvietDiodu(char ktoru){
zdenka 0:140ca5e86a6a 536 ///////////vytvaram spravu na poslanie///////////////////////
zdenka 0:140ca5e86a6a 537 char zapnutieDiody[6];
zdenka 0:140ca5e86a6a 538 zapnutieDiody[0]=0xA0;
zdenka 0:140ca5e86a6a 539 zapnutieDiody[1]=ktoru;
zdenka 0:140ca5e86a6a 540 zapnutieDiody[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 541 zapnutieDiody[3]=0x01;
zdenka 0:140ca5e86a6a 542 zapnutieDiody[4]=0x01;
zdenka 0:140ca5e86a6a 543 crc=0;
zdenka 0:140ca5e86a6a 544 crc=ccc[crc^zapnutieDiody[1]];
zdenka 0:140ca5e86a6a 545 crc=ccc[crc^zapnutieDiody[2]];
zdenka 0:140ca5e86a6a 546 crc=ccc[crc^zapnutieDiody[4]];
zdenka 0:140ca5e86a6a 547 zapnutieDiody[5]=crc;
zdenka 0:140ca5e86a6a 548 ///posielam spravu kym bude opakuj==1//////////
zdenka 0:140ca5e86a6a 549 int opakuj=1;
zdenka 0:140ca5e86a6a 550 while(opakuj==1){
zdenka 0:140ca5e86a6a 551 //odstranPotvrdenia();
zdenka 0:140ca5e86a6a 552 /////////posielam spravu///////////
zdenka 0:140ca5e86a6a 553 for(int p=0;p<=5;p++){
zdenka 0:140ca5e86a6a 554 pc.putc(zapnutieDiody[p]);
zdenka 0:140ca5e86a6a 555 }
zdenka 0:140ca5e86a6a 556 //////////////////////////////////////
zdenka 0:140ca5e86a6a 557
zdenka 0:140ca5e86a6a 558 //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza potvrdenie
zdenka 0:140ca5e86a6a 559 timer.start();
zdenka 0:140ca5e86a6a 560 int pocetDat=0;
zdenka 0:140ca5e86a6a 561 int br;
zdenka 0:140ca5e86a6a 562 int milisecStart = timer.read_ms();
zdenka 0:140ca5e86a6a 563 while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund
zdenka 0:140ca5e86a6a 564 br=0;
zdenka 0:140ca5e86a6a 565
zdenka 0:140ca5e86a6a 566 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 567 pocetDat=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 568 }else{
zdenka 0:140ca5e86a6a 569 pocetDat=(199-indexcitania+1)+indexzapisu;
zdenka 0:140ca5e86a6a 570 }
zdenka 0:140ca5e86a6a 571 if(pocetDat>=5){
zdenka 0:140ca5e86a6a 572 for(int i=0;i<pocetDat-4;i++){
zdenka 0:140ca5e86a6a 573 if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){
zdenka 0:140ca5e86a6a 574 if(i!=0){
zdenka 0:140ca5e86a6a 575 for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania
zdenka 0:140ca5e86a6a 576 int odkial=(indexcitania+j)%200;
zdenka 0:140ca5e86a6a 577 int kam=(odkial+5)%200;
zdenka 0:140ca5e86a6a 578 kruhovybuffer[kam]=kruhovybuffer[odkial];
zdenka 0:140ca5e86a6a 579 }
zdenka 0:140ca5e86a6a 580 }
zdenka 0:140ca5e86a6a 581 indexcitania=(indexcitania+5)%200;
zdenka 0:140ca5e86a6a 582 br=1;
zdenka 0:140ca5e86a6a 583 opakuj=0;
zdenka 0:140ca5e86a6a 584 break;
zdenka 0:140ca5e86a6a 585 }
zdenka 0:140ca5e86a6a 586 }
zdenka 0:140ca5e86a6a 587 }
zdenka 0:140ca5e86a6a 588 if(br==1){break;}
zdenka 0:140ca5e86a6a 589
zdenka 0:140ca5e86a6a 590 }
zdenka 0:140ca5e86a6a 591 timer.stop();
zdenka 0:140ca5e86a6a 592 timer.reset();
zdenka 0:140ca5e86a6a 593 }//while opakuj==1
zdenka 0:140ca5e86a6a 594 }
zdenka 0:140ca5e86a6a 595
zdenka 0:140ca5e86a6a 596
zdenka 0:140ca5e86a6a 597 void zastavVytah(){
zdenka 0:140ca5e86a6a 598 char poleznakov[6];
zdenka 0:140ca5e86a6a 599 poleznakov[0]=0xA0;
zdenka 0:140ca5e86a6a 600 poleznakov[1]=MOTOR;
zdenka 0:140ca5e86a6a 601 poleznakov[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 602 poleznakov[3]=0x01;
zdenka 0:140ca5e86a6a 603 poleznakov[4]=0x1;
zdenka 0:140ca5e86a6a 604 crc=0;
zdenka 0:140ca5e86a6a 605 crc=ccc[crc^poleznakov[1]];
zdenka 0:140ca5e86a6a 606 crc=ccc[crc^poleznakov[2]];
zdenka 0:140ca5e86a6a 607 crc=ccc[crc^poleznakov[4]];
zdenka 0:140ca5e86a6a 608 poleznakov[5]=crc;
zdenka 0:140ca5e86a6a 609
zdenka 0:140ca5e86a6a 610
zdenka 0:140ca5e86a6a 611 int opakuj=1;
zdenka 0:140ca5e86a6a 612 while(opakuj==1){
zdenka 0:140ca5e86a6a 613 //odstranPotvrdenia();
zdenka 0:140ca5e86a6a 614 for(int p=0;p<=5;p++){
zdenka 0:140ca5e86a6a 615 pc.putc(poleznakov[p]);
zdenka 0:140ca5e86a6a 616 }
zdenka 0:140ca5e86a6a 617 //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza
zdenka 0:140ca5e86a6a 618 timer.start();
zdenka 0:140ca5e86a6a 619 int milisecStart = timer.read_ms();
zdenka 0:140ca5e86a6a 620 int pocetDat=0;
zdenka 0:140ca5e86a6a 621 int br;
zdenka 0:140ca5e86a6a 622 while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund
zdenka 0:140ca5e86a6a 623 br=0;
zdenka 0:140ca5e86a6a 624 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 625 pocetDat=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 626 }else{
zdenka 0:140ca5e86a6a 627 pocetDat=(199-indexcitania+1)+indexzapisu;
zdenka 0:140ca5e86a6a 628 }
zdenka 0:140ca5e86a6a 629 for(int i=0;i<pocetDat-4;i++){
zdenka 0:140ca5e86a6a 630 if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){
zdenka 0:140ca5e86a6a 631 pc.putc(0xcc);
zdenka 0:140ca5e86a6a 632 if(i!=0){
zdenka 0:140ca5e86a6a 633 for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania
zdenka 0:140ca5e86a6a 634 //if(j==-1){j=99;}
zdenka 0:140ca5e86a6a 635 int odkial=(indexcitania+j)%200;
zdenka 0:140ca5e86a6a 636 int kam=(odkial+5)%200;
zdenka 0:140ca5e86a6a 637 kruhovybuffer[kam]=kruhovybuffer[odkial];
zdenka 0:140ca5e86a6a 638 }
zdenka 0:140ca5e86a6a 639 }
zdenka 0:140ca5e86a6a 640 indexcitania=(indexcitania+5)%200;
zdenka 0:140ca5e86a6a 641 br=1;
zdenka 0:140ca5e86a6a 642 opakuj=0;
zdenka 0:140ca5e86a6a 643 break;
zdenka 0:140ca5e86a6a 644 }
zdenka 0:140ca5e86a6a 645
zdenka 0:140ca5e86a6a 646 }
zdenka 0:140ca5e86a6a 647 if(br==1){break;}
zdenka 0:140ca5e86a6a 648
zdenka 0:140ca5e86a6a 649 }
zdenka 0:140ca5e86a6a 650 timer.stop();
zdenka 0:140ca5e86a6a 651 timer.reset();
zdenka 0:140ca5e86a6a 652 }//while opakuj==1
zdenka 0:140ca5e86a6a 653 }
zdenka 0:140ca5e86a6a 654
zdenka 0:140ca5e86a6a 655
zdenka 0:140ca5e86a6a 656
zdenka 0:140ca5e86a6a 657 void zhasniDiodu(char ktoru){
zdenka 0:140ca5e86a6a 658
zdenka 0:140ca5e86a6a 659 char vypnutiediodyvnutri[6];
zdenka 0:140ca5e86a6a 660 vypnutiediodyvnutri[0]=0xA0;
zdenka 0:140ca5e86a6a 661 vypnutiediodyvnutri[1]=ktoru;
zdenka 0:140ca5e86a6a 662 vypnutiediodyvnutri[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 663 vypnutiediodyvnutri[3]=0x01;
zdenka 0:140ca5e86a6a 664 vypnutiediodyvnutri[4]=0x00;
zdenka 0:140ca5e86a6a 665 crc=0;
zdenka 0:140ca5e86a6a 666 crc=ccc[crc^vypnutiediodyvnutri[1]];
zdenka 0:140ca5e86a6a 667 crc=ccc[crc^vypnutiediodyvnutri[2]];
zdenka 0:140ca5e86a6a 668 crc=ccc[crc^vypnutiediodyvnutri[4]];
zdenka 0:140ca5e86a6a 669 vypnutiediodyvnutri[5]=crc;
zdenka 0:140ca5e86a6a 670
zdenka 0:140ca5e86a6a 671 int opakuj=1;
zdenka 0:140ca5e86a6a 672 while(opakuj==1){
zdenka 0:140ca5e86a6a 673 //odstranPotvrdenia();
zdenka 0:140ca5e86a6a 674 for(int p=0;p<=5;p++){
zdenka 0:140ca5e86a6a 675 pc.putc(vypnutiediodyvnutri[p]);
zdenka 0:140ca5e86a6a 676 }
zdenka 0:140ca5e86a6a 677 //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza
zdenka 0:140ca5e86a6a 678 timer.start();
zdenka 0:140ca5e86a6a 679 int milisecStart = timer.read_ms();
zdenka 0:140ca5e86a6a 680
zdenka 0:140ca5e86a6a 681 int br;
zdenka 0:140ca5e86a6a 682 while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund
zdenka 0:140ca5e86a6a 683 br=0;
zdenka 0:140ca5e86a6a 684 int pocetDat=0;
zdenka 0:140ca5e86a6a 685 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 686 pocetDat=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 687 }else{
zdenka 0:140ca5e86a6a 688 pocetDat=(199-indexcitania+1)+indexzapisu;
zdenka 0:140ca5e86a6a 689 }
zdenka 0:140ca5e86a6a 690 for(int i=0;i<pocetDat-4;i++){
zdenka 0:140ca5e86a6a 691 if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){
zdenka 0:140ca5e86a6a 692 pc.putc(0xcc);
zdenka 0:140ca5e86a6a 693 if(i!=0){
zdenka 0:140ca5e86a6a 694 for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania
zdenka 0:140ca5e86a6a 695 int odkial=(indexcitania+j)%200;
zdenka 0:140ca5e86a6a 696 int kam=(odkial+5)%200;
zdenka 0:140ca5e86a6a 697 kruhovybuffer[kam]=kruhovybuffer[odkial];
zdenka 0:140ca5e86a6a 698 }
zdenka 0:140ca5e86a6a 699 }
zdenka 0:140ca5e86a6a 700 indexcitania=(indexcitania+5)%200;
zdenka 0:140ca5e86a6a 701 br=1;
zdenka 0:140ca5e86a6a 702 opakuj=0;
zdenka 0:140ca5e86a6a 703 break;
zdenka 0:140ca5e86a6a 704 }
zdenka 0:140ca5e86a6a 705
zdenka 0:140ca5e86a6a 706 }
zdenka 0:140ca5e86a6a 707 if(br==1){break;}
zdenka 0:140ca5e86a6a 708
zdenka 0:140ca5e86a6a 709 }
zdenka 0:140ca5e86a6a 710 timer.stop();
zdenka 0:140ca5e86a6a 711 timer.reset();
zdenka 0:140ca5e86a6a 712 }//while opakuj==1
zdenka 0:140ca5e86a6a 713 }
zdenka 0:140ca5e86a6a 714
zdenka 0:140ca5e86a6a 715 void zamkniVytah(){
zdenka 0:140ca5e86a6a 716
zdenka 0:140ca5e86a6a 717 char zamkni[6];
zdenka 0:140ca5e86a6a 718 zamkni[0]=0xA0;
zdenka 0:140ca5e86a6a 719 zamkni[1]=ELEVATOR;
zdenka 0:140ca5e86a6a 720 zamkni[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 721 zamkni[3]=0x01;
zdenka 0:140ca5e86a6a 722 zamkni[4]=0x01;
zdenka 0:140ca5e86a6a 723
zdenka 0:140ca5e86a6a 724 crc=0;
zdenka 0:140ca5e86a6a 725 crc=ccc[crc^zamkni[1]];
zdenka 0:140ca5e86a6a 726 crc=ccc[crc^zamkni[2]];
zdenka 0:140ca5e86a6a 727 crc=ccc[crc^zamkni[4]];
zdenka 0:140ca5e86a6a 728
zdenka 0:140ca5e86a6a 729 zamkni[5]=crc;
zdenka 0:140ca5e86a6a 730
zdenka 0:140ca5e86a6a 731 int opakuj=1;
zdenka 0:140ca5e86a6a 732 while(opakuj==1){
zdenka 0:140ca5e86a6a 733 //odstranPotvrdenia();
zdenka 0:140ca5e86a6a 734 for(int p=0;p<=5;p++){
zdenka 0:140ca5e86a6a 735 pc.putc(zamkni[p]);
zdenka 0:140ca5e86a6a 736 }
zdenka 0:140ca5e86a6a 737 //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza
zdenka 0:140ca5e86a6a 738 timer.start();
zdenka 0:140ca5e86a6a 739 int milisecStart = timer.read_ms();
zdenka 0:140ca5e86a6a 740
zdenka 0:140ca5e86a6a 741 int br;
zdenka 0:140ca5e86a6a 742 while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund
zdenka 0:140ca5e86a6a 743 br=0;
zdenka 0:140ca5e86a6a 744 int pocetDat=0;
zdenka 0:140ca5e86a6a 745 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 746 pocetDat=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 747 }else{
zdenka 0:140ca5e86a6a 748 pocetDat=(199-indexcitania+1)+indexzapisu;
zdenka 0:140ca5e86a6a 749 }
zdenka 0:140ca5e86a6a 750 for(int i=0;i<pocetDat-4;i++){
zdenka 0:140ca5e86a6a 751 if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){
zdenka 0:140ca5e86a6a 752 pc.putc(0xcc);
zdenka 0:140ca5e86a6a 753 if(i!=0){
zdenka 0:140ca5e86a6a 754 for(int j=/*((indexcitania+i)%100)-1*/i-1;j>=/*indexcitania*/0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania
zdenka 0:140ca5e86a6a 755 //if(j==-1){j=99;}
zdenka 0:140ca5e86a6a 756 int odkial=(indexcitania+j)%200;
zdenka 0:140ca5e86a6a 757 int kam=(odkial+5)%200;
zdenka 0:140ca5e86a6a 758 kruhovybuffer[kam]=kruhovybuffer[odkial];
zdenka 0:140ca5e86a6a 759 }
zdenka 0:140ca5e86a6a 760 }
zdenka 0:140ca5e86a6a 761 indexcitania=(indexcitania+5)%200;
zdenka 0:140ca5e86a6a 762 br=1;
zdenka 0:140ca5e86a6a 763 opakuj=0;
zdenka 0:140ca5e86a6a 764 break;
zdenka 0:140ca5e86a6a 765 }
zdenka 0:140ca5e86a6a 766
zdenka 0:140ca5e86a6a 767 }
zdenka 0:140ca5e86a6a 768 if(br==1){break;}
zdenka 0:140ca5e86a6a 769
zdenka 0:140ca5e86a6a 770 }
zdenka 0:140ca5e86a6a 771 timer.stop();
zdenka 0:140ca5e86a6a 772 timer.reset();
zdenka 0:140ca5e86a6a 773 }//while opakuj==1
zdenka 0:140ca5e86a6a 774 }
zdenka 0:140ca5e86a6a 775
zdenka 0:140ca5e86a6a 776 void odomkniVytah(){
zdenka 0:140ca5e86a6a 777
zdenka 0:140ca5e86a6a 778 char odomkni[6];
zdenka 0:140ca5e86a6a 779 odomkni[0]=0xA0;
zdenka 0:140ca5e86a6a 780 odomkni[1]=ELEVATOR;
zdenka 0:140ca5e86a6a 781 odomkni[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 782 odomkni[3]=0x01;
zdenka 0:140ca5e86a6a 783 odomkni[4]=0x00;
zdenka 0:140ca5e86a6a 784
zdenka 0:140ca5e86a6a 785 crc=0;
zdenka 0:140ca5e86a6a 786 crc=ccc[crc^odomkni[1]];
zdenka 0:140ca5e86a6a 787 crc=ccc[crc^odomkni[2]];
zdenka 0:140ca5e86a6a 788 crc=ccc[crc^odomkni[4]];
zdenka 0:140ca5e86a6a 789
zdenka 0:140ca5e86a6a 790 odomkni[5]=crc;
zdenka 0:140ca5e86a6a 791
zdenka 0:140ca5e86a6a 792 int opakuj=1;
zdenka 0:140ca5e86a6a 793 while(opakuj==1){
zdenka 0:140ca5e86a6a 794 //odstranPotvrdenia();
zdenka 0:140ca5e86a6a 795 for(int p=0;p<=5;p++){
zdenka 0:140ca5e86a6a 796 pc.putc(odomkni[p]);
zdenka 0:140ca5e86a6a 797 }
zdenka 0:140ca5e86a6a 798 //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza
zdenka 0:140ca5e86a6a 799 timer.start();
zdenka 0:140ca5e86a6a 800 int milisecStart = timer.read_ms();
zdenka 0:140ca5e86a6a 801 int pocetDat=0;
zdenka 0:140ca5e86a6a 802 int br;
zdenka 0:140ca5e86a6a 803 while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund
zdenka 0:140ca5e86a6a 804 br=0;
zdenka 0:140ca5e86a6a 805 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 806 pocetDat=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 807 }else{
zdenka 0:140ca5e86a6a 808 pocetDat=(199-indexcitania+1)+indexzapisu;
zdenka 0:140ca5e86a6a 809 }
zdenka 0:140ca5e86a6a 810 for(int i=0;i<pocetDat-4;i++){
zdenka 0:140ca5e86a6a 811 if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){
zdenka 0:140ca5e86a6a 812 pc.putc(0xcc);
zdenka 0:140ca5e86a6a 813 if(i!=0){
zdenka 0:140ca5e86a6a 814 for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania
zdenka 0:140ca5e86a6a 815 int odkial=(indexcitania+j)%200;
zdenka 0:140ca5e86a6a 816 int kam=(odkial+5)%200;
zdenka 0:140ca5e86a6a 817 kruhovybuffer[kam]=kruhovybuffer[odkial];
zdenka 0:140ca5e86a6a 818 }
zdenka 0:140ca5e86a6a 819 }
zdenka 0:140ca5e86a6a 820 indexcitania=(indexcitania+5)%200;
zdenka 0:140ca5e86a6a 821 br=1;
zdenka 0:140ca5e86a6a 822 opakuj=0;
zdenka 0:140ca5e86a6a 823 break;
zdenka 0:140ca5e86a6a 824 }
zdenka 0:140ca5e86a6a 825
zdenka 0:140ca5e86a6a 826 }
zdenka 0:140ca5e86a6a 827 if(br==1){break;}
zdenka 0:140ca5e86a6a 828
zdenka 0:140ca5e86a6a 829 }
zdenka 0:140ca5e86a6a 830 timer.stop();
zdenka 0:140ca5e86a6a 831 timer.reset();
zdenka 0:140ca5e86a6a 832 }//while opakuj==1
zdenka 0:140ca5e86a6a 833 }
zdenka 0:140ca5e86a6a 834
zdenka 0:140ca5e86a6a 835 void zobrazPoschodie(char poschodie){
zdenka 0:140ca5e86a6a 836
zdenka 0:140ca5e86a6a 837 char infooposchodi[7];
zdenka 0:140ca5e86a6a 838 infooposchodi[0]=0xA0;
zdenka 0:140ca5e86a6a 839 infooposchodi[1]=INF_DISPLAY;
zdenka 0:140ca5e86a6a 840 infooposchodi[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 841 infooposchodi[3]=0x02;
zdenka 0:140ca5e86a6a 842 infooposchodi[4]=smerpohybu;
zdenka 0:140ca5e86a6a 843 infooposchodi[5]=poschodie;
zdenka 0:140ca5e86a6a 844
zdenka 0:140ca5e86a6a 845 crc=0;
zdenka 0:140ca5e86a6a 846 crc=ccc[crc^infooposchodi[1]];
zdenka 0:140ca5e86a6a 847 crc=ccc[crc^infooposchodi[2]];
zdenka 0:140ca5e86a6a 848 crc=ccc[crc^infooposchodi[4]];
zdenka 0:140ca5e86a6a 849 crc=ccc[crc^infooposchodi[5]];
zdenka 0:140ca5e86a6a 850 infooposchodi[6]=crc;
zdenka 0:140ca5e86a6a 851
zdenka 0:140ca5e86a6a 852 int opakuj=1;
zdenka 0:140ca5e86a6a 853 while(opakuj==1){
zdenka 0:140ca5e86a6a 854 //odstranPotvrdenia();
zdenka 0:140ca5e86a6a 855 for(int p=0;p<=6;p++){
zdenka 0:140ca5e86a6a 856 while(pc.writable()==0){}
zdenka 0:140ca5e86a6a 857 pc.putc(infooposchodi[p]);
zdenka 0:140ca5e86a6a 858 }
zdenka 0:140ca5e86a6a 859 //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza
zdenka 0:140ca5e86a6a 860 timer.start();
zdenka 0:140ca5e86a6a 861 int milisecStart = timer.read_ms();
zdenka 0:140ca5e86a6a 862
zdenka 0:140ca5e86a6a 863 int br;
zdenka 0:140ca5e86a6a 864 while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund
zdenka 0:140ca5e86a6a 865 br=0;
zdenka 0:140ca5e86a6a 866 int pocetDat=0;
zdenka 0:140ca5e86a6a 867 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 868 pocetDat=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 869 }else{
zdenka 0:140ca5e86a6a 870 pocetDat=(199-indexcitania+1)+indexzapisu;
zdenka 0:140ca5e86a6a 871 }
zdenka 0:140ca5e86a6a 872 for(int i=0;i<pocetDat-4;i++){
zdenka 0:140ca5e86a6a 873 if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){
zdenka 0:140ca5e86a6a 874 pc.putc(0xcc);
zdenka 0:140ca5e86a6a 875 if(i!=0){
zdenka 0:140ca5e86a6a 876 for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania
zdenka 0:140ca5e86a6a 877 int odkial=(indexcitania+j)%200;
zdenka 0:140ca5e86a6a 878 int kam=(odkial+5)%200;
zdenka 0:140ca5e86a6a 879 kruhovybuffer[kam]=kruhovybuffer[odkial];
zdenka 0:140ca5e86a6a 880 }
zdenka 0:140ca5e86a6a 881 }
zdenka 0:140ca5e86a6a 882 indexcitania=(indexcitania+5)%200;
zdenka 0:140ca5e86a6a 883 br=1;
zdenka 0:140ca5e86a6a 884 opakuj=0;
zdenka 0:140ca5e86a6a 885 break;
zdenka 0:140ca5e86a6a 886 }
zdenka 0:140ca5e86a6a 887
zdenka 0:140ca5e86a6a 888 }
zdenka 0:140ca5e86a6a 889 if(br==1){break;}
zdenka 0:140ca5e86a6a 890
zdenka 0:140ca5e86a6a 891 }
zdenka 0:140ca5e86a6a 892 timer.stop();
zdenka 0:140ca5e86a6a 893 timer.reset();
zdenka 0:140ca5e86a6a 894 }//while opakuj==1
zdenka 0:140ca5e86a6a 895 }
zdenka 0:140ca5e86a6a 896
zdenka 0:140ca5e86a6a 897 void spustiVytah(int nasledujucePoschodie){
zdenka 0:140ca5e86a6a 898
zdenka 0:140ca5e86a6a 899 char spravamotoru[10];
zdenka 0:140ca5e86a6a 900 if(aktpozicia>nasledujucePoschodie){
zdenka 0:140ca5e86a6a 901 spravamotoru[5]=0x9c;
zdenka 0:140ca5e86a6a 902 spravamotoru[6]=0xff;
zdenka 0:140ca5e86a6a 903 spravamotoru[7]=0xff;
zdenka 0:140ca5e86a6a 904 spravamotoru[8]=0xff;
zdenka 0:140ca5e86a6a 905 smerpohybu=0x02;
zdenka 0:140ca5e86a6a 906 }else if(aktpozicia<nasledujucePoschodie){
zdenka 0:140ca5e86a6a 907 spravamotoru[5]=0x64;
zdenka 0:140ca5e86a6a 908 spravamotoru[6]=0x00;
zdenka 0:140ca5e86a6a 909 spravamotoru[7]=0x00;
zdenka 0:140ca5e86a6a 910 spravamotoru[8]=0x00;
zdenka 0:140ca5e86a6a 911 smerpohybu=0x01;
zdenka 0:140ca5e86a6a 912 }
zdenka 0:140ca5e86a6a 913 //pustam motor
zdenka 0:140ca5e86a6a 914 spravamotoru[0]=0xA0;
zdenka 0:140ca5e86a6a 915 spravamotoru[1]=MOTOR;
zdenka 0:140ca5e86a6a 916 spravamotoru[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 917 spravamotoru[3]=0x05;
zdenka 0:140ca5e86a6a 918 spravamotoru[4]=0x2;
zdenka 0:140ca5e86a6a 919
zdenka 0:140ca5e86a6a 920 crc=0;
zdenka 0:140ca5e86a6a 921 crc=ccc[crc^spravamotoru[1]];
zdenka 0:140ca5e86a6a 922 crc=ccc[crc^spravamotoru[2]];
zdenka 0:140ca5e86a6a 923 crc=ccc[crc^spravamotoru[4]];
zdenka 0:140ca5e86a6a 924 crc=ccc[crc^spravamotoru[5]];
zdenka 0:140ca5e86a6a 925 crc=ccc[crc^spravamotoru[6]];
zdenka 0:140ca5e86a6a 926 crc=ccc[crc^spravamotoru[7]];
zdenka 0:140ca5e86a6a 927 crc=ccc[crc^spravamotoru[8]];
zdenka 0:140ca5e86a6a 928
zdenka 0:140ca5e86a6a 929 spravamotoru[9]=crc;
zdenka 0:140ca5e86a6a 930
zdenka 0:140ca5e86a6a 931 int opakuj=1;
zdenka 0:140ca5e86a6a 932 while(opakuj==1){
zdenka 0:140ca5e86a6a 933 // odstranPotvrdenia();
zdenka 0:140ca5e86a6a 934 for(int p=0;p<=9;p++){
zdenka 0:140ca5e86a6a 935 while(pc.writable()==0){}
zdenka 0:140ca5e86a6a 936 pc.putc(spravamotoru[p]);
zdenka 0:140ca5e86a6a 937 }
zdenka 0:140ca5e86a6a 938
zdenka 0:140ca5e86a6a 939 //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza
zdenka 0:140ca5e86a6a 940 timer.start();
zdenka 0:140ca5e86a6a 941 int milisecStart = timer.read_ms();
zdenka 0:140ca5e86a6a 942
zdenka 0:140ca5e86a6a 943 int br;
zdenka 0:140ca5e86a6a 944 while((timer.read_ms()-milisecStart)<100){//kym je ubehnuty cas mensi ako 100 milisekund
zdenka 0:140ca5e86a6a 945 br=0;
zdenka 0:140ca5e86a6a 946 int pocetDat=0;
zdenka 0:140ca5e86a6a 947 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 948 pocetDat=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 949 }else{
zdenka 0:140ca5e86a6a 950 pocetDat=(199-indexcitania+1)+indexzapisu;
zdenka 0:140ca5e86a6a 951 }
zdenka 0:140ca5e86a6a 952 for(int i=0;i<pocetDat-4;i++){
zdenka 0:140ca5e86a6a 953 if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){
zdenka 0:140ca5e86a6a 954 pc.putc(0xcc);
zdenka 0:140ca5e86a6a 955 if(i!=0){
zdenka 0:140ca5e86a6a 956 for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania
zdenka 0:140ca5e86a6a 957 int odkial=(indexcitania+j)%200;
zdenka 0:140ca5e86a6a 958 int kam=(odkial+5)%200;
zdenka 0:140ca5e86a6a 959 kruhovybuffer[kam]=kruhovybuffer[odkial];
zdenka 0:140ca5e86a6a 960 }
zdenka 0:140ca5e86a6a 961 }
zdenka 0:140ca5e86a6a 962 indexcitania=(indexcitania+5)%200;
zdenka 0:140ca5e86a6a 963 br=1;
zdenka 0:140ca5e86a6a 964 opakuj=0;
zdenka 0:140ca5e86a6a 965 break;
zdenka 0:140ca5e86a6a 966 }
zdenka 0:140ca5e86a6a 967
zdenka 0:140ca5e86a6a 968
zdenka 0:140ca5e86a6a 969 }
zdenka 0:140ca5e86a6a 970 if(br==1){break;}
zdenka 0:140ca5e86a6a 971 }
zdenka 0:140ca5e86a6a 972 timer.stop();
zdenka 0:140ca5e86a6a 973 timer.reset();
zdenka 0:140ca5e86a6a 974 }//while opakuj==1
zdenka 0:140ca5e86a6a 975 }
zdenka 0:140ca5e86a6a 976
zdenka 0:140ca5e86a6a 977
zdenka 0:140ca5e86a6a 978 void watchdogReset(){
zdenka 0:140ca5e86a6a 979 char watchdogRes[6];
zdenka 0:140ca5e86a6a 980 watchdogRes[0]=0xA0;
zdenka 0:140ca5e86a6a 981 watchdogRes[1]=WATCHDOG_TIMER;
zdenka 0:140ca5e86a6a 982 watchdogRes[2]=MOJA_ADRESA;
zdenka 0:140ca5e86a6a 983 watchdogRes[3]=0x01;
zdenka 0:140ca5e86a6a 984 watchdogRes[4]=0x02;
zdenka 0:140ca5e86a6a 985
zdenka 0:140ca5e86a6a 986 crc=0;
zdenka 0:140ca5e86a6a 987 crc=ccc[crc^watchdogRes[1]];
zdenka 0:140ca5e86a6a 988 crc=ccc[crc^watchdogRes[2]];
zdenka 0:140ca5e86a6a 989 crc=ccc[crc^watchdogRes[4]];
zdenka 0:140ca5e86a6a 990 watchdogRes[5]=crc;
zdenka 0:140ca5e86a6a 991
zdenka 0:140ca5e86a6a 992 for(int p=0;p<=5;p++){
zdenka 0:140ca5e86a6a 993 while(pc.writable()==0){}
zdenka 0:140ca5e86a6a 994 pc.putc(watchdogRes[p]);
zdenka 0:140ca5e86a6a 995 }
zdenka 0:140ca5e86a6a 996
zdenka 0:140ca5e86a6a 997 }
zdenka 0:140ca5e86a6a 998
zdenka 0:140ca5e86a6a 999 void odstranPotvrdenia(){
zdenka 0:140ca5e86a6a 1000 //////////////////kym ubehne cas zistujem ci sa niekde v poli prijatych znakov nenachadza
zdenka 0:140ca5e86a6a 1001 int br=0;
zdenka 0:140ca5e86a6a 1002 while(br==0){
zdenka 0:140ca5e86a6a 1003 int pocetDat=0;
zdenka 0:140ca5e86a6a 1004 if(indexcitania<=indexzapisu){
zdenka 0:140ca5e86a6a 1005 pocetDat=indexzapisu-indexcitania;
zdenka 0:140ca5e86a6a 1006 }else{
zdenka 0:140ca5e86a6a 1007 pocetDat=(199-indexcitania+1)+indexzapisu;
zdenka 0:140ca5e86a6a 1008 }
zdenka 0:140ca5e86a6a 1009 for(int i=0;i<pocetDat-4;i++){
zdenka 0:140ca5e86a6a 1010 if(kruhovybuffer[(indexcitania+i)%200]==0xA0&&kruhovybuffer[(indexcitania+1+i)%200]==0x00&&kruhovybuffer[(indexcitania+2+i)%200]==0x00&&kruhovybuffer[(indexcitania+3+i)%200]==0x00&&kruhovybuffer[(indexcitania+4+i)%200]==0x00){
zdenka 0:140ca5e86a6a 1011 pc.putc(0xbb);
zdenka 0:140ca5e86a6a 1012 if(i!=0){
zdenka 0:140ca5e86a6a 1013 for(int j=i-1;j>=0;j--){//pojde od indexu kde sa potvrdzovacia sprava nasla az po index citania
zdenka 0:140ca5e86a6a 1014 int odkial=(indexcitania+j)%200;
zdenka 0:140ca5e86a6a 1015 int kam=(odkial+5)%200;
zdenka 0:140ca5e86a6a 1016 kruhovybuffer[kam]=kruhovybuffer[odkial];
zdenka 0:140ca5e86a6a 1017 }
zdenka 0:140ca5e86a6a 1018 }
zdenka 0:140ca5e86a6a 1019 indexcitania=(indexcitania+5)%200;
zdenka 0:140ca5e86a6a 1020 break;
zdenka 0:140ca5e86a6a 1021 }
zdenka 0:140ca5e86a6a 1022
zdenka 0:140ca5e86a6a 1023 if(i==pocetDat-5){
zdenka 0:140ca5e86a6a 1024 br=1;
zdenka 0:140ca5e86a6a 1025 }
zdenka 0:140ca5e86a6a 1026 }
zdenka 0:140ca5e86a6a 1027 }
zdenka 0:140ca5e86a6a 1028
zdenka 0:140ca5e86a6a 1029 }