Danius Kalvaitis
/
danBed_communicate
Communicate with danBed via UART
main.cpp@1:1d18a2a3e9a0, 2015-02-19 (annotated)
- Committer:
- DaniusKalv
- Date:
- Thu Feb 19 12:01:30 2015 +0000
- Revision:
- 1:1d18a2a3e9a0
- Parent:
- 0:fc1ff02f51e1
- Child:
- 2:4e81ddaec100
Advanced control of each pin
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DaniusKalv | 0:fc1ff02f51e1 | 1 | #include "mbed.h" |
DaniusKalv | 0:fc1ff02f51e1 | 2 | #include <string> |
DaniusKalv | 0:fc1ff02f51e1 | 3 | |
DaniusKalv | 1:1d18a2a3e9a0 | 4 | DigitalOut P5(p5); |
DaniusKalv | 1:1d18a2a3e9a0 | 5 | DigitalOut P6(p6); |
DaniusKalv | 1:1d18a2a3e9a0 | 6 | DigitalOut P7(p7); |
DaniusKalv | 1:1d18a2a3e9a0 | 7 | DigitalOut P8(p8); |
DaniusKalv | 1:1d18a2a3e9a0 | 8 | DigitalOut P9(p9); |
DaniusKalv | 1:1d18a2a3e9a0 | 9 | DigitalOut P10(p10); |
DaniusKalv | 1:1d18a2a3e9a0 | 10 | DigitalOut P11(p11); |
DaniusKalv | 1:1d18a2a3e9a0 | 11 | DigitalOut P12(p12); |
DaniusKalv | 1:1d18a2a3e9a0 | 12 | DigitalOut P13(p13); |
DaniusKalv | 1:1d18a2a3e9a0 | 13 | DigitalOut P14(p14); |
DaniusKalv | 1:1d18a2a3e9a0 | 14 | |
DaniusKalv | 1:1d18a2a3e9a0 | 15 | AnalogIn P15(p15); |
DaniusKalv | 1:1d18a2a3e9a0 | 16 | AnalogIn P16(p16); |
DaniusKalv | 1:1d18a2a3e9a0 | 17 | AnalogIn P17(p17); |
DaniusKalv | 1:1d18a2a3e9a0 | 18 | AnalogIn P18(p18); |
DaniusKalv | 1:1d18a2a3e9a0 | 19 | AnalogIn P19(p19); |
DaniusKalv | 1:1d18a2a3e9a0 | 20 | AnalogIn P20(p20); |
DaniusKalv | 1:1d18a2a3e9a0 | 21 | |
DaniusKalv | 1:1d18a2a3e9a0 | 22 | PwmOut P21(p21); |
DaniusKalv | 1:1d18a2a3e9a0 | 23 | PwmOut P22(p22); |
DaniusKalv | 1:1d18a2a3e9a0 | 24 | PwmOut P23(p23); |
DaniusKalv | 1:1d18a2a3e9a0 | 25 | PwmOut P24(p24); |
DaniusKalv | 1:1d18a2a3e9a0 | 26 | PwmOut P25(p25); |
DaniusKalv | 1:1d18a2a3e9a0 | 27 | PwmOut P26(p26); |
DaniusKalv | 1:1d18a2a3e9a0 | 28 | |
DaniusKalv | 1:1d18a2a3e9a0 | 29 | DigitalOut P27(p27); |
DaniusKalv | 1:1d18a2a3e9a0 | 30 | DigitalOut P28(p28); |
DaniusKalv | 1:1d18a2a3e9a0 | 31 | DigitalOut P29(p29); |
DaniusKalv | 1:1d18a2a3e9a0 | 32 | DigitalOut P30(p30); |
DaniusKalv | 1:1d18a2a3e9a0 | 33 | |
DaniusKalv | 0:fc1ff02f51e1 | 34 | PwmOut RED(LED1); |
DaniusKalv | 0:fc1ff02f51e1 | 35 | PwmOut BLUE(LED2); |
DaniusKalv | 0:fc1ff02f51e1 | 36 | PwmOut GREEN(LED3); |
DaniusKalv | 0:fc1ff02f51e1 | 37 | DigitalOut RGB(LED4); |
DaniusKalv | 0:fc1ff02f51e1 | 38 | |
DaniusKalv | 0:fc1ff02f51e1 | 39 | //Serial pc(p28, p27); |
DaniusKalv | 0:fc1ff02f51e1 | 40 | Serial pc(USBTX, USBRX); |
DaniusKalv | 0:fc1ff02f51e1 | 41 | |
DaniusKalv | 0:fc1ff02f51e1 | 42 | void receive(); |
DaniusKalv | 1:1d18a2a3e9a0 | 43 | void extractCommand(char *buffer, int &value); |
DaniusKalv | 1:1d18a2a3e9a0 | 44 | int power(int pow); |
DaniusKalv | 0:fc1ff02f51e1 | 45 | char temp[100]; |
DaniusKalv | 0:fc1ff02f51e1 | 46 | |
DaniusKalv | 0:fc1ff02f51e1 | 47 | int main() { |
DaniusKalv | 0:fc1ff02f51e1 | 48 | |
DaniusKalv | 0:fc1ff02f51e1 | 49 | RED = 1; |
DaniusKalv | 0:fc1ff02f51e1 | 50 | GREEN = 1; |
DaniusKalv | 0:fc1ff02f51e1 | 51 | BLUE = 1; |
DaniusKalv | 0:fc1ff02f51e1 | 52 | RGB = 0; |
DaniusKalv | 0:fc1ff02f51e1 | 53 | |
DaniusKalv | 0:fc1ff02f51e1 | 54 | pc.baud(115200); |
DaniusKalv | 0:fc1ff02f51e1 | 55 | |
DaniusKalv | 1:1d18a2a3e9a0 | 56 | pc.printf("\r\nWelcome to danBed communication v1.1!"); |
DaniusKalv | 0:fc1ff02f51e1 | 57 | pc.printf("\r\nWrite 'Labas' to continue...\r\n"); |
DaniusKalv | 0:fc1ff02f51e1 | 58 | |
DaniusKalv | 0:fc1ff02f51e1 | 59 | GET: |
DaniusKalv | 0:fc1ff02f51e1 | 60 | receive(); |
DaniusKalv | 0:fc1ff02f51e1 | 61 | string labas = "Labas"; |
DaniusKalv | 0:fc1ff02f51e1 | 62 | |
DaniusKalv | 0:fc1ff02f51e1 | 63 | if (temp == labas) pc.printf("\r\nLabas!!!\r\n"); |
DaniusKalv | 0:fc1ff02f51e1 | 64 | else{ |
DaniusKalv | 0:fc1ff02f51e1 | 65 | pc.printf("\r\nTry again! Type 'Labas'...\r\n"); |
DaniusKalv | 0:fc1ff02f51e1 | 66 | goto GET; |
DaniusKalv | 0:fc1ff02f51e1 | 67 | } |
DaniusKalv | 0:fc1ff02f51e1 | 68 | |
DaniusKalv | 0:fc1ff02f51e1 | 69 | delete &labas; |
DaniusKalv | 0:fc1ff02f51e1 | 70 | |
DaniusKalv | 0:fc1ff02f51e1 | 71 | while(1) { |
DaniusKalv | 0:fc1ff02f51e1 | 72 | |
DaniusKalv | 0:fc1ff02f51e1 | 73 | receive(); |
DaniusKalv | 1:1d18a2a3e9a0 | 74 | char buffer[10]; |
DaniusKalv | 1:1d18a2a3e9a0 | 75 | int value = 0; |
DaniusKalv | 0:fc1ff02f51e1 | 76 | |
DaniusKalv | 1:1d18a2a3e9a0 | 77 | memset(buffer, 0, sizeof(buffer)); |
DaniusKalv | 1:1d18a2a3e9a0 | 78 | extractCommand(buffer, value); |
DaniusKalv | 0:fc1ff02f51e1 | 79 | |
DaniusKalv | 1:1d18a2a3e9a0 | 80 | |
DaniusKalv | 1:1d18a2a3e9a0 | 81 | if(strcmp(buffer, "RGB") == 0){ |
DaniusKalv | 0:fc1ff02f51e1 | 82 | RGB = value; |
DaniusKalv | 0:fc1ff02f51e1 | 83 | if(value == 1) pc.printf("\r\nRGB turned ON\r\n"); |
DaniusKalv | 0:fc1ff02f51e1 | 84 | else pc.printf("\r\nRGB turned OFF\r\n"); |
DaniusKalv | 0:fc1ff02f51e1 | 85 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 86 | else if(strcmp(buffer, "RED") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 87 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 88 | RED = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 89 | pc.printf("\r\nRED value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 90 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 91 | else if(strcmp(buffer, "GREEN") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 92 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 93 | GREEN = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 94 | pc.printf("\r\nGREEN value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 95 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 96 | else if(strcmp(buffer, "BLUE") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 97 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 98 | BLUE = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 99 | pc.printf("\r\nBLUE value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 100 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 101 | else if(strcmp(buffer, "P5") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 102 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 103 | P5 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 104 | pc.printf("\r\nP5 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 105 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 106 | else if(strcmp(buffer, "P6") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 107 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 108 | P6 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 109 | pc.printf("\r\nP6 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 110 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 111 | else if(strcmp(buffer, "P7") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 112 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 113 | P7 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 114 | pc.printf("\r\nP7 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 115 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 116 | else if(strcmp(buffer, "P8") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 117 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 118 | P8 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 119 | pc.printf("\r\nP8 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 120 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 121 | else if(strcmp(buffer, "P9") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 122 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 123 | P9 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 124 | pc.printf("\r\nP9 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 125 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 126 | else if(strcmp(buffer, "P10") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 127 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 128 | P10 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 129 | pc.printf("\r\nP10 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 130 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 131 | else if(strcmp(buffer, "P11") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 132 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 133 | P11 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 134 | pc.printf("\r\nP11 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 135 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 136 | else if(strcmp(buffer, "P12") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 137 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 138 | P12 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 139 | pc.printf("\r\nP12 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 140 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 141 | else if(strcmp(buffer, "P13") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 142 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 143 | P13 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 144 | pc.printf("\r\nP13 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 145 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 146 | else if(strcmp(buffer, "P14") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 147 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 148 | P14 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 149 | pc.printf("\r\nP14 value %i\r\n", value); |
DaniusKalv | 0:fc1ff02f51e1 | 150 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 151 | else if(strcmp(buffer, "P15") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 152 | pc.printf("\r\nRead analog P15 value = %fV\r\n", (P15 * 3.3)); |
DaniusKalv | 1:1d18a2a3e9a0 | 153 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 154 | else if(strcmp(buffer, "P16") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 155 | pc.printf("\r\nRead analog P16 value = %fV\r\n", (P16 * 3.3)); |
DaniusKalv | 1:1d18a2a3e9a0 | 156 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 157 | else if(strcmp(buffer, "P17") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 158 | pc.printf("\r\nRead analog P17 value = %fV\r\n", (P17 * 3.3)); |
DaniusKalv | 1:1d18a2a3e9a0 | 159 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 160 | else if(strcmp(buffer, "P18") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 161 | pc.printf("\r\nRead analog P18 value = %fV\r\n", (P18 * 3.3)); |
DaniusKalv | 1:1d18a2a3e9a0 | 162 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 163 | else if(strcmp(buffer, "P19") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 164 | pc.printf("\r\nRead analog P19 value = %fV\r\n", (P19 * 3.3)); |
DaniusKalv | 1:1d18a2a3e9a0 | 165 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 166 | else if(strcmp(buffer, "P20") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 167 | pc.printf("\r\nRead analog P20 value = %fV\r\n", (P20 * 3.3)); |
DaniusKalv | 1:1d18a2a3e9a0 | 168 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 169 | else if(strcmp(buffer, "P21") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 170 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 171 | P21 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 172 | pc.printf("\r\nP21 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 173 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 174 | else if(strcmp(buffer, "P22") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 175 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 176 | P22 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 177 | pc.printf("\r\nP22 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 178 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 179 | else if(strcmp(buffer, "P23") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 180 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 181 | P23 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 182 | pc.printf("\r\nP23 value %i\r\n", value); |
DaniusKalv | 0:fc1ff02f51e1 | 183 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 184 | else if(strcmp(buffer, "P24") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 185 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 186 | P24 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 187 | pc.printf("\r\nP24 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 188 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 189 | else if(strcmp(buffer, "P25") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 190 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 191 | P25 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 192 | pc.printf("\r\nP25 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 193 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 194 | else if(strcmp(buffer, "P26") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 195 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 196 | P26 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 197 | pc.printf("\r\nP26 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 198 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 199 | else if(strcmp(buffer, "P27") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 200 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 201 | P27 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 202 | pc.printf("\r\nP27 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 203 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 204 | else if(strcmp(buffer, "P28") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 205 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 206 | P28 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 207 | pc.printf("\r\nP28 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 208 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 209 | else if(strcmp(buffer, "P29") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 210 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 211 | P29 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 212 | pc.printf("\r\nP29 value %i\r\n", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 213 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 214 | else if(strcmp(buffer, "P30") == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 215 | float tmp = ((float) value) / 255; |
DaniusKalv | 1:1d18a2a3e9a0 | 216 | P30 = tmp; |
DaniusKalv | 1:1d18a2a3e9a0 | 217 | pc.printf("\r\nP30 value %i\r\n", value); |
DaniusKalv | 0:fc1ff02f51e1 | 218 | } |
DaniusKalv | 0:fc1ff02f51e1 | 219 | else pc.printf("\r\nCommand not recognised!\r\n"); |
DaniusKalv | 0:fc1ff02f51e1 | 220 | //else if(receiver == "RED"){ |
DaniusKalv | 0:fc1ff02f51e1 | 221 | //pc.gets( |
DaniusKalv | 0:fc1ff02f51e1 | 222 | } |
DaniusKalv | 0:fc1ff02f51e1 | 223 | } |
DaniusKalv | 0:fc1ff02f51e1 | 224 | |
DaniusKalv | 0:fc1ff02f51e1 | 225 | void receive(){ |
DaniusKalv | 0:fc1ff02f51e1 | 226 | memset(temp, 255, sizeof(temp)); |
DaniusKalv | 0:fc1ff02f51e1 | 227 | char c; |
DaniusKalv | 0:fc1ff02f51e1 | 228 | int i = 0; |
DaniusKalv | 0:fc1ff02f51e1 | 229 | |
DaniusKalv | 0:fc1ff02f51e1 | 230 | while(true){ |
DaniusKalv | 0:fc1ff02f51e1 | 231 | if(pc.readable()){ |
DaniusKalv | 0:fc1ff02f51e1 | 232 | c = pc.getc(); |
DaniusKalv | 0:fc1ff02f51e1 | 233 | if (c == 13){ |
DaniusKalv | 0:fc1ff02f51e1 | 234 | temp[i] = 0; |
DaniusKalv | 0:fc1ff02f51e1 | 235 | break; |
DaniusKalv | 0:fc1ff02f51e1 | 236 | } |
DaniusKalv | 0:fc1ff02f51e1 | 237 | else temp[i] = c; |
DaniusKalv | 0:fc1ff02f51e1 | 238 | pc.putc(c); |
DaniusKalv | 0:fc1ff02f51e1 | 239 | i++; |
DaniusKalv | 0:fc1ff02f51e1 | 240 | } |
DaniusKalv | 0:fc1ff02f51e1 | 241 | } |
DaniusKalv | 0:fc1ff02f51e1 | 242 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 243 | |
DaniusKalv | 1:1d18a2a3e9a0 | 244 | void extractCommand(char *buffer, int &value){ |
DaniusKalv | 1:1d18a2a3e9a0 | 245 | bool inNumber = false; |
DaniusKalv | 1:1d18a2a3e9a0 | 246 | int difference = 0; |
DaniusKalv | 1:1d18a2a3e9a0 | 247 | int number[10]; |
DaniusKalv | 1:1d18a2a3e9a0 | 248 | for(int i = 0; i < 100; i++){ |
DaniusKalv | 1:1d18a2a3e9a0 | 249 | |
DaniusKalv | 1:1d18a2a3e9a0 | 250 | if(temp[i] == 0){ |
DaniusKalv | 1:1d18a2a3e9a0 | 251 | value = 0; |
DaniusKalv | 1:1d18a2a3e9a0 | 252 | return; |
DaniusKalv | 1:1d18a2a3e9a0 | 253 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 254 | if(inNumber){ |
DaniusKalv | 1:1d18a2a3e9a0 | 255 | if(temp[i] != 62){ |
DaniusKalv | 1:1d18a2a3e9a0 | 256 | number[i - difference] = temp[i] - 48; |
DaniusKalv | 1:1d18a2a3e9a0 | 257 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 258 | else{ |
DaniusKalv | 1:1d18a2a3e9a0 | 259 | value = 0; |
DaniusKalv | 1:1d18a2a3e9a0 | 260 | int decimals = i - difference; |
DaniusKalv | 1:1d18a2a3e9a0 | 261 | //pc.printf("\r\nNumber of decimals = %i", decimals); |
DaniusKalv | 1:1d18a2a3e9a0 | 262 | for(int i = 0; i < decimals; i++){ |
DaniusKalv | 1:1d18a2a3e9a0 | 263 | int temp = decimals - i - 1; |
DaniusKalv | 1:1d18a2a3e9a0 | 264 | //pc.printf("\r\nTemp = %i Number = %i Power = %i", temp, number[i], power(temp)); |
DaniusKalv | 1:1d18a2a3e9a0 | 265 | value = value + (number[i] * power(temp)); |
DaniusKalv | 1:1d18a2a3e9a0 | 266 | //pc.printf("\r\nValue = %i", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 267 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 268 | //pc.printf("\r\nFinal value = %i", value); |
DaniusKalv | 1:1d18a2a3e9a0 | 269 | return; |
DaniusKalv | 1:1d18a2a3e9a0 | 270 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 271 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 272 | |
DaniusKalv | 1:1d18a2a3e9a0 | 273 | if((temp[i] != 60) && !(inNumber)){ |
DaniusKalv | 1:1d18a2a3e9a0 | 274 | buffer[i] = temp[i]; |
DaniusKalv | 1:1d18a2a3e9a0 | 275 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 276 | else if(!(inNumber)){ |
DaniusKalv | 1:1d18a2a3e9a0 | 277 | inNumber = true; |
DaniusKalv | 1:1d18a2a3e9a0 | 278 | difference = i + 1; |
DaniusKalv | 1:1d18a2a3e9a0 | 279 | //pc.printf("\r\nIn number, difference = %i", difference); |
DaniusKalv | 1:1d18a2a3e9a0 | 280 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 281 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 282 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 283 | |
DaniusKalv | 1:1d18a2a3e9a0 | 284 | int power(int pow){ |
DaniusKalv | 1:1d18a2a3e9a0 | 285 | |
DaniusKalv | 1:1d18a2a3e9a0 | 286 | if(pow == 0) return 1; |
DaniusKalv | 1:1d18a2a3e9a0 | 287 | |
DaniusKalv | 1:1d18a2a3e9a0 | 288 | int rezult = 1; |
DaniusKalv | 1:1d18a2a3e9a0 | 289 | |
DaniusKalv | 1:1d18a2a3e9a0 | 290 | for(int i = 1; i <= pow; i++){ |
DaniusKalv | 1:1d18a2a3e9a0 | 291 | rezult *= 10; |
DaniusKalv | 1:1d18a2a3e9a0 | 292 | } |
DaniusKalv | 1:1d18a2a3e9a0 | 293 | return rezult; |
DaniusKalv | 1:1d18a2a3e9a0 | 294 | } |