V1.0 Comunicación Serial STX3 con switch: Se debe oprimir "1", "2" o "3" en Tera Term.
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Tue Jul 19 2022 22:29:02 by
1.7.2