programa para pasar de septetos a octetos en tramas PDU

Dependencies:   mbed

Fork of pdu1 by Gustavo Ramirez

Committer:
tony63
Date:
Thu Oct 16 22:12:30 2014 +0000
Revision:
0:0d2c03fdec12
Child:
1:b0989e540fff
programa para pasar de septetos a octetos PDU

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:0d2c03fdec12 1 #include "mbed.h"
tony63 0:0d2c03fdec12 2 Serial pc(USBTX, USBRX); // tx, rx
tony63 0:0d2c03fdec12 3 /*
tony63 0:0d2c03fdec12 4 ALGORITMO PARA PASAR DE SEPTETOS A OCTETOS
tony63 0:0d2c03fdec12 5 EN UNA MENSAJE DE TEXTO DE CELULAR EN FORMATO PDU
tony63 0:0d2c03fdec12 6 USA DOS CADENAS UNA DE ENTRADA Y OTRA DE SALIDA
tony63 0:0d2c03fdec12 7 LENIN ES LA LONGITUD DE ENTRADA
tony63 0:0d2c03fdec12 8 LENOUT LA LONGITUD DE SALIDA
tony63 0:0d2c03fdec12 9 SE USA PARA ENSAMBLAR UNA TRAMA PDU
tony63 0:0d2c03fdec12 10 ESTA CADENA DE SALIDA SE ENVIA SOBRE LA TRAMA PDU COMPLETA
tony63 0:0d2c03fdec12 11 VERIFIQUE CON EL DECODIFICADOR DE ESTA PAGINA::
tony63 0:0d2c03fdec12 12 PROBADA PARA CUALQUIER LONGITUD VER:SEP 24 DEL 2014
tony63 0:0d2c03fdec12 13 http://www.twit88.com/home/utility/sms-pdu-encode-decode
tony63 0:0d2c03fdec12 14 */
tony63 0:0d2c03fdec12 15 char DE[255];
tony63 0:0d2c03fdec12 16 char DS[255];
tony63 0:0d2c03fdec12 17 int i,K,C,LENOUT,LENIN;
tony63 0:0d2c03fdec12 18 float chk;
tony63 0:0d2c03fdec12 19
tony63 0:0d2c03fdec12 20 int main(){
tony63 0:0d2c03fdec12 21 ; //numero de caracteres de abajo
tony63 0:0d2c03fdec12 22 char DE[]="la gallina cafe es una verdadera grosera que merece ser cocinada";
tony63 0:0d2c03fdec12 23 LENIN=strlen(DE);
tony63 0:0d2c03fdec12 24 /*
tony63 0:0d2c03fdec12 25 los octetos ASI VIAJA POR LA RED GSM
tony63 0:0d2c03fdec12 26 EC 30 E8 1C 66 B3 D3 EE 30 68 1C 36 97 41 E5 39 A8 EE 0E 83 EC 65 39 39 4C 2E CB
tony63 0:0d2c03fdec12 27 C3 A0 B3 FC 3D 2F CB C3 A0 78 BD 0C 6A 97 E5 E5 71 19 34 2F CB 41 E3 F7 38 ED 0E 93 C3
tony63 0:0d2c03fdec12 28
tony63 0:0d2c03fdec12 29 y los septetos ASI HAGO VISIBLE EL MENSAJE RECIBIDO
tony63 0:0d2c03fdec12 30 6c 61 20 67 61 6c 6c 69 6e 61 20 63 61 66 65 20 65 73 20 75 6e 61 20 76 65 72 64 61 64
tony63 0:0d2c03fdec12 31 65 72 61 20 67 72 6f 73 65 72 61 20 71 75 65 20 6d 65 72 65 63 65 20 73 65 72 20 63 6f
tony63 0:0d2c03fdec12 32 63 69 6e 61 64 61
tony63 0:0d2c03fdec12 33 */
tony63 0:0d2c03fdec12 34 //----------------------------------- ---------------------------
tony63 0:0d2c03fdec12 35 K=0;C=0;
tony63 0:0d2c03fdec12 36 for (i=0;i < LENIN;i++){
tony63 0:0d2c03fdec12 37 DS[i]=DE[i+C]>>K | DE[i+C+1]<<(7-K);
tony63 0:0d2c03fdec12 38 if (DS[i]==0x00) {LENOUT=i; goto salir;}
tony63 0:0d2c03fdec12 39 K++;
tony63 0:0d2c03fdec12 40 if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
tony63 0:0d2c03fdec12 41 }
tony63 0:0d2c03fdec12 42
tony63 0:0d2c03fdec12 43 //--------------------------------------------------------------
tony63 0:0d2c03fdec12 44 salir: for (i=0;i < LENIN;i++){
tony63 0:0d2c03fdec12 45 pc.printf("%X",DE[i]);
tony63 0:0d2c03fdec12 46 }
tony63 0:0d2c03fdec12 47 pc.printf(":\r\n");
tony63 0:0d2c03fdec12 48 for (i=0;i<LENOUT;i++){
tony63 0:0d2c03fdec12 49 pc.printf("%2X,%d\r\n",DS[i]&0x000000FF,i);
tony63 0:0d2c03fdec12 50 }
tony63 0:0d2c03fdec12 51 pc.printf("LENOUT:%d,LENIN:%d\r\n",LENOUT,strlen(DE));
tony63 0:0d2c03fdec12 52
tony63 0:0d2c03fdec12 53 }