Programa para pasar de Octetos a septetos en tramas PDU usadas en mensajes de texto SMS que viajan por la red GSM

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
tony63
Date:
Fri Apr 28 04:08:36 2017 +0000
Parent:
0:e74448c0b740
Commit message:
funcion completa y aislada

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Thu Oct 16 22:16:35 2014 +0000
+++ b/main.cpp	Fri Apr 28 04:08:36 2017 +0000
@@ -11,44 +11,48 @@
 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:SEP 24 DEL 2014
+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
 */
 
-short DE[255];
-short DS[255];
+char gi[50];
+char gs[50];
 int i,K,LENOUT,LENIN,C;
-//PROBAR CON ESTOS
-//E7309B9D768741E3B0B90C  son octetos ///.gallina cafe  67 61 6c 6c 69 6e 61 20 63 61 66 65 son septetos
+// 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(){
-         LENIN=11; //numero de caracteres de abajo son los octetos
-         DE[0]=0xE7;
-         DE[1]=0x30;
-         DE[2]=0x9B;
-         DE[3]=0x9D;
-         DE[4]=0x76;
-         DE[5]=0x87;
-         DE[6]=0x41;
-         DE[7]=0xE3;
-         DE[8]=0xB0;
-         DE[9]=0xB9;
-         DE[10]=0x0C;
-//----------------------------------- ---------------------------
+         
+         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
-         pc.printf("%2X,%d,%d\r\n",DS[0],i,K);
          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
-         pc.printf("%2X,%d,%d\r\n",DS[i],i,K);
          if (K==0) {K=8;C++;}
          K--;
          }
-         for (i=0;i < LENOUT;i++){
-         pc.printf("%c",DS[i]);
+         return;        
          }
-         pc.printf("  ---");
-         
-}