J Daniel Martinez C
/
Hex-A-String-Curso
--
main.cpp@0:288744c7febe, 2016-05-17 (annotated)
- Committer:
- dan_cuspi
- Date:
- Tue May 17 23:53:15 2016 +0000
- Revision:
- 0:288744c7febe
Partes del Frame
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dan_cuspi | 0:288744c7febe | 1 | #include "mbed.h" |
dan_cuspi | 0:288744c7febe | 2 | Serial Pc(USBTX, USBRX); // tx, rx |
dan_cuspi | 0:288744c7febe | 3 | Serial Xb(p9, p10); |
dan_cuspi | 0:288744c7febe | 4 | DigitalOut myled(LED1); |
dan_cuspi | 0:288744c7febe | 5 | |
dan_cuspi | 0:288744c7febe | 6 | int i,tmp1,tmp2,Lenght; // Variables Int para el For, Primer Caracter, Segundo Caracter,Tamaño del Mensaje |
dan_cuspi | 0:288744c7febe | 7 | |
dan_cuspi | 0:288744c7febe | 8 | int msg[23]={0x7E,0x00,0x13,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x41,0x64,0x69,0x6F,0x73,0x02}; // Frame |
dan_cuspi | 0:288744c7febe | 9 | |
dan_cuspi | 0:288744c7febe | 10 | |
dan_cuspi | 0:288744c7febe | 11 | char msgR[100]; // Arreglo para el Mensaje |
dan_cuspi | 0:288744c7febe | 12 | char Len[100]; // Arrelo para la longitud del Mensaje |
dan_cuspi | 0:288744c7febe | 13 | char Str[100]; // Arreglo para el primer y segundo caracter de cada posición del Frame |
dan_cuspi | 0:288744c7febe | 14 | char Str1[100]; // Arreglo para la escritura del Frame a ASCII |
dan_cuspi | 0:288744c7febe | 15 | int Dato; //Variable para la conversion de HEX a INT |
dan_cuspi | 0:288744c7febe | 16 | |
dan_cuspi | 0:288744c7febe | 17 | char* ch[16]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};//Conversión de int a HEX |
dan_cuspi | 0:288744c7febe | 18 | int main() { |
dan_cuspi | 0:288744c7febe | 19 | |
dan_cuspi | 0:288744c7febe | 20 | for(i=0 ; i<23; i++) // Recorrido del Frame |
dan_cuspi | 0:288744c7febe | 21 | { |
dan_cuspi | 0:288744c7febe | 22 | |
dan_cuspi | 0:288744c7febe | 23 | Xb.putc(msg[i]); // Lectura serial de cada caracter del frame |
dan_cuspi | 0:288744c7febe | 24 | tmp1 = msg[i]/16; // División de la i Posicion del frame para el primer caracter |
dan_cuspi | 0:288744c7febe | 25 | tmp2 = msg[i]%16; // Modulo de la i Posicion del frame para el segundo caracter 7E= 126 126/16 = 7 16*7= 112 126-112=14 |
dan_cuspi | 0:288744c7febe | 26 | Dato = msg[i]; // Asignacion a variable tipo int de para convertir HEX a int |
dan_cuspi | 0:288744c7febe | 27 | Pc.printf("%02i ",Dato); // Impresion HEX a Int |
dan_cuspi | 0:288744c7febe | 28 | if (i>1 && i<3){snprintf(Len,90,"%s%d",Len,Dato);Lenght=atoi(Len);} // Condición para separar las partes del frame y conversión ej. Tamaño del mensaje |
dan_cuspi | 0:288744c7febe | 29 | if (i>16 && i<(Lenght+3)){ snprintf(msgR,90,"%s%c",msgR,Dato);} // Condición para separar las partes del frame y conversión ej. Mensaje |
dan_cuspi | 0:288744c7febe | 30 | snprintf(Str,90,"%s%s%s ",Str,ch[tmp1],ch[tmp2]); // Concatenacion del pimer y segundo caracter y formar el Frame Completo en ASCII |
dan_cuspi | 0:288744c7febe | 31 | |
dan_cuspi | 0:288744c7febe | 32 | } |
dan_cuspi | 0:288744c7febe | 33 | Pc.printf("\n\rMessage %s\n\r",msgR); // Impresión del Mensaje en ASCII |
dan_cuspi | 0:288744c7febe | 34 | Pc.printf("\n\rLenght %i\n\r",Lenght);// Impresión del Tamaño del mensaje |
dan_cuspi | 0:288744c7febe | 35 | Pc.printf("\n\r%s\n\r",Str);// Impresión del frame en HEX con ASCII |
dan_cuspi | 0:288744c7febe | 36 | |
dan_cuspi | 0:288744c7febe | 37 | |
dan_cuspi | 0:288744c7febe | 38 | } |