
control simulation of elevator
ovladanie.cpp
- Committer:
- kicin2
- Date:
- 2019-01-23
- Revision:
- 0:62c18ef61b61
- Child:
- 1:7dea46c9d8dc
File content as of revision 0:62c18ef61b61:
/** * @file ovladanie.cpp * @brief Súbor obsahuje funkcie ktoré odosielajú údaje simulátoru * @author Benedikt Kicin * @date 21.1.2018 */ #include "komunikacia.h" /** * Funkcia ktorá riadi pohyb výťahu, ktorý buď zastaví alebo sa pohybuje horea a nadol * @param command - parameter podľa ktorého sa zadáva aký typ pohybu má výťah vykonať */ void motor(int command) //0-stop, 1 - hore, 2-dole, 3-pocet pohybov { switch(command) { case 0: {//stop elevator int packet0[]= {0xA0,0xf1,0x00,0x01,0x01}; //doska; rychlost motoru; vytah; velkost dat; data sendTo(packet0); break; } case 1: {//up move of elevator int packet1[]= {0xA0,0xf1,0x00,0x05,0x02,0x00,0x00,0x00,0x64}; //data rychlost 100 hore sendTo(packet1); break; } case 2: {//down move of elevator int packet2[]= {0xA0,0xf1,0x00,0x05,0x02,0xFF,0xFF,0xFF,0x9C}; //data rychlost 100 dole sendTo(packet2); break; } case 3: { //pocet spusteni motora int packet3[]= {0xA0,0xf1,0x00,0x01,0x03}; sendTo(packet3); break; } } } /** * Funkcia ktorá riadi zamykanie výťahu * @param command - parameter podľa ktorého sa kabínka * odomkne - 0, zamkne - 1, pošle aktuálny stav -2 */ void kabinkaLock(int command) { switch(command) { case 0: {//Unlock the door int packet0[]= {0xA0,0xf0,0x00,0x01,0x00}; //doska; vytah sendTo(packet0); break; } case 1: {//Lock the door int packet1[]= {0xA0,0xf0,0x00,0x01,0x01}; sendTo(packet1); break; } default : { //send status int packet1[]= {0xA0,0xf0,0x00,0x01,0x02}; sendTo(packet1); break; } } } /** * Funkcia ktorá rozsviecuje a zhasína LED indikátory tlačidiel v simulátore * @param floor - parameter ktorý vyjadruje na akom poschodí sa má LED rozsvietiť/zhasnúť * @param command - riadi či sa LED zhasne - 0 alebo rozsvieti - 1 */ void ledButton(int floor, int command) //(0x21,1) { //int pom = floor%0x10; //mod16 if(command == 0) { //offLed int packet0[]= {0xA0,floor,0x00,0x01,0x00}; //vypni sendTo(packet0); } else { int packet0[]= {0xA0,floor,0x00,0x01,0x01}; //inak zapni sendTo(packet0); } } /** * Funkcia ktorá vykresľuje na displej výťahu kde sa výťah nachádza a ktorým smerom sa pohybuje * @param floor - parameter ktorý vyjadruje na akom poschodí sa výťah nachádza * @param command - riadi aký sa má indikovať smer pohybu nahor - 1 alebo nadol - 2 */ void LCDdisp(int floor,int command) { int addr = 0x30; int data0; if(command == 1) {//up arrow data0 = 0x01; } else if (command == 2) { //down arrow data0= 0x02; } else data0= 0x03; switch(floor) { case 0: {// P floor int packet0[]= {0xA0,addr,0x00,0x02,data0,0x50}; sendTo(packet0); break; } case 1: {// 1st floor int packet0[]= {0xA0,addr,0x00,0x02,data0,0x31}; sendTo(packet0); break; } case 2: {// 2nd floor int packet0[]= {0xA0,addr,0x00,0x02,data0,0x32}; sendTo(packet0); break; } case 3: {// 3rd floor int packet0[]= {0xA0,addr,0x00,0x02,data0,0x33}; sendTo(packet0); break; } case 4: {// 4th floor int packet0[]= {0xA0,addr,0x00,0x02,data0,0x34}; sendTo(packet0); break; } } } /** * Funkcia ktorá inicializuje uvodnné nastavenie LED tlačidiel výťahu */ void ledReset() { for (int j=0x10; j<0x15; j++) { ledButton(j, 0); int k=j+0x10; ledButton(k, 0); } }