Test CBS-GPIO
Dependencies: mbed
Fork of Amplificatore_bomboni_rev2 by
CBS-GPIO.cpp@8:a7257fd80953, 2018-07-27 (annotated)
- Committer:
- pinofal
- Date:
- Fri Jul 27 12:43:16 2018 +0000
- Revision:
- 8:a7257fd80953
Test CBS-GPIO
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pinofal | 8:a7257fd80953 | 1 | // Tested : NUCLEO-F401RE NUCLEO-L476LG |
pinofal | 8:a7257fd80953 | 2 | #include "mbed.h" |
pinofal | 8:a7257fd80953 | 3 | #include<stdlib.h> |
pinofal | 8:a7257fd80953 | 4 | |
pinofal | 8:a7257fd80953 | 5 | // dimensione del pacchetto di comunicazione tra PC e uC |
pinofal | 8:a7257fd80953 | 6 | #define PACKETDIM 64 |
pinofal | 8:a7257fd80953 | 7 | |
pinofal | 8:a7257fd80953 | 8 | // comando di Read GPIO |
pinofal | 8:a7257fd80953 | 9 | #define READGPIO "Read-GPIO" |
pinofal | 8:a7257fd80953 | 10 | // Definizione periferiche |
pinofal | 8:a7257fd80953 | 11 | Serial pc(USBTX, USBRX); |
pinofal | 8:a7257fd80953 | 12 | |
pinofal | 8:a7257fd80953 | 13 | // User Button, LED |
pinofal | 8:a7257fd80953 | 14 | DigitalIn myButton(USER_BUTTON); |
pinofal | 8:a7257fd80953 | 15 | // Output di servizio sul LED2 della scheda NUCLEO |
pinofal | 8:a7257fd80953 | 16 | DigitalOut myLed(LED2); |
pinofal | 8:a7257fd80953 | 17 | |
pinofal | 8:a7257fd80953 | 18 | // Output della NUCLEO e Input del DUT. Saranno inviati dal PC alla NUCLEO, nell'ordine in cui si trovano dichiarati di seguito |
pinofal | 8:a7257fd80953 | 19 | DigitalOut myOut1(PA_13); |
pinofal | 8:a7257fd80953 | 20 | DigitalOut myOut2(PA_14); |
pinofal | 8:a7257fd80953 | 21 | DigitalOut myOut3(PA_15); |
pinofal | 8:a7257fd80953 | 22 | |
pinofal | 8:a7257fd80953 | 23 | // Input della NUCLEO e Output del DUT. Saranno inviati dalla NUCLEO al PC, nell'ordine in cui si trovano dichiarati di seguito |
pinofal | 8:a7257fd80953 | 24 | DigitalIn myIn1(PA_8); //PA_8 PC_14 |
pinofal | 8:a7257fd80953 | 25 | DigitalIn myIn2(PB_10); //PB_10 PC_15 |
pinofal | 8:a7257fd80953 | 26 | DigitalIn myIn3(PB_4); //PB_4 PH_0 |
pinofal | 8:a7257fd80953 | 27 | DigitalIn myIn4(PB_5); //PB_5 PH_1 |
pinofal | 8:a7257fd80953 | 28 | DigitalIn myIn5(PB_3); //PB_3 PD_2 |
pinofal | 8:a7257fd80953 | 29 | //DigitalIn myService(PB_3); |
pinofal | 8:a7257fd80953 | 30 | |
pinofal | 8:a7257fd80953 | 31 | |
pinofal | 8:a7257fd80953 | 32 | // indice per i cicli |
pinofal | 8:a7257fd80953 | 33 | int nIndex; |
pinofal | 8:a7257fd80953 | 34 | |
pinofal | 8:a7257fd80953 | 35 | |
pinofal | 8:a7257fd80953 | 36 | // comando ricevuto dal PC attraverso la routine di gestione interrupt Rx |
pinofal | 8:a7257fd80953 | 37 | // 1: read all GPIO |
pinofal | 8:a7257fd80953 | 38 | // 2: write all GPIO |
pinofal | 8:a7257fd80953 | 39 | volatile int nReadCmd=0; |
pinofal | 8:a7257fd80953 | 40 | |
pinofal | 8:a7257fd80953 | 41 | // stato degli input |
pinofal | 8:a7257fd80953 | 42 | volatile int myIn1Status; |
pinofal | 8:a7257fd80953 | 43 | volatile int myIn2Status; |
pinofal | 8:a7257fd80953 | 44 | volatile int myIn3Status; |
pinofal | 8:a7257fd80953 | 45 | volatile int myIn4Status; |
pinofal | 8:a7257fd80953 | 46 | volatile int myIn5Status; |
pinofal | 8:a7257fd80953 | 47 | |
pinofal | 8:a7257fd80953 | 48 | |
pinofal | 8:a7257fd80953 | 49 | |
pinofal | 8:a7257fd80953 | 50 | //********************************************** |
pinofal | 8:a7257fd80953 | 51 | // IRQ per la Rx su seriale |
pinofal | 8:a7257fd80953 | 52 | //********************************************** |
pinofal | 8:a7257fd80953 | 53 | void RxInterrupt(void) |
pinofal | 8:a7257fd80953 | 54 | { |
pinofal | 8:a7257fd80953 | 55 | // array per la ricezione dei messaggi da seriale |
pinofal | 8:a7257fd80953 | 56 | char caRxPacket[PACKETDIM]; |
pinofal | 8:a7257fd80953 | 57 | int nRxPacketSize; |
pinofal | 8:a7257fd80953 | 58 | |
pinofal | 8:a7257fd80953 | 59 | |
pinofal | 8:a7257fd80953 | 60 | |
pinofal | 8:a7257fd80953 | 61 | // pntatore al comando, nella stringa ricevuta sulla seriale |
pinofal | 8:a7257fd80953 | 62 | char* cCmdPosition; |
pinofal | 8:a7257fd80953 | 63 | |
pinofal | 8:a7257fd80953 | 64 | // reset array contenente pacchetto ricevuto |
pinofal | 8:a7257fd80953 | 65 | nIndex=0; |
pinofal | 8:a7257fd80953 | 66 | for(nIndex=0;nIndex<PACKETDIM;nIndex++) |
pinofal | 8:a7257fd80953 | 67 | { |
pinofal | 8:a7257fd80953 | 68 | caRxPacket[nIndex]='\0'; |
pinofal | 8:a7257fd80953 | 69 | } |
pinofal | 8:a7257fd80953 | 70 | |
pinofal | 8:a7257fd80953 | 71 | // ricevi caratteri su seriale, se disponibili |
pinofal | 8:a7257fd80953 | 72 | nRxPacketSize =0; |
pinofal | 8:a7257fd80953 | 73 | while((pc.readable())) |
pinofal | 8:a7257fd80953 | 74 | { |
pinofal | 8:a7257fd80953 | 75 | // acquisice stringa in input e relativa dimensione |
pinofal | 8:a7257fd80953 | 76 | pc.scanf("%s", &caRxPacket); |
pinofal | 8:a7257fd80953 | 77 | nRxPacketSize = strlen(caRxPacket); |
pinofal | 8:a7257fd80953 | 78 | } |
pinofal | 8:a7257fd80953 | 79 | // restituisce il comando ricevuto e la dimensione |
pinofal | 8:a7257fd80953 | 80 | pc.printf("Command: %s\n\r",caRxPacket); |
pinofal | 8:a7257fd80953 | 81 | pc.printf("PacketSize: %d\n\r",nRxPacketSize); |
pinofal | 8:a7257fd80953 | 82 | |
pinofal | 8:a7257fd80953 | 83 | // confronta il comando ricevuto con quello di Read GPIO |
pinofal | 8:a7257fd80953 | 84 | nReadCmd = strcmp(caRxPacket, "ReadGPIO"); |
pinofal | 8:a7257fd80953 | 85 | if(nReadCmd==0) |
pinofal | 8:a7257fd80953 | 86 | { |
pinofal | 8:a7257fd80953 | 87 | // rileva lo stato degli input e trasmettili al PC-HOST |
pinofal | 8:a7257fd80953 | 88 | pc.printf("USER-BUTTON: %d\n\r",myButton.read()); // il primo input è lo User-Button per scopi di diagnostica |
pinofal | 8:a7257fd80953 | 89 | // myIn1: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 90 | if(myIn1==1) |
pinofal | 8:a7257fd80953 | 91 | { |
pinofal | 8:a7257fd80953 | 92 | pc.printf("In1: 1\n\r"); |
pinofal | 8:a7257fd80953 | 93 | } |
pinofal | 8:a7257fd80953 | 94 | else |
pinofal | 8:a7257fd80953 | 95 | { |
pinofal | 8:a7257fd80953 | 96 | pc.printf("In1: 0\n\r"); |
pinofal | 8:a7257fd80953 | 97 | } |
pinofal | 8:a7257fd80953 | 98 | |
pinofal | 8:a7257fd80953 | 99 | // myIn2: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 100 | if(myIn2==1) |
pinofal | 8:a7257fd80953 | 101 | { |
pinofal | 8:a7257fd80953 | 102 | pc.printf("In2: 1\n\r"); |
pinofal | 8:a7257fd80953 | 103 | } |
pinofal | 8:a7257fd80953 | 104 | else |
pinofal | 8:a7257fd80953 | 105 | { |
pinofal | 8:a7257fd80953 | 106 | pc.printf("In2: 0\n\r"); |
pinofal | 8:a7257fd80953 | 107 | } |
pinofal | 8:a7257fd80953 | 108 | // myIn3: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 109 | if(myIn3==1) |
pinofal | 8:a7257fd80953 | 110 | { |
pinofal | 8:a7257fd80953 | 111 | pc.printf("In3: 1\n\r"); |
pinofal | 8:a7257fd80953 | 112 | } |
pinofal | 8:a7257fd80953 | 113 | else |
pinofal | 8:a7257fd80953 | 114 | { |
pinofal | 8:a7257fd80953 | 115 | pc.printf("In3: 0\n\r"); |
pinofal | 8:a7257fd80953 | 116 | } |
pinofal | 8:a7257fd80953 | 117 | // myIn4: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 118 | if(myIn4==1) |
pinofal | 8:a7257fd80953 | 119 | { |
pinofal | 8:a7257fd80953 | 120 | pc.printf("In4: 1\n\r"); |
pinofal | 8:a7257fd80953 | 121 | } |
pinofal | 8:a7257fd80953 | 122 | else |
pinofal | 8:a7257fd80953 | 123 | { |
pinofal | 8:a7257fd80953 | 124 | pc.printf("In4: 0\n\r"); |
pinofal | 8:a7257fd80953 | 125 | } |
pinofal | 8:a7257fd80953 | 126 | |
pinofal | 8:a7257fd80953 | 127 | // myIn5: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 128 | if(myIn5==1) |
pinofal | 8:a7257fd80953 | 129 | { |
pinofal | 8:a7257fd80953 | 130 | pc.printf("In5: 1\n\r"); |
pinofal | 8:a7257fd80953 | 131 | } |
pinofal | 8:a7257fd80953 | 132 | else |
pinofal | 8:a7257fd80953 | 133 | { |
pinofal | 8:a7257fd80953 | 134 | pc.printf("In5: 0\n\r"); |
pinofal | 8:a7257fd80953 | 135 | } |
pinofal | 8:a7257fd80953 | 136 | } |
pinofal | 8:a7257fd80953 | 137 | else |
pinofal | 8:a7257fd80953 | 138 | { |
pinofal | 8:a7257fd80953 | 139 | // verifica se nel comando ricevuto si trova la stringa WriteGPIO |
pinofal | 8:a7257fd80953 | 140 | cCmdPosition=strstr(caRxPacket, "WriteGPIO"); |
pinofal | 8:a7257fd80953 | 141 | if(cCmdPosition != NULL) // se il comando ricevuto contiene WriteGPIO, procedi con l'analisi dei dati |
pinofal | 8:a7257fd80953 | 142 | { |
pinofal | 8:a7257fd80953 | 143 | // si posiziona sul delimitatore '-' , tra il comando e i dati ed estrae la stringa contenente lo stato da inviare sugli Output |
pinofal | 8:a7257fd80953 | 144 | cCmdPosition = strtok(caRxPacket,"-"); |
pinofal | 8:a7257fd80953 | 145 | cCmdPosition = strtok(NULL,"-"); |
pinofal | 8:a7257fd80953 | 146 | pc.printf("Data: %s\n\r", cCmdPosition); |
pinofal | 8:a7257fd80953 | 147 | |
pinofal | 8:a7257fd80953 | 148 | // USER_LED LED2 se il dato ricevto è '0/1' spegni/accendi il LED |
pinofal | 8:a7257fd80953 | 149 | if(cCmdPosition[0]=='1') |
pinofal | 8:a7257fd80953 | 150 | { |
pinofal | 8:a7257fd80953 | 151 | // accendi LED e comunica al PC |
pinofal | 8:a7257fd80953 | 152 | pc.printf("Led2: ON\n\r"); |
pinofal | 8:a7257fd80953 | 153 | myLed = 1; |
pinofal | 8:a7257fd80953 | 154 | } |
pinofal | 8:a7257fd80953 | 155 | else |
pinofal | 8:a7257fd80953 | 156 | { |
pinofal | 8:a7257fd80953 | 157 | // spegni LED e comunica al PC |
pinofal | 8:a7257fd80953 | 158 | pc.printf("Led2: OFF\n\r"); |
pinofal | 8:a7257fd80953 | 159 | myLed = 0; |
pinofal | 8:a7257fd80953 | 160 | } |
pinofal | 8:a7257fd80953 | 161 | |
pinofal | 8:a7257fd80953 | 162 | // Out1: se il dato ricevto è '0/1' spegni/accendi l'output |
pinofal | 8:a7257fd80953 | 163 | if(cCmdPosition[1]=='1') |
pinofal | 8:a7257fd80953 | 164 | { |
pinofal | 8:a7257fd80953 | 165 | // accendi Out1 e comunica al PC |
pinofal | 8:a7257fd80953 | 166 | pc.printf("Out1: ON\n\r"); |
pinofal | 8:a7257fd80953 | 167 | myOut1 = 1; |
pinofal | 8:a7257fd80953 | 168 | } |
pinofal | 8:a7257fd80953 | 169 | else |
pinofal | 8:a7257fd80953 | 170 | { |
pinofal | 8:a7257fd80953 | 171 | // spegni Out1 e comunica al PC |
pinofal | 8:a7257fd80953 | 172 | pc.printf("Out1: OFF\n\r"); |
pinofal | 8:a7257fd80953 | 173 | myOut1 = 0; |
pinofal | 8:a7257fd80953 | 174 | } |
pinofal | 8:a7257fd80953 | 175 | |
pinofal | 8:a7257fd80953 | 176 | // Out2: se il dato ricevto è '0/1' spegni/accendi l'output |
pinofal | 8:a7257fd80953 | 177 | if(cCmdPosition[2]=='1') |
pinofal | 8:a7257fd80953 | 178 | { |
pinofal | 8:a7257fd80953 | 179 | // accendi Out2 e comunica al PC |
pinofal | 8:a7257fd80953 | 180 | pc.printf("Out2: ON\n\r"); |
pinofal | 8:a7257fd80953 | 181 | myOut2 = 1; |
pinofal | 8:a7257fd80953 | 182 | } |
pinofal | 8:a7257fd80953 | 183 | else |
pinofal | 8:a7257fd80953 | 184 | { |
pinofal | 8:a7257fd80953 | 185 | // spegni Out2 e comunica al PC |
pinofal | 8:a7257fd80953 | 186 | pc.printf("Out2: OFF\n\r"); |
pinofal | 8:a7257fd80953 | 187 | myOut2 = 0; |
pinofal | 8:a7257fd80953 | 188 | } |
pinofal | 8:a7257fd80953 | 189 | |
pinofal | 8:a7257fd80953 | 190 | // Out3: se il dato ricevto è '0/1' spegni/accendi l'output |
pinofal | 8:a7257fd80953 | 191 | if(cCmdPosition[3]=='1') |
pinofal | 8:a7257fd80953 | 192 | { |
pinofal | 8:a7257fd80953 | 193 | // accendi Out3 e comunica al PC |
pinofal | 8:a7257fd80953 | 194 | pc.printf("Out3: ON\n\r"); |
pinofal | 8:a7257fd80953 | 195 | myOut3 = 1; |
pinofal | 8:a7257fd80953 | 196 | } |
pinofal | 8:a7257fd80953 | 197 | else |
pinofal | 8:a7257fd80953 | 198 | { |
pinofal | 8:a7257fd80953 | 199 | // spegni Out3 e comunica al PC |
pinofal | 8:a7257fd80953 | 200 | pc.printf("Out3: OFF\n\r"); |
pinofal | 8:a7257fd80953 | 201 | myOut3 = 0; |
pinofal | 8:a7257fd80953 | 202 | } |
pinofal | 8:a7257fd80953 | 203 | } |
pinofal | 8:a7257fd80953 | 204 | } |
pinofal | 8:a7257fd80953 | 205 | } |
pinofal | 8:a7257fd80953 | 206 | |
pinofal | 8:a7257fd80953 | 207 | //********************************************** |
pinofal | 8:a7257fd80953 | 208 | // IRQ per la Rx su seriale |
pinofal | 8:a7257fd80953 | 209 | //********************************************** |
pinofal | 8:a7257fd80953 | 210 | int main() |
pinofal | 8:a7257fd80953 | 211 | { |
pinofal | 8:a7257fd80953 | 212 | // array per la ricezione dei messaggi da seriale |
pinofal | 8:a7257fd80953 | 213 | char caRxPacket[PACKETDIM]; |
pinofal | 8:a7257fd80953 | 214 | int nRxPacketSize; |
pinofal | 8:a7257fd80953 | 215 | |
pinofal | 8:a7257fd80953 | 216 | |
pinofal | 8:a7257fd80953 | 217 | |
pinofal | 8:a7257fd80953 | 218 | // pntatore al comando, nella stringa ricevuta sulla seriale |
pinofal | 8:a7257fd80953 | 219 | char* cCmdPosition; |
pinofal | 8:a7257fd80953 | 220 | |
pinofal | 8:a7257fd80953 | 221 | |
pinofal | 8:a7257fd80953 | 222 | // configura velocità della comunicazione seriale su USB-VirtualCom e invia messaggio di benvenuto |
pinofal | 8:a7257fd80953 | 223 | //pc.baud(56000); // 57600 bps |
pinofal | 8:a7257fd80953 | 224 | pc.baud(9600); // 9600 bps |
pinofal | 8:a7257fd80953 | 225 | //pc.baud(19200); // 19200 bps |
pinofal | 8:a7257fd80953 | 226 | //pc.baud(57600); // a questa velocità CVI sulla USB del PC perde dei dati |
pinofal | 8:a7257fd80953 | 227 | //pc.baud(921600); // a questa velocità CVI sulla USB del PC perde dei dati |
pinofal | 8:a7257fd80953 | 228 | |
pinofal | 8:a7257fd80953 | 229 | // inizializza il LED |
pinofal | 8:a7257fd80953 | 230 | myLed = 1; |
pinofal | 8:a7257fd80953 | 231 | wait(1); |
pinofal | 8:a7257fd80953 | 232 | myLed = 0; |
pinofal | 8:a7257fd80953 | 233 | |
pinofal | 8:a7257fd80953 | 234 | // configura il Button come input PullUp. Non premuto = 1, Premuto = 0; |
pinofal | 8:a7257fd80953 | 235 | myButton.mode(PullUp); |
pinofal | 8:a7257fd80953 | 236 | |
pinofal | 8:a7257fd80953 | 237 | // configura gli input come PullUp. Aperto = 1; |
pinofal | 8:a7257fd80953 | 238 | |
pinofal | 8:a7257fd80953 | 239 | myIn1.mode(PullUp); |
pinofal | 8:a7257fd80953 | 240 | myIn2.mode(PullUp); |
pinofal | 8:a7257fd80953 | 241 | myIn3.mode(PullUp); |
pinofal | 8:a7257fd80953 | 242 | myIn4.mode(PullUp); |
pinofal | 8:a7257fd80953 | 243 | myIn5.mode(PullUp); |
pinofal | 8:a7257fd80953 | 244 | |
pinofal | 8:a7257fd80953 | 245 | //myService.mode(PullUp); |
pinofal | 8:a7257fd80953 | 246 | |
pinofal | 8:a7257fd80953 | 247 | // Attiva la IRQ per la RX su seriale |
pinofal | 8:a7257fd80953 | 248 | pc.attach(&RxInterrupt,Serial::RxIrq); |
pinofal | 8:a7257fd80953 | 249 | /* |
pinofal | 8:a7257fd80953 | 250 | while (true) |
pinofal | 8:a7257fd80953 | 251 | { |
pinofal | 8:a7257fd80953 | 252 | if( (myIn1 == 1) && (myIn2 == 1) && (myIn3 == 1) && (myIn4 == 1) && (myIn5 == 1) ) |
pinofal | 8:a7257fd80953 | 253 | { |
pinofal | 8:a7257fd80953 | 254 | myLed = 1; |
pinofal | 8:a7257fd80953 | 255 | } |
pinofal | 8:a7257fd80953 | 256 | else |
pinofal | 8:a7257fd80953 | 257 | { |
pinofal | 8:a7257fd80953 | 258 | myLed = 0; |
pinofal | 8:a7257fd80953 | 259 | } |
pinofal | 8:a7257fd80953 | 260 | pc.printf("Status: %d %d %d %d %d\n\r",myIn1.read(), myIn2.read(), myIn3.read(), myIn4.read(), myIn5.read()); |
pinofal | 8:a7257fd80953 | 261 | } |
pinofal | 8:a7257fd80953 | 262 | */ |
pinofal | 8:a7257fd80953 | 263 | |
pinofal | 8:a7257fd80953 | 264 | // ciclo in cui attende interrupt |
pinofal | 8:a7257fd80953 | 265 | while(true) |
pinofal | 8:a7257fd80953 | 266 | { |
pinofal | 8:a7257fd80953 | 267 | /* |
pinofal | 8:a7257fd80953 | 268 | if(pc.readable()) |
pinofal | 8:a7257fd80953 | 269 | { |
pinofal | 8:a7257fd80953 | 270 | // reset array contenente pacchetto ricevuto |
pinofal | 8:a7257fd80953 | 271 | nIndex=0; |
pinofal | 8:a7257fd80953 | 272 | for(nIndex=0;nIndex<PACKETDIM;nIndex++) |
pinofal | 8:a7257fd80953 | 273 | { |
pinofal | 8:a7257fd80953 | 274 | caRxPacket[nIndex]='\0'; |
pinofal | 8:a7257fd80953 | 275 | } |
pinofal | 8:a7257fd80953 | 276 | |
pinofal | 8:a7257fd80953 | 277 | // ricevi caratteri su seriale, se disponibili |
pinofal | 8:a7257fd80953 | 278 | nRxPacketSize =0; |
pinofal | 8:a7257fd80953 | 279 | while((pc.readable())) |
pinofal | 8:a7257fd80953 | 280 | { |
pinofal | 8:a7257fd80953 | 281 | // acquisice stringa in input e relativa dimensione |
pinofal | 8:a7257fd80953 | 282 | pc.scanf("%s", &caRxPacket); |
pinofal | 8:a7257fd80953 | 283 | nRxPacketSize = strlen(caRxPacket); |
pinofal | 8:a7257fd80953 | 284 | } |
pinofal | 8:a7257fd80953 | 285 | // restituisce il comando ricevuto e la dimensione |
pinofal | 8:a7257fd80953 | 286 | pc.printf("Command: %s\n\r",caRxPacket); |
pinofal | 8:a7257fd80953 | 287 | pc.printf("PacketSize: %d\n\r",nRxPacketSize); |
pinofal | 8:a7257fd80953 | 288 | |
pinofal | 8:a7257fd80953 | 289 | // confronta il comando ricevuto con quello di Read GPIO |
pinofal | 8:a7257fd80953 | 290 | nReadCmd = strcmp(caRxPacket, "ReadGPIO"); |
pinofal | 8:a7257fd80953 | 291 | if(nReadCmd==0) |
pinofal | 8:a7257fd80953 | 292 | { |
pinofal | 8:a7257fd80953 | 293 | // rileva lo stato degli input e trasmettili al PC-HOST |
pinofal | 8:a7257fd80953 | 294 | pc.printf("USER-BUTTON: %d\n\r",myButton.read()); // il primo input è lo User-Button per scopi di diagnostica |
pinofal | 8:a7257fd80953 | 295 | // myIn1: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 296 | if(myIn1.read()== 0x01) |
pinofal | 8:a7257fd80953 | 297 | { |
pinofal | 8:a7257fd80953 | 298 | pc.printf("In1: 1\n\r"); |
pinofal | 8:a7257fd80953 | 299 | } |
pinofal | 8:a7257fd80953 | 300 | else |
pinofal | 8:a7257fd80953 | 301 | { |
pinofal | 8:a7257fd80953 | 302 | pc.printf("In1: 0\n\r"); |
pinofal | 8:a7257fd80953 | 303 | } |
pinofal | 8:a7257fd80953 | 304 | |
pinofal | 8:a7257fd80953 | 305 | // myIn2: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 306 | if(myIn2.read()== 0x01) |
pinofal | 8:a7257fd80953 | 307 | { |
pinofal | 8:a7257fd80953 | 308 | pc.printf("In2: 1\n\r"); |
pinofal | 8:a7257fd80953 | 309 | } |
pinofal | 8:a7257fd80953 | 310 | else |
pinofal | 8:a7257fd80953 | 311 | { |
pinofal | 8:a7257fd80953 | 312 | pc.printf("In2: 0\n\r"); |
pinofal | 8:a7257fd80953 | 313 | } |
pinofal | 8:a7257fd80953 | 314 | // myIn3: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 315 | if(myIn3.read()== 0x01) |
pinofal | 8:a7257fd80953 | 316 | { |
pinofal | 8:a7257fd80953 | 317 | pc.printf("In3: 1\n\r"); |
pinofal | 8:a7257fd80953 | 318 | } |
pinofal | 8:a7257fd80953 | 319 | else |
pinofal | 8:a7257fd80953 | 320 | { |
pinofal | 8:a7257fd80953 | 321 | pc.printf("In3: 0\n\r"); |
pinofal | 8:a7257fd80953 | 322 | } |
pinofal | 8:a7257fd80953 | 323 | // myIn4: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 324 | if(myIn4.read()== 0x01) |
pinofal | 8:a7257fd80953 | 325 | { |
pinofal | 8:a7257fd80953 | 326 | pc.printf("In4: 1\n\r"); |
pinofal | 8:a7257fd80953 | 327 | } |
pinofal | 8:a7257fd80953 | 328 | else |
pinofal | 8:a7257fd80953 | 329 | { |
pinofal | 8:a7257fd80953 | 330 | pc.printf("In4: 0\n\r"); |
pinofal | 8:a7257fd80953 | 331 | } |
pinofal | 8:a7257fd80953 | 332 | |
pinofal | 8:a7257fd80953 | 333 | // myIn5: se legge 0/1, trasmette lo stato al PC |
pinofal | 8:a7257fd80953 | 334 | if(myIn5.read()== 0x01) |
pinofal | 8:a7257fd80953 | 335 | { |
pinofal | 8:a7257fd80953 | 336 | pc.printf("In5: 1\n\r"); |
pinofal | 8:a7257fd80953 | 337 | } |
pinofal | 8:a7257fd80953 | 338 | else |
pinofal | 8:a7257fd80953 | 339 | { |
pinofal | 8:a7257fd80953 | 340 | pc.printf("In5: 0\n\r"); |
pinofal | 8:a7257fd80953 | 341 | } |
pinofal | 8:a7257fd80953 | 342 | } |
pinofal | 8:a7257fd80953 | 343 | else |
pinofal | 8:a7257fd80953 | 344 | { |
pinofal | 8:a7257fd80953 | 345 | // verifica se nel comando ricevuto si trova la stringa WriteGPIO |
pinofal | 8:a7257fd80953 | 346 | cCmdPosition=strstr(caRxPacket, "WriteGPIO"); |
pinofal | 8:a7257fd80953 | 347 | if(cCmdPosition != NULL) // se il comando ricevuto contiene WriteGPIO, procedi con l'analisi dei dati |
pinofal | 8:a7257fd80953 | 348 | { |
pinofal | 8:a7257fd80953 | 349 | // si posiziona sul delimitatore '-' , tra il comando e i dati ed estrae la stringa contenente lo stato da inviare sugli Output |
pinofal | 8:a7257fd80953 | 350 | cCmdPosition = strtok(caRxPacket,"-"); |
pinofal | 8:a7257fd80953 | 351 | cCmdPosition = strtok(NULL,"-"); |
pinofal | 8:a7257fd80953 | 352 | pc.printf("Data: %s\n\r", cCmdPosition); |
pinofal | 8:a7257fd80953 | 353 | |
pinofal | 8:a7257fd80953 | 354 | // USER_LED LED2 se il dato ricevto è '0/1' spegni/accendi il LED |
pinofal | 8:a7257fd80953 | 355 | if(cCmdPosition[0]=='1') |
pinofal | 8:a7257fd80953 | 356 | { |
pinofal | 8:a7257fd80953 | 357 | // accendi LED e comunica al PC |
pinofal | 8:a7257fd80953 | 358 | pc.printf("Led2: ON\n\r"); |
pinofal | 8:a7257fd80953 | 359 | myLed = 1; |
pinofal | 8:a7257fd80953 | 360 | } |
pinofal | 8:a7257fd80953 | 361 | else |
pinofal | 8:a7257fd80953 | 362 | { |
pinofal | 8:a7257fd80953 | 363 | // spegni LED e comunica al PC |
pinofal | 8:a7257fd80953 | 364 | pc.printf("Led2: OFF\n\r"); |
pinofal | 8:a7257fd80953 | 365 | myLed = 0; |
pinofal | 8:a7257fd80953 | 366 | } |
pinofal | 8:a7257fd80953 | 367 | |
pinofal | 8:a7257fd80953 | 368 | // Out1: se il dato ricevto è '0/1' spegni/accendi l'output |
pinofal | 8:a7257fd80953 | 369 | if(cCmdPosition[1]=='1') |
pinofal | 8:a7257fd80953 | 370 | { |
pinofal | 8:a7257fd80953 | 371 | // accendi Out1 e comunica al PC |
pinofal | 8:a7257fd80953 | 372 | pc.printf("Out1: ON\n\r"); |
pinofal | 8:a7257fd80953 | 373 | myOut1 = 1; |
pinofal | 8:a7257fd80953 | 374 | } |
pinofal | 8:a7257fd80953 | 375 | else |
pinofal | 8:a7257fd80953 | 376 | { |
pinofal | 8:a7257fd80953 | 377 | // spegni Out1 e comunica al PC |
pinofal | 8:a7257fd80953 | 378 | pc.printf("Out1: OFF\n\r"); |
pinofal | 8:a7257fd80953 | 379 | myOut1 = 0; |
pinofal | 8:a7257fd80953 | 380 | } |
pinofal | 8:a7257fd80953 | 381 | |
pinofal | 8:a7257fd80953 | 382 | // Out2: se il dato ricevto è '0/1' spegni/accendi l'output |
pinofal | 8:a7257fd80953 | 383 | if(cCmdPosition[2]=='1') |
pinofal | 8:a7257fd80953 | 384 | { |
pinofal | 8:a7257fd80953 | 385 | // accendi Out2 e comunica al PC |
pinofal | 8:a7257fd80953 | 386 | pc.printf("Out2: ON\n\r"); |
pinofal | 8:a7257fd80953 | 387 | myOut2 = 1; |
pinofal | 8:a7257fd80953 | 388 | } |
pinofal | 8:a7257fd80953 | 389 | else |
pinofal | 8:a7257fd80953 | 390 | { |
pinofal | 8:a7257fd80953 | 391 | // spegni Out2 e comunica al PC |
pinofal | 8:a7257fd80953 | 392 | pc.printf("Out2: OFF\n\r"); |
pinofal | 8:a7257fd80953 | 393 | myOut2 = 0; |
pinofal | 8:a7257fd80953 | 394 | } |
pinofal | 8:a7257fd80953 | 395 | |
pinofal | 8:a7257fd80953 | 396 | // Out3: se il dato ricevto è '0/1' spegni/accendi l'output |
pinofal | 8:a7257fd80953 | 397 | if(cCmdPosition[3]=='1') |
pinofal | 8:a7257fd80953 | 398 | { |
pinofal | 8:a7257fd80953 | 399 | // accendi Out3 e comunica al PC |
pinofal | 8:a7257fd80953 | 400 | pc.printf("Out3: ON\n\r"); |
pinofal | 8:a7257fd80953 | 401 | myOut3 = 1; |
pinofal | 8:a7257fd80953 | 402 | } |
pinofal | 8:a7257fd80953 | 403 | else |
pinofal | 8:a7257fd80953 | 404 | { |
pinofal | 8:a7257fd80953 | 405 | // spegni Out3 e comunica al PC |
pinofal | 8:a7257fd80953 | 406 | pc.printf("Out3: OFF\n\r"); |
pinofal | 8:a7257fd80953 | 407 | myOut3 = 0; |
pinofal | 8:a7257fd80953 | 408 | } |
pinofal | 8:a7257fd80953 | 409 | } |
pinofal | 8:a7257fd80953 | 410 | } |
pinofal | 8:a7257fd80953 | 411 | } |
pinofal | 8:a7257fd80953 | 412 | */ |
pinofal | 8:a7257fd80953 | 413 | } |
pinofal | 8:a7257fd80953 | 414 | } |