Programa para pasar de Octetos a septetos en tramas PDU usadas en mensajes de texto SMS que viajan por la red GSM
main.cpp
- Committer:
- tony63
- Date:
- 2017-04-28
- Revision:
- 1:a1fe02210bb6
- Parent:
- 0:e74448c0b740
File content as of revision 1:a1fe02210bb6:
#include "mbed.h" Serial pc(USBTX, USBRX); // tx, rx /* ALGORITMO PARA PASAR DE OCTETOS A SEPTETOS EN UN MENSAJE DE TEXTO DE CELULAR EN FORMATO PDU SE APLICA AL RECIBIR UN MENSAJE QUE TRAE OCTETOS SON VISIBLES EN ASCCI AL SER SEPTETOS USA DOS CADENAS; UNA DE ENTRADA Y OTRA DE SALIDA LENIN ES LA LONGITUD DE LA CADENA DE ENTRADA LENOUT LA LONGITUD DE LA DE SALIDA VERIFIQUE CON EL DECODIFICADOR DE ESTA PAGINA:: http://www.twit88.com/home/utility/sms-pdu-encode-decode en septetos use esta....http://www.asciitohex.com/ LA ULTIMA VERSION ES PARA CUALQUIER NUMERO DE CARACTERES VER:abril 27 2017 tanto LENIN y LENOUT se deben especificar al ensamblar la trama PDU en el MODEM GSM o GPRS */ char gi[50]; char gs[50]; int i,K,LENOUT,LENIN,C; // PRUEBA CON LA CADENA "gallina cafe" // cadena de octetos = E7309B9D768741E3B0B90C // cadena de septetos o lo que entrega esta funcion = 67 61 6c 6c 69 6e 61 20 63 61 66 65 void OctToSep(char *DE, char *DS); int main(){ gi[0]=0xE7; gi[1]=0x30; gi[2]=0x9B; gi[3]=0x9D; gi[4]=0x76; gi[5]=0x87; gi[6]=0x41; gi[7]=0xE3; gi[8]=0xB0; gi[9]=0xB9; gi[10]=0x0C; OctToSep(gi,gs);//se llama la funcion for (i=0;i < LENOUT;i++){ // se imprime el resultado pc.printf("%2X,%d,%d\r\n",gs[i],i,K); } } //----------------funcion de interes --------------------------- void OctToSep(char *DE, char *DS){ LENIN=strlen(DE); LENOUT= LENIN*8/7; K=7; C=0; DS[0]=DE[0] & 0x7F; // la primera sola for (i=1;i < LENOUT;i++){ // inicia el algoritmo DS[i]=(DE[i-1-C]>>K | DE[i-C]<<(8-K))& 0x7F; //valido para todos if (K==0) {K=8;C++;} K--; } return; }