V1.0 Comunicación Serial STX3 con switch: Se debe oprimir "1", "2" o "3" en Tera Term.

Dependencies:   mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"                   //Se declara la librería mbed.
00002 #include "rtos.h"
00003 
00004 DigitalOut led1(LED1);
00005 DigitalOut led2(LED2);
00006 DigitalOut led3(LED3);
00007 DigitalOut led4(LED4);
00008 Serial pc(USBTX, USBRX, 9600);      // tx, rx Conunicación Serial con la PC
00009 Serial device(p9, p10, 9600);       // tx, rx Comunicación Serial con el Módulo STX3
00010 DigitalOut RTS(p7, 1);              // Pin Digital de Salida "RTS"; Predefinido para valer 1 en su estado inactivo dentro del código.
00011 DigitalIn CTS(p8, PullUp);          // Pin Digital de entrada "CTS" en modo Pull-Up, para encontrarse normalmente a VCC cuando no haya un pulso. 
00012 int flag=1;                         // Declaración de la Bandera.
00013 Thread thread;
00014 
00015 void respuesta(){
00016     while(1){
00017     if(device.readable()) {         // Se esperan datos provenientes del TX del módulo STX3
00018             pc.putc(device.getc());     // Se muestra en pantalla la respuesta recibida por el módulo STX3 como una reacción al mensaje en HEX enviado
00019             }
00020             }
00021     }
00022 
00023 void stx3()
00024     {
00025     Thread::wait(5000);                                                    // Se da un tiempo para que el analizador se estabilice
00026     pc.printf("El valor de CTS 1 es %d\n\r",CTS.read());        // Se lee el valor de la variable CTS, la cual debe ser 1
00027     pc.printf("El valor de RTS 1 es %d\n\r",RTS.read());        // Se lee el valor de la variable RTS, la cual debe ser 1
00028     RTS=0;                                                      // Se manda un pulso en bajo en RTS, para inicial el proceso de transmisión
00029     while(flag==1){             // Flag inicialmente vale 1, así que el ciclo while cambiará hasta que esa condición no se cumpla           
00030         flag=CTS.read();        // Cuando entra el ciclo, se iguala flag a CTS, el cual cuando cambie a 0 provocará que termine el while (máx 125 ms)
00031         pc.printf("El valor de flag es %d\n\r", flag);    // Se imprime el valor de flag, para identificar cuando termina el ciclo while
00032         }
00033     }
00034         
00035 int main() { 
00036     thread.start(respuesta);
00037        
00038         while(1) {
00039         
00040         switch (pc.getc())
00041         {
00042         case '1':
00043             {
00044             led1=!led1;
00045             stx3();
00046             Thread::wait(100);               // Query ESN
00047             device.putc(0XAA);      
00048             device.putc(0X05);
00049             device.putc(0X01);
00050             device.putc(0X50);
00051             device.putc(0XD5);
00052             Thread::wait(100);                // Se esperan .1 segundos una vez que se terminaron de hacer las transmisiones
00053             //El tiempo total de transmisión es; el wait previo a las transmisiones, el tiempo que tarda el Mu en enviar los datos y el wait posterior a la transmisión
00054             RTS=1;
00055             flag=1;         
00056             }
00057             break;  
00058             
00059         case '2':
00060             {
00061             led2=!led2;
00062             stx3();
00063             Thread::wait(100);                // Query Bursts Remaining
00064             device.putc(0XAA);      
00065             device.putc(0X05);
00066             device.putc(0X04);
00067             device.putc(0XFD);
00068             device.putc(0X82);
00069             Thread::wait(100);                // Se esperan .1 segundos una vez que se terminaron de hacer las transmisiones
00070             //El tiempo total de transmisión es; el wait previo a las transmisiones, el tiempo que tarda el Mu en enviar los datos y el wait posterior a la transmisión
00071             RTS=1;
00072             flag=1;               
00073             }
00074             break;
00075             
00076         case '3':
00077             {
00078             led3=!led3;
00079             stx3();
00080             Thread::wait(100);                // Query Firmware Version
00081             device.putc(0XAA);      
00082             device.putc(0X05);
00083             device.putc(0X05);
00084             device.putc(0X74);
00085             device.putc(0X93);
00086             Thread::wait(100);                // Se esperan .1 segundos una vez que se terminaron de hacer las transmisiones
00087             //El tiempo total de transmisión es; el wait previo a las transmisiones, el tiempo que tarda el Mu en enviar los datos y el wait posterior a la transmisión
00088             RTS=1;
00089             flag=1;               
00090             }
00091             break;
00092             }
00093         }
00094     }
00095