Gustavo Ramirez
/
pdu1
programa para pasar de septetos a octetos en tramas PDU
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; }