Robert Sochuliak
/
Vytah
test
ElevatorMessenge.cpp@0:e541909ea6b0, 2019-01-24 (annotated)
- Committer:
- hodgins
- Date:
- Thu Jan 24 06:35:38 2019 +0000
- Revision:
- 0:e541909ea6b0
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hodgins | 0:e541909ea6b0 | 1 | #include "Communication.h" |
hodgins | 0:e541909ea6b0 | 2 | #include "ElevatorMessenge.h" |
hodgins | 0:e541909ea6b0 | 3 | |
hodgins | 0:e541909ea6b0 | 4 | |
hodgins | 0:e541909ea6b0 | 5 | // Funkcia, ktorá posiela príkazy výťahu na pohyb |
hodgins | 0:e541909ea6b0 | 6 | void moveElevator(int i) |
hodgins | 0:e541909ea6b0 | 7 | { |
hodgins | 0:e541909ea6b0 | 8 | if (i == 0) // Výťah má zastať |
hodgins | 0:e541909ea6b0 | 9 | { |
hodgins | 0:e541909ea6b0 | 10 | char stopMotor[] = {0x01}; |
hodgins | 0:e541909ea6b0 | 11 | paket stop = {.adresa = 0xf1, .dlzkaDat = 0x01, .data = stopMotor}; |
hodgins | 0:e541909ea6b0 | 12 | sendData(stop); |
hodgins | 0:e541909ea6b0 | 13 | } |
hodgins | 0:e541909ea6b0 | 14 | if (i == 1) // Výťah sa má pohnúť smerom na hor - rýchlosť 100 |
hodgins | 0:e541909ea6b0 | 15 | { |
hodgins | 0:e541909ea6b0 | 16 | char up[] = {0x02, 0x00, 0x00, 0x00, 0x64}; |
hodgins | 0:e541909ea6b0 | 17 | paket moveUp = {.adresa = 0xf1, .dlzkaDat = 0x05, .data = up}; |
hodgins | 0:e541909ea6b0 | 18 | sendData(moveUp); |
hodgins | 0:e541909ea6b0 | 19 | } |
hodgins | 0:e541909ea6b0 | 20 | if (i == -1) // V=yťah sa má pohnúť smerom na dol - rýchlosť -100 |
hodgins | 0:e541909ea6b0 | 21 | { |
hodgins | 0:e541909ea6b0 | 22 | char down[] = {0x02, 0xff, 0xff, 0xff, 0x9c}; |
hodgins | 0:e541909ea6b0 | 23 | paket moveDown = {.adresa = 0xf1, .dlzkaDat = 0x05, .data = down}; |
hodgins | 0:e541909ea6b0 | 24 | sendData(moveDown); |
hodgins | 0:e541909ea6b0 | 25 | } |
hodgins | 0:e541909ea6b0 | 26 | } |
hodgins | 0:e541909ea6b0 | 27 | |
hodgins | 0:e541909ea6b0 | 28 | //Funkcia rieši zasviedenie LED vo výťahu, nutný 2 miestny parameter |
hodgins | 0:e541909ea6b0 | 29 | void elevatorLedON(int id) |
hodgins | 0:e541909ea6b0 | 30 | { |
hodgins | 0:e541909ea6b0 | 31 | char command[] = {0x01}; |
hodgins | 0:e541909ea6b0 | 32 | char adresa = 0x00; |
hodgins | 0:e541909ea6b0 | 33 | |
hodgins | 0:e541909ea6b0 | 34 | switch(id) // prvá vonkajšia/vnútorná LED, druhá číslica je poschodie |
hodgins | 0:e541909ea6b0 | 35 | { |
hodgins | 0:e541909ea6b0 | 36 | case 01: adresa = 0x10 ; break; // Prízemie, LED na poschodí-vonkajšia |
hodgins | 0:e541909ea6b0 | 37 | case 02: adresa = 0x20 ; break; |
hodgins | 0:e541909ea6b0 | 38 | case 11: adresa = 0x11 ; break; |
hodgins | 0:e541909ea6b0 | 39 | case 12: adresa = 0x21 ; break; // 1.poschodie, vnútorná LED |
hodgins | 0:e541909ea6b0 | 40 | case 21: adresa = 0x12 ; break; |
hodgins | 0:e541909ea6b0 | 41 | case 22: adresa = 0x22 ; break; |
hodgins | 0:e541909ea6b0 | 42 | case 31: adresa = 0x13 ; break; |
hodgins | 0:e541909ea6b0 | 43 | case 32: adresa = 0x23 ; break; |
hodgins | 0:e541909ea6b0 | 44 | case 41: adresa = 0x14 ; break; |
hodgins | 0:e541909ea6b0 | 45 | case 42: adresa = 0x24 ; break; |
hodgins | 0:e541909ea6b0 | 46 | } |
hodgins | 0:e541909ea6b0 | 47 | paket ledOn = {.adresa = adresa, .dlzkaDat = 0x01, .data = command}; |
hodgins | 0:e541909ea6b0 | 48 | sendData(ledOn); // Odoslanie správy |
hodgins | 0:e541909ea6b0 | 49 | } |
hodgins | 0:e541909ea6b0 | 50 | |
hodgins | 0:e541909ea6b0 | 51 | //Funkcia, ktorá posiela príkazy výťahu, čo sa má zobraziť na displeji |
hodgins | 0:e541909ea6b0 | 52 | void elevatorDisplay(int direction, int floor) |
hodgins | 0:e541909ea6b0 | 53 | { |
hodgins | 0:e541909ea6b0 | 54 | char command [2]; |
hodgins | 0:e541909ea6b0 | 55 | switch(direction) // Zobrazuje pohyb výťahu |
hodgins | 0:e541909ea6b0 | 56 | { |
hodgins | 0:e541909ea6b0 | 57 | case -1: command[0]=0x02; break; // Smer dolu |
hodgins | 0:e541909ea6b0 | 58 | case 0: command[0]=0xFF; break; // Stojí |
hodgins | 0:e541909ea6b0 | 59 | case 1: command[0]=0x01; break; // Smer hore |
hodgins | 0:e541909ea6b0 | 60 | default: |
hodgins | 0:e541909ea6b0 | 61 | command[0]=0x00; // Neplatné dáta |
hodgins | 0:e541909ea6b0 | 62 | } |
hodgins | 0:e541909ea6b0 | 63 | switch(floor) // Aktuálne poschodie |
hodgins | 0:e541909ea6b0 | 64 | { |
hodgins | 0:e541909ea6b0 | 65 | case 0: command[1]=0x50; break; // Prízemie |
hodgins | 0:e541909ea6b0 | 66 | case 1: command[1]=0x31; break; // 1.poschodie |
hodgins | 0:e541909ea6b0 | 67 | case 2: command[1]=0x32; break; |
hodgins | 0:e541909ea6b0 | 68 | case 3: command[1]=0x33; break; |
hodgins | 0:e541909ea6b0 | 69 | case 4: command[1]=0x34; break; // 4.poschodie |
hodgins | 0:e541909ea6b0 | 70 | default: |
hodgins | 0:e541909ea6b0 | 71 | command[1]=0x2D; // Nedefinovaný stav "-" |
hodgins | 0:e541909ea6b0 | 72 | } |
hodgins | 0:e541909ea6b0 | 73 | |
hodgins | 0:e541909ea6b0 | 74 | paket display = {.adresa = 0x30, .dlzkaDat = 0x02, .data = command}; |
hodgins | 0:e541909ea6b0 | 75 | sendData(display); // Odoslanie správy |
hodgins | 0:e541909ea6b0 | 76 | } |
hodgins | 0:e541909ea6b0 | 77 | |
hodgins | 0:e541909ea6b0 | 78 | //Funkcia na zatváranie a otváranie dverí |
hodgins | 0:e541909ea6b0 | 79 | void elevatorCabineLock(bool lock) |
hodgins | 0:e541909ea6b0 | 80 | { |
hodgins | 0:e541909ea6b0 | 81 | char command[1]; |
hodgins | 0:e541909ea6b0 | 82 | if (lock) //ak bol parameter true - dvere sa zavrú |
hodgins | 0:e541909ea6b0 | 83 | { |
hodgins | 0:e541909ea6b0 | 84 | command[0] = 0x01; |
hodgins | 0:e541909ea6b0 | 85 | } |
hodgins | 0:e541909ea6b0 | 86 | else //inak sa dvere otvoria |
hodgins | 0:e541909ea6b0 | 87 | { |
hodgins | 0:e541909ea6b0 | 88 | command[0] = 0x00; |
hodgins | 0:e541909ea6b0 | 89 | } |
hodgins | 0:e541909ea6b0 | 90 | paket reset = {.adresa = 0xf0, .dlzkaDat = 0x01, .data = command}; |
hodgins | 0:e541909ea6b0 | 91 | sendData(reset); // Odoslanie správy |
hodgins | 0:e541909ea6b0 | 92 | } |
hodgins | 0:e541909ea6b0 | 93 | |
hodgins | 0:e541909ea6b0 | 94 | //Funkcia zasielajúca na konzolu výťahu chybovú hlášku |
hodgins | 0:e541909ea6b0 | 95 | void sendError() |
hodgins | 0:e541909ea6b0 | 96 | { |
hodgins | 0:e541909ea6b0 | 97 | paket errorText = {.adresa = 0xD0, .dlzkaDat = 0x0C, .data = "Error data\n\r"}; |
hodgins | 0:e541909ea6b0 | 98 | sendData(errorText); |
hodgins | 0:e541909ea6b0 | 99 | } |
hodgins | 0:e541909ea6b0 | 100 | |
hodgins | 0:e541909ea6b0 | 101 | //Funkcia na zhas=inanie LED indikátorov - zhasnú obe LED na poschodí |
hodgins | 0:e541909ea6b0 | 102 | void elevatorLedOFF(int id) |
hodgins | 0:e541909ea6b0 | 103 | { |
hodgins | 0:e541909ea6b0 | 104 | char command [] = {0x00}; |
hodgins | 0:e541909ea6b0 | 105 | char adresa_1=0x00; |
hodgins | 0:e541909ea6b0 | 106 | char adresa_2=0x00; |
hodgins | 0:e541909ea6b0 | 107 | |
hodgins | 0:e541909ea6b0 | 108 | switch(id) // Na ktorom poschodí sa má zhasnúť |
hodgins | 0:e541909ea6b0 | 109 | { |
hodgins | 0:e541909ea6b0 | 110 | case 0: adresa_1 =0x10; adresa_2 =0x20 ;break; //Prízemie |
hodgins | 0:e541909ea6b0 | 111 | case 1: adresa_1 =0x11; adresa_2 =0x21 ;break; //1.poschodie |
hodgins | 0:e541909ea6b0 | 112 | case 2: adresa_1 =0x12; adresa_2 =0x22 ;break; |
hodgins | 0:e541909ea6b0 | 113 | case 3: adresa_1 =0x13; adresa_2 =0x23 ;break; |
hodgins | 0:e541909ea6b0 | 114 | case 4: adresa_1 =0x14; adresa_2 =0x24 ;break; |
hodgins | 0:e541909ea6b0 | 115 | } |
hodgins | 0:e541909ea6b0 | 116 | paket ledOff_1 = {.adresa = adresa_1, .dlzkaDat = 0x01, .data = command}; |
hodgins | 0:e541909ea6b0 | 117 | paket ledOff_2 = {.adresa = adresa_2, .dlzkaDat = 0x01, .data = command}; |
hodgins | 0:e541909ea6b0 | 118 | sendData(ledOff_1); // LED na poschodí |
hodgins | 0:e541909ea6b0 | 119 | sendData(ledOff_2); // LED vo výťahu |
hodgins | 0:e541909ea6b0 | 120 | } |