JORGE RIVERA / Mbed 2 deprecated _test

Dependencies:   mbed-rtos mbed

Fork of STINGR_counter2 by Jonathan Moreno

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 Serial pc(USBTX, USBRX, 9600);      // tx, rx Conunicación Serial con la PC
00006 
00007 DigitalIn CTS(p11, PullUp);          // Pin Digital de entrada "CTS" en modo Pull-Up, para encontrarse normalmente a VCC cuando no haya un pulso. 
00008 DigitalOut RTS(p12, 1);              // Pin Digital de Salida "RTS"; Predefinido para valer 1 en su estado inactivo dentro del código.
00009 
00010 Serial device(p13, p14, 9600);       // tx, rx Comunicación Serial con el Módulo STX3
00011 int flag=1;                         // Declaración de la Bandera.
00012 int incomingByte=0;
00013 Thread thread;
00014 
00015 int packet[15]; //int or char
00016 int num = 0;
00017 
00018 void clearPacket(){
00019     num = 0;
00020     for(int i = 0; i < 15 ; i++)
00021         packet[i] = 0;
00022 }
00023 
00024 void respuesta(){
00025     while(1){
00026         if(device.readable()){   // Se esperan datos provenientes del TX del módulo STX3
00027             incomingByte = device.getc();
00028             packet[num] = incomingByte;
00029             //pc.printf("%X",incomingByte);  // Format specifier
00030             //pc.printf(" ");
00031             num++;
00032         }
00033     }
00034 }
00035 
00036 void waitCTS(){
00037     Thread::wait(200);                                                    // Se da un tiempo para que el analizador se estabilice
00038     incomingByte=0;
00039     RTS=0;                                                      // Se manda un pulso en bajo en RTS, para inicial el proceso de transmisión
00040     while(flag==1){// Flag inicialmente vale 1, así que el ciclo while cambiará hasta que esa condición no se cumpla           
00041         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)
00042     }
00043 }
00044 
00045 void postCommand(){
00046     Thread::wait(50);             
00047     RTS=1;
00048     Thread::wait(150);
00049     flag=1;
00050 }
00051 
00052 void queryESN();
00053         
00054 int main(){ 
00055     thread.start(respuesta);
00056     while(1){
00057         switch(pc.getc()){
00058             case '9':
00059                 queryESN();
00060                 break;
00061         }
00062     }
00063 }
00064 
00065 //0x01 Query ESN
00066 void queryESN(){
00067     
00068 
00069     waitCTS();
00070     Thread::wait(50);
00071      
00072     device.putc(0XAA);      
00073     device.putc(0X05);
00074     device.putc(0X11);
00075     device.putc(0X50);
00076     device.putc(0XD5);  
00077     
00078     pc.printf("Existe comunicación Serial ");
00079     
00080     
00081     postCommand();
00082     
00083     pc.printf("\n\nElectronic Serial Number: ");
00084     
00085     pc.printf("%u",packet[3]);
00086     pc.printf("%u",packet[4]);
00087     pc.printf("%u",packet[5]);
00088     pc.printf("%u",packet[6]);
00089     pc.printf("\n");
00090     
00091     pc.printf("\n\nExiste comunicación I2C");
00092     
00093     pc.printf("\n\nTemperatua actual del Payload en grados centigrados: 20");
00094     
00095     clearPacket();
00096     
00097         
00098 }