Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

PDU mode algorithm for sending and receiving SMS

Status
Not open for further replies.

chib

Newbie level 4
Joined
Mar 7, 2004
Messages
5
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
76
Does anyone know where I can get the PDU algorithm for sending and receiving SMS.I have got an Ericsson T68 and it does not support Text mode only PCU mode which seems very complicated.Cheers for your help in advance. - Chib
 

pdu converter

Please use the search function (on top of this page) and type "pdu" in (without the quotes) and you will find a few of my posts regarding PDU mode (but for Siemens phones).

Hope this helps and best regards
 

pdu algorithm

Thank C man will have a look
 

pduspy source

Just had a look have no clue of visual Basic does any1 know where I can get it in C++
 

mode algorithm

Look my posts here:
**broken link removed**
**broken link removed**

The source is in C

have fun
 

ascii to pdu converter

Just found it will be studying it all day :)
 

c++ text to pdu converter

And OH! btw have U by any chance got a link to the reverse (PDU decode)
Cheers Chib
 

pdu sms format algorithm

Sure, I posted it here:
**broken link removed**

But be aware that it can not decode the output of the other program (which encodes a message) as receive and transmit PDU formats are different :-(

You can use the PC program pduspy to decode/encode PDU's from here:
http://www.nobbi.com/download.htm#pduspy

Both codefragments I have posted work with Siemens GSM phones with built in modems using PDU format to transmit and receive SMS'es.

Should you still have problems in this matter do not hesitate to contact me ...

have fun
 

pdu-converter

Thank you very much C man you ve been off great help


No ' thanks ' .
Warning!


--
makswell
 

pdu converter in php

Hi C man I have been having a few problems compiling the sms.c program
I havent ever seen a bit declaration before and my compiler doesnt seem happy with it . I am using Visual c++ btw -chib
 

how to convert pdu to ascii

C-Man said:
Sure, I posted it here:
h**p://www.elektroda.pl/eboard/searchtopic49100-pdu.html

But be aware that it can not decode the output of the other program (which encodes a message) as receive and transmit PDU formats are different :-(

You can use the PC program pduspy to decode/encode PDU's from here:
h**p://www.nobbi.com/download.htm#pduspy

Both codefragments I have posted work with Siemens GSM phones with built in modems using PDU format to transmit and receive SMS'es.

Should you still have problems in this matter do not hesitate to contact me ...

have fun


Hi C-Man

I need to know what PDU format version ís using my cell phone, i use a ericsson r520m, what at command is utils for me

This is to set the correct code for my aplication with PIC Microcontroller, to send the correct PDU frame fron PIC

Thank yoy very much
 

conversions in pdu mode

Hi terka,

there is only one pdu format please read my posts on this subject ...

best regards
 

pdu sms frame

Hi C-Man

I´m usign pduspy, fantastic software --WOW !!!!!!! it will help me in my project...

Another question, it´s posible decode SMS data field withou decode all PDU frame, using a PIC micro??

Thank you
 

lookup_ascii8to7

The AT command of my r520 is working, y receive answers from cell phone.

But the command to send sms in pdu mode say OK, but it does not work.

at+cmgs=23
>bla bla bla crt+z

OK



The rx phone not receive the sms, y had review the pdu in pduspy

????????


Thank
 

danish sms pdu æ ø å

First of all do you want to send or receive SMS?

This are two completly different things with different PDU formats :-(

It should be possible to decode the datafield only but you must read all other databytes as they contain info how many bytes to skip ...

When you send at+cmgs=23 are you sure that 23 which is the length in oktets is correct?

You must count the databytes in 7 bit steps this is a little complicated. I call my packing routine twice first time with a flag set that tells the routine to just count the databytes :)

Post the complete PDU you want to send (including the AT commands) and I will take a look at it for you.

hope this helps and best regards
 

pdu conversion algorithm 8-bits

Hi CMan, thank you for your reply.

Here it´s my case. I´m working whit PDUspy

Message: Hi. This is a test message ==> in create PDU sheet, the TP-UD field indicates 26/48(1). It should be 26/160??????? why i have 48 ???

PDU-options: sms-submmit pdu
smsc configured in cell phone (MS)
TON/NPI: International/ISDN
no FLAGs

PDU Setting: TP-PID => SME internetworking
SME to SME protocol
TP-DCS => General coding
no COMPRESS
no CLASS
Alphabet => 7 bits
TP-VP => no vadility field



PDU hex format:
=============

0001000A91659956640000001AC8B40B4445A7E7A0F41C1406D1CB733AA85D9ECFC3E732


I need help, than you

Added after 3 hours:

Another things..

PDUspy read my sms stored in my ericsson r520 cell phone. but it does not save the pdu created for me using pduspy

the response to a executed command is:

"OK", and is not "+CMGS, mr, ackpdu"

what is my problem ??, the phone does no send the SMS, but the answer of phone is "OK"


I use hyperterminal to send the PDU sms format


Bye
 

convert pdu ascii

HI to all

I solved my problems

it was this:

in PDUspy software, if the PDU LENGTH IS N BYTES, when i send the PDU SMS mode using hyperterminal (VT100 emulation), in leght field i must writte N-1 bytes, WOW, ist WORKING, in 7 bits/8 bits alphabet, im very happy

Thankz to all, now the problem is decode incoming SMS on a BOARD with PIC micro 16F877...uffffff....hard work

Bye to all


regards
 

mode of double values algorithm c#

terka said:
HI to all

I solved my problems

it was this:

in PDUspy software, if the PDU LENGTH IS N BYTES, when i send the PDU SMS mode using hyperterminal (VT100 emulation), in leght field i must writte N-1 bytes, WOW, ist WORKING, in 7 bits/8 bits alphabet, im very happy

Thankz to all, now the problem is decode incoming SMS on a BOARD with PIC micro 16F877...uffffff....hard work

Bye to all


regards

I also posted the stuff to decode incoming SMS just search my posts carefully ...

best regards
 

pdu conversion algorithm

Hi

I found a code to translate a ASCII string to PDU string.
You can download it from: **broken link removed**

It´s made for PC, and I had modified it to use on a PIC 18F242, because expensive memory use...


Well, I had compiled my code on CCS 3.322, and ist not working very well.....

Example: ascii string ===> buffer[]="hellohello" from **broken link removed**

in PDU must be: E8 32 9B FD 46 97 D9 EC 37

but the result in my code is: 6F 4A 4B 4C 4D 4E 4F 50 51

I think than problem is how CCS drives the pointer and array, can you help me??


Thank you...


my code is:

MAIN.C

Code:
#include <18F242.h>
#fuses NOWDT,WDT128,XT, NOPROTECT, NOOSCSEN, BROWNOUT, BORV42, PUT, NOEBTR, NOEBTRB
#fuses STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include "pduconv.c"  

void main()
{
   int i;
   int pdulen=0;
   unsigned char *pdu;
   char buffer[]="hellohello";
   printf("Text to convert:\n\r\r");
   
   printf("%s\n\r\r",buffer);     
   printf("The result string is:\n\r\r");
   
   pdulen=ascii_to_pdu(buffer,&pdu);
   for (i=0; i<pdulen;i++)
   {
   printf("%02X",pdu[i]);
   // Originally, the previous code is the following one:
   // printf("%02hX",pdu[i]);
   // it works correctly compiled for windows but CCS does not 
   // recognize the previous thing
   }
      printf("The length of the buffer-pdu is: %i bytes", pdulen);
   //the function operates correctly on having found the length of the buffer PDU
   free(pdu); 

}



PDUCONV.C


Code:
/***************************************************************************
 *
 * Functions for converting between an ISO-8859-1 ASCII string and a
 * PDU-coded string as described in ETSI GSM 03.38 and ETSI GSM 03.40.
 *
 * This code is released to the public domain in 2003 by Mats Engstrom,
 * Nerdlabs Consulting. ( matseng at nerdlabs dot org )
 *
 **************************************************************************/
#include <stdlib.h>   //It contains the function abs ();
#include <stdlibm.h> //It contains the function malloc ()/realloc ()/fre () for CCS
#define VERSION 0.1

/* Define Non-Printable Characters as a question mark */
#define NPC7    63
#define NPC8    '?'
****************************************************************************
    This lookup table converts from ISO-8859-1 8-bit ASCII to the
    7 bit "default alphabet" as defined in ETSI GSM 03.38

    ISO-characters that don't have any correspondning character in the
    7-bit alphabet is replaced with the NPC7-character.  If there's
    a close match between the ISO-char and a 7-bit character (for example
    the letter i with a circumflex and the plain i-character) a substitution
    is done. These "close-matches" are marked in the lookup table by
    having its value negated.

    There are some character (for example the curly brace "}") that must
    be converted into a 2 byte 7-bit sequence.  These characters are
    marked in the table by having 256 added to its value.
****************************************************************************/

int lookup_ascii8to7[]={
    NPC7,       /*     0      null [NUL]                              */
    NPC7,       /*     1      start of heading [SOH]                  */
    NPC7,       /*     2      start of text [STX]                     */
    NPC7,       /*     3      end of text [ETX]                       */
    NPC7,       /*     4      end of transmission [EOT]               */
    NPC7,       /*     5      enquiry [ENQ]                           */
    NPC7,       /*     6      acknowledge [ACK]                       */
    NPC7,       /*     7      bell [BEL]                              */
    NPC7,       /*     8      backspace [BS]                          */
    NPC7,       /*     9      horizontal tab [HT]                     */
    10,         /*    10      line feed [LF]                          */
    NPC7,       /*    11      vertical tab [VT]                       */
    10+256,     /*    12      form feed [FF]                          */
    13,         /*    13      carriage return [CR]                    */
    NPC7,       /*    14      shift out [SO]                          */
    NPC7,       /*    15      shift in [SI]                           */
    NPC7,       /*    16      data link escape [DLE]                  */
    NPC7,       /*    17      device control 1 [DC1]                  */
    NPC7,       /*    18      device control 2 [DC2]                  */
    NPC7,       /*    19      device control 3 [DC3]                  */
    NPC7,       /*    20      device control 4 [DC4]                  */
    NPC7,       /*    21      negative acknowledge [NAK]              */
    NPC7,       /*    22      synchronous idle [SYN]                  */
    NPC7,       /*    23      end of trans. block [ETB]               */
    NPC7,       /*    24      cancel [CAN]                            */
    NPC7,       /*    25      end of medium [EM]                      */
    NPC7,       /*    26      substitute [SUB]                        */
    NPC7,       /*    27      escape [ESC]                            */
    NPC7,       /*    28      file separator [FS]                     */
    NPC7,       /*    29      group separator [GS]                    */
    NPC7,       /*    30      record separator [RS]                   */
    NPC7,       /*    31      unit separator [US]                     */
    32,         /*    32      space                                   */
    33,         /*    33    ! exclamation mark                        */
    34,         /*    34    " double quotation mark                   */
    35,         /*    35    # number sign                             */
    2,          /*    36    $ dollar sign                             */
    37,         /*    37    % percent sign                            */
    38,         /*    38    & ampersand                               */
    39,         /*    39    ' apostrophe                              */
    40,         /*    40    ( left parenthesis                        */
    41,         /*    41    ) right parenthesis                       */
    42,         /*    42    * asterisk                                */
    43,         /*    43    + plus sign                               */
    44,         /*    44    , comma                                   */
    45,         /*    45    - hyphen                                  */
    46,         /*    46    . period                                  */
    47,         /*    47    / slash,                                  */
    48,         /*    48    0 digit 0                                 */
    49,         /*    49    1 digit 1                                 */
    50,         /*    50    2 digit 2                                 */
    51,         /*    51    3 digit 3                                 */
    52,         /*    52    4 digit 4                                 */
    53,         /*    53    5 digit 5                                 */
    54,         /*    54    6 digit 6                                 */
    55,         /*    55    7 digit 7                                 */
    56,         /*    56    8 digit 8                                 */
    57,         /*    57    9 digit 9                                 */
    58,         /*    58    : colon                                   */
    59,         /*    59    ; semicolon                               */
    60,         /*    60    < less-than sign                          */
    61,         /*    61    = equal sign                              */
    62,         /*    62    > greater-than sign                       */
    63,         /*    63    ? question mark                           */
    0,          /*    64    @ commercial at sign                      */
    65,         /*    65    A uppercase A                             */
    66,         /*    66    B uppercase B                             */
    67,         /*    67    C uppercase C                             */
    68,         /*    68    D uppercase D                             */
    69,         /*    69    E uppercase E                             */
    70,         /*    70    F uppercase F                             */
    71,         /*    71    G uppercase G                             */
    72,         /*    72    H uppercase H                             */
    73,         /*    73    I uppercase I                             */
    74,         /*    74    J uppercase J                             */
    75,         /*    75    K uppercase K                             */
    76,         /*    76    L uppercase L                             */
    77,         /*    77    M uppercase M                             */
    78,         /*    78    N uppercase N                             */
    79,         /*    79    O uppercase O                             */
    80,         /*    80    P uppercase P                             */
    81,         /*    81    Q uppercase Q                             */
    82,         /*    82    R uppercase R                             */
    83,         /*    83    S uppercase S                             */
    84,         /*    84    T uppercase T                             */
    85,         /*    85    U uppercase U                             */
    86,         /*    86    V uppercase V                             */
    87,         /*    87    W uppercase W                             */
    88,         /*    88    X uppercase X                             */
    89,         /*    89    Y uppercase Y                             */
    90,         /*    90    Z uppercase Z                             */
    60+256,     /*    91    [ left square bracket                     */
    47+256,     /*    92    \ backslash                               */
    62+256,     /*    93    ] right square bracket                    */
    20+256,     /*    94    ^ circumflex accent                       */
    17,         /*    95    _ underscore                              */
    -39,        /*    96    ` back apostrophe                         */
    97,         /*    97    a lowercase a                             */
    98,         /*    98    b lowercase b                             */
    99,         /*    99    c lowercase c                             */
    100,        /*   100    d lowercase d                             */
    101,        /*   101    e lowercase e                             */
    102,        /*   102    f lowercase f                             */
    103,        /*   103    g lowercase g                             */
    104,        /*   104    h lowercase h                             */
    105,        /*   105    i lowercase i                             */
    106,        /*   106    j lowercase j                             */
    107,        /*   107    k lowercase k                             */
    108,        /*   108    l lowercase l                             */
    109,        /*   109    m lowercase m                             */
    110,        /*   110    n lowercase n                             */
    111,        /*   111    o lowercase o                             */
    112,        /*   112    p lowercase p                             */
    113,        /*   113    q lowercase q                             */
    114,        /*   114    r lowercase r                             */
    115,        /*   115    s lowercase s                             */
    116,        /*   116    t lowercase t                             */
    117,        /*   117    u lowercase u                             */
    118,        /*   118    v lowercase v                             */
    119,        /*   119    w lowercase w                             */
    120,        /*   120    x lowercase x                             */
    121,        /*   121    y lowercase y                             */
    122,        /*   122    z lowercase z                             */
    40+256,     /*   123    { left brace                              */
    64+256,     /*   124    | vertical bar                            */
    41+256,     /*   125    } right brace                             */
    61+256,     /*   126    ~ tilde accent                            */
    NPC7,       /*   127      delete [DEL]                            */
    NPC7,       /*   128                                              */
    NPC7,       /*   129                                              */
    -39,        /*   130      low left rising single quote            */
    -102,       /*   131      lowercase italic f                      */
    -34,        /*   132      low left rising double quote            */
    NPC7,       /*   133      low horizontal ellipsis                 */
    NPC7,       /*   134      dagger mark                             */
    NPC7,       /*   135      double dagger mark                      */
    NPC7,       /*   136      letter modifying circumflex             */
    NPC7,       /*   137      per thousand (mille) sign               */
    -83,        /*   138      uppercase S caron or hacek              */
    -39,        /*   139      left single angle quote mark            */
    -214,       /*   140      uppercase OE ligature                   */
    NPC7,       /*   141                                              */
    NPC7,       /*   142                                              */
    NPC7,       /*   143                                              */
    NPC7,       /*   144                                              */
    -39,        /*   145      left single quotation mark              */
    -39,        /*   146      right single quote mark                 */
    -34,        /*   147      left double quotation mark              */
    -34,        /*   148      right double quote mark                 */
    -42,        /*   149      round filled bullet                     */
    -45,        /*   150      en dash                                 */
    -45,        /*   151      em dash                                 */
    -39,        /*   152      small spacing tilde accent              */
    NPC7,       /*   153      trademark sign                          */
    -115,       /*   154      lowercase s caron or hacek              */
    -39,        /*   155      right single angle quote mark           */
    -111,       /*   156      lowercase oe ligature                   */
    NPC7,       /*   157                                              */
    NPC7,       /*   158                                              */
    -89,        /*   159      uppercase Y dieresis or umlaut          */
    -32,        /*   160      non-breaking space                      */
    64,         /*   161    ¡ inverted exclamation mark               */
    -99,        /*   162    ¢ cent sign                               */
    1,          /*   163    £ pound sterling sign                     */
    36,         /*   164    ¤ general currency sign                   */
    3,          /*   165    ¥ yen sign                                */
    -33,        /*   166    ¦ broken vertical bar                     */
    95,         /*   167    § section sign                            */
    -34,        /*   168    ¨ spacing dieresis or umlaut              */
    NPC7,       /*   169    © copyright sign                          */
    NPC7,       /*   170    ª feminine ordinal indicator              */
    -60,        /*   171    « left (double) angle quote               */
    NPC7,       /*   172    ¬ logical not sign                        */
    -45,        /*   173    ­ soft hyphen                             */
    NPC7,       /*   174    ® registered trademark sign               */
    NPC7,       /*   175    ¯ spacing macron (long) accent            */
    NPC7,       /*   176    ° degree sign                             */
    NPC7,       /*   177    ± plus-or-minus sign                      */
    -50,        /*   178    ² superscript 2                           */
    -51,        /*   179    ³ superscript 3                           */
    -39,        /*   180    ´ spacing acute accent                    */
    -117,       /*   181    µ micro sign                              */
    NPC7,       /*   182    ¶ paragraph sign, pilcrow sign            */
    NPC7,       /*   183    · middle dot, centered dot                */
    NPC7,       /*   184    ¸ spacing cedilla                         */
    -49,        /*   185    ¹ superscript 1                           */
    NPC7,       /*   186    º masculine ordinal indicator             */
    -62,        /*   187    » right (double) angle quote (guillemet)  */
    NPC7,       /*   188    ¼ fraction 1/4                            */
    NPC7,       /*   189    ½ fraction 1/2                            */
    NPC7,       /*   190    ¾ fraction 3/4                            */
    96,         /*   191    ¿ inverted question mark                  */
    -65,        /*   192    À uppercase A grave                       */
    -65,        /*   193    Á uppercase A acute                       */
    -65,        /*   194    Â uppercase A circumflex                  */
    -65,        /*   195    Ã uppercase A tilde                       */
    91,         /*   196    Ä uppercase A dieresis or umlaut          */
    14,         /*   197    Å uppercase A ring                        */
    28,         /*   198    Æ uppercase AE ligature                   */
    9,          /*   199    Ç uppercase C cedilla                     */
    -31,        /*   200    È uppercase E grave                       */
    31,         /*   201    É uppercase E acute                       */
    -31,        /*   202    Ê uppercase E circumflex                  */
    -31,        /*   203    Ë uppercase E dieresis or umlaut          */
    -73,        /*   204    Ì uppercase I grave                       */
    -73,        /*   205    Í uppercase I acute                       */
    -73,        /*   206    Î uppercase I circumflex                  */
    -73,        /*   207    Ï uppercase I dieresis or umlaut          */
    -68,        /*   208    Ð uppercase ETH                           */
    93,         /*   209    Ñ uppercase N tilde                       */
    -79,        /*   210    Ò uppercase O grave                       */
    -79,        /*   211    Ó uppercase O acute                       */
    -79,        /*   212    Ô uppercase O circumflex                  */
    -79,        /*   213    Õ uppercase O tilde                       */
    92,         /*   214    Ö uppercase O dieresis or umlaut          */
    -42,        /*   215    × multiplication sign                     */
    11,         /*   216    Ø uppercase O slash                       */
    -85,        /*   217    Ù uppercase U grave                       */
    -85,        /*   218    Ú uppercase U acute                       */
    -85,        /*   219    Û uppercase U circumflex                  */
    94,         /*   220    Ü uppercase U dieresis or umlaut          */
    -89,        /*   221    Ý uppercase Y acute                       */
    NPC7,       /*   222    Þ uppercase THORN                         */
    30,         /*   223    ß lowercase sharp s, sz ligature          */
    127,        /*   224    à lowercase a grave                       */
    -97,        /*   225    á lowercase a acute                       */
    -97,        /*   226    â lowercase a circumflex                  */
    -97,        /*   227    ã lowercase a tilde                       */
    123,        /*   228    ä lowercase a dieresis or umlaut          */
    15,         /*   229    å lowercase a ring                        */
    29,         /*   230    æ lowercase ae ligature                   */
    -9,         /*   231    ç lowercase c cedilla                     */
    4,          /*   232    è lowercase e grave                       */
    5,          /*   233    é lowercase e acute                       */
    -101,       /*   234    ê lowercase e circumflex                  */
    -101,       /*   235    ë lowercase e dieresis or umlaut          */
    7,          /*   236    ì lowercase i grave                       */
    7,          /*   237    í lowercase i acute                       */
    -105,       /*   238    î lowercase i circumflex                  */
    -105,       /*   239    ï lowercase i dieresis or umlaut          */
    NPC7,       /*   240    ð lowercase eth                           */
    125,        /*   241    ñ lowercase n tilde                       */
    8,          /*   242    ò lowercase o grave                       */
    -111,       /*   243    ó lowercase o acute                       */
    -111,       /*   244    ô lowercase o circumflex                  */
    -111,       /*   245    õ lowercase o tilde                       */
    124,        /*   246    ö lowercase o dieresis or umlaut          */
    -47,        /*   247    ÷ division sign                           */
    12,         /*   248    ø lowercase o slash                       */
    6,          /*   249    ù lowercase u grave                       */
    -117,       /*   250    ú lowercase u acute                       */
    -117,       /*   251    û lowercase u circumflex                  */
    126,        /*   252    ü lowercase u dieresis or umlaut          */
    -121,       /*   253    ý lowercase y acute                       */
    NPC7,       /*   254    þ lowercase thorn                         */
    -121        /*   255    ÿ lowercase y dieresis or umlaut          */
};



/*
 * Use a lookup table to convert from an ISO-8859-1 string to
 * the 7-bit default alphabet used by SMS.
 *
 *  *ascii   The string to convert
 *
 *  **a7bit  A pointer to the array that the result is stored in,
 *           the space is malloced by this function
 *
 *  Returns the length of the a7bit-array

* Realized changes:
 *
 * *ascii ==> I have supported it without changes
 * ** a7bit ==> I changed it to *a7bit []
 *

 *
 *  Note:  The a7bit-array must be free()'ed by te caller
 */


static int convert_ascii_to_7bit(char *ascii, char *a7bit[]){
    int r=0;
    int w=0;

    /* It locates sufficient memory for the resultant string */
    *a7bit=malloc(strlen(ascii)*2+1);   // sin cambios

    while (ascii[r]!=0) {
        if ((lookup_ascii8to7[(unsigned char)ascii[r]])<256) {
            *a7bit[w++]=abs(lookup_ascii8to7[(unsigned char)ascii[r++]]);
          //*a7bit[w++] was (*a7bit)[w++]
        } else {
            *a7bit[w++]=27;
            //idem
            *a7bit[w++]=lookup_ascii8to7[(unsigned char)ascii[r++]]-256;
           //idem
           }
    }

    /* Realloc the result array to the correct size */
    *a7bit=realloc(*a7bit,w);  //sin cambios

    return w;
}


/*
 *  Convert an ISO-8859-1 ASCII string to an array of PDU-coded bytes
 *
 *  *ascii  The ISO-cleartext to convert
 *
 *  **pdu   Pointer to an array where the pdu-bytes will be stored in, this
 *          function allocates the neccesary memory for the array
 *
 *  Returns the number of bytes stored in the pdu-array
*
 * NOTE: Here I changed ** pdu for *pdu [], for CCS. Not if it is correct
 * to support the integrity of the program
 *
 * It returns the number of bytes stored in the arrangement PDU
 *


int ascii_to_pdu(char *ascii, unsigned char *pdu[]){
    int r;
    int w;
    char *ascii7bit;  //no changes
    int  len7bit;     //no changes

    /* start  converting the string ASCII to a string of 7bit*/
    len7bit=convert_ascii_to_7bit(ascii,&ascii7bit);
    *pdu=malloc(len7bit);  //no changes

    /* Now, to create the string PDU enpaquetando the string of 7bit*/
    r=0;
    w=0;
    while (r<len7bit) {

        *pdu[w]=((ascii7bit[r]>>(w%7))&0x7F) | ((ascii7bit[r+1]<<(7-(w%7)))&0xFF);

       //*pdu[w] was (*pdu)[w]

        if ((w%7)==6) r++;
        r++;
        w++;
    }

    free(ascii7bit);
    return w;  // w is the number of bytes stored in the areglo PDU.
}


I wait for you help


Bye
 

pdu encode algorithm

¿Did you resolve the problem?.

I'm very interesting in make a code to encode ascii to PDU with C for Pic.

Bye.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top