programa para pasar de septetos a octetos en tramas PDU

Dependencies:   mbed

main.cpp

Committer:
tony63
Date:
2017-04-28
Revision:
1:b0989e540fff
Parent:
0:0d2c03fdec12

File content as of revision 1:b0989e540fff:

#include "mbed.h"
Serial pc(USBTX, USBRX); // tx, rx
/*
ALGORITMO PARA PASAR DE SEPTETOS A OCTETOS
EN UNA MENSAJE DE TEXTO DE CELULAR EN FORMATO PDU
USA DOS CADENAS UNA DE ENTRADA Y OTRA DE SALIDA
LENIN ES LA LONGITUD DE ENTRADA
LENOUT LA LONGITUD DE SALIDA
SE USA PARA ENSAMBLAR UNA TRAMA PDU
ESTA CADENA DE SALIDA SE ENVIA SOBRE LA TRAMA PDU COMPLETA
VERIFIQUE CON EL DECODIFICADOR DE ESTA PAGINA::
PROBADA PARA CUALQUIER LONGITUD VER:abril 27 DEL 2017
http://www.twit88.com/home/utility/sms-pdu-encode-decode
*/
char gi[50];
char gs[50];
int i,K,C,LENOUT,LENIN;
void SepToOct(char *DE, char *DS);//se declara la funcion 
int main(){
         ; //numero de caracteres de abajo
         pc.printf("prueba con gallina cafe\n");
         char gi[]="gallina cafe";
         //en septetos es  67 61 6c 6c 69 6e 61 20 63 61 66 65
         //en octetos es E7 30 9B 9D 76 87 41 E3 B0 B9 0C         
         SepToOct(gi,gs);
         for (i=0;i<LENOUT;i++){//imprime resultados
         pc.printf("%2X",gs[i]&0x000000FF);
         }
         pc.printf("\n");
         for (i=0;i<LENOUT;i++){
         pc.printf("-%2X",gs[i]);
         }
         pc.printf("\n");
         pc.printf("LENOUT:%2X,LENIN:%2X\r\n",LENOUT,strlen(gi));// longitudes en hex
         }
//------------------funcion de interes-- ---------------------------
         void SepToOct(char *DE, char *DS){
         LENIN=strlen(DE); //se mide el tamaño de la cadena de entrada
         int K=0;int C=0; int i=0;
         for (i=0;i < LENIN;i++){
         DS[i]=DE[i+C]>>K | DE[i+C+1]<<(7-K);
         if (DS[i]==0x00) {LENOUT=i; goto salir99;}// fin de la transformacion
         K++;
         if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
                                }
salir99: for (i=0;i<LENOUT;i++){
         DS[i]=DS[i]&0x000000FF;
         }
         return;
         }