• 初学者开发GSM模块、4G模块的时候,需要将国标字符转换成unicode码发送到模块中,才能实现中文短信的收发。该软件可以下显示转码后PDU包的格式,也可以进行PDU包的解码,很适合调试过程中的朋友。
  • [转]PDU编解码详解

    2008-05-07 23:07:00
    PDU编解码详解简单介绍SMS是由Etsi所制定的一个规范(GSM 03.40 和 GSM 03.38)。它可以发送最多160个字符,当使用7-bits编码的时候。8-bit编码(最多140个字符)通常无法直接通过手机显示;通常被用来作为数据消息,...
    
    

    PDU编解码详解



    简单介绍


    SMS
    是由Etsi所制定的一个规范(GSM 03.40 GSM 03.38)。它可以发送最多160个字符,当使用7-bits编码的时候。8-bit编码(最多140个字符)通常无法直接通过手机显示;通常被用来作为数据消息,例如:smart messaging中的图片和铃声)和OTA WAP设置。16-bit信息(最多70个字符)被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。一个以class 0 开头的16-bit的文本信息将在某些手机上作为Flash SMS显示(闪烁的SMS和警告SMS)。
    有两种方式来发送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit) 模式。文本模式(可能某些手机不支持)实际上也是一种PDU编码的一种表现形式。在显示SMS信息,可能使用不同的字符集和不同的编码方式。最常见的选择是"PCCP437", "PCDN", "8859-1", "IRA" "GSM". 这些都通过读取应用程序的at-command中的AT+CSCS指定。如果你想阅读手机上的信息,手机会为你选择一种合适的编码。那么一个可以阅读SMS消息的应用要么使用test模式,要么是PDU模式。如果使用text模式,那么应用将绑定(或限制在)一些可能的编码选择中。在某些情况下是不够的,如果使用PDU模式,那么就可以使用任何编码方式。


    --------------------------------------------------------------------------------

    接收
    PDU
    串不仅仅包含了消息,而且还有很多发送者的元信息,他的SMS服务中心,时间标志等等。这些都是以8位字节的16进制数,或者半8位字节的十进制数。以下的字符书我从Nokia 6110 收到的信息,当从www.mtn.co.za发送的串是"hellohello"的时候。
    07 917238010010F5 040BC87238880900F100009930925161958003C16010


    这个八位串包含了三个部分:第一个8位表示SMSC信息的长度("07")SMSC的信息 ("917238010010F5"),SMS_DELIVER部分(GSM 03.40中指定)

    注意: 有些手机(例如:Ericssson 888?)头三个部分(被着色)在PDU模式下被省略。
    8
    描述
    07 SMSC
    信息的长度。(在这个例子里是7个八位)
    91 SMSC
    的地址类型 (91意味着国际格式的电话号码)
    72 38 01 00 10 F5
    服务中心号码(半八位的十进制数)电话号码是一个奇数(11),因此加入F来保证8位。这个服务中心的号码是"+27381000015"
    04 SMS_DELIVER
    的第一个8位。
    0B
    地址长度。发送号码的长度(0B hex = 11 dec)
    C8
    发送号码的地址类型
    72 38 88 09 00 F1
    发送号码(半八位的十进制数),有一个F结尾。
    00 TP-PID.
    协议标识
    00 TP-DCS
    编码方式
    99 30 92 51 61 95 80 TP-SCTS.
    时间邮戳(8)
    0A TP-UDL.
    用户数据长度,信息的长度。TP-DCS域表明是7-bit格式的数据。因此长度在这里是一个107-bits。如果TP-DCS被设置成8-bit或者Unicode,那么长度就应该是9个八位长度。
    E8329BFD4697D9EC37 TP-UD. 7-bit
    编码的信息。


    所有的8位都是16进制编码,除了服务中心号码,发送号码和时间邮戳;他们都是十进制的半8位编码。在PDU串的结尾部分包含了一些16进制的8-bits数据,但他们实际7-bits数据。
    十进制的半8位只需要将高位和地位交换就可以得到实际的数值。例如:"72 38 88 09 00 F1" "27 83 88 90 00 1F"。因为电话号码是一个奇数,没有办法组成8位编码,所以使用F来补齐。在解析时间邮戳的时候("99 03 29 15 16 59 08"),前6位代表日期,后6位代表时间,最后2位是时区。


    --------------------------------------------------------------------------------

    Flash SMS
    在某些手机上(所有的Nokias,某些Siemens, Ericsson, Motorola 等等..)class 0信息将被显示为一种flash SMS信息。这些信息只要一到达,将立即显示在屏幕上,而不需要按任何按钮。如果数据的编码方式是设置成16-bit unicode (ucs2), 而且信息以"0001"开头,那么它将作为一个闪烁的flash message显示。

    Octet Value Description
    TP-DCS 18 16 bits (UCS2), message class 0
    TP-VP AA Validity period
    TP-UDL 0C User Data Length, 12 octets
    TP-UD 00 01 00 41 00 6C 00 65 00 72 00 74 User Data, message "Alert"


    这个表显示了Flash SMS中的相关信息。
    第一个unicode字符("00 01")使能闪烁。这样的消息最长就是69unicode字符。


    --------------------------------------------------------------------------------

    Nokia ICON
    这是一个OTA (On The Air) bitmap.
    这个文件是从Nokia论坛下载而来。在"Smart Messaging"连接中。

      PDU
    type 44
    RP:0 (no reply path)
    UDHI:1 (UD begins with a header)
    SRI:0 (no status report will be returned)
    MMS:1 (no more messages)
    MTI:00 (SMS-deliver)
    OA 0B
    91
    6302752852F1
    length:11 digit
    type: international,E.164/E.163
    number: 36 20 5782251
    PID 00
    PDU content: short message
    DCS F5
    data coding: 8 bit
    message class: 1
    SCTS 991012
    114343
    40
    date: 99/01/21
    time: 11:34:34
    timezone: GMT+1
    UDL 89
    137 octets
    UD UDH 06
    05
    04
    1583
    1583
    length of header: 6 octets
    information element type: NBS port addressing
    information element length: 4 octets
    destination port: CLI icon
    source port: CLI icon
    O
    T
    A

    b
    i
    t
    m
    a
    p h
    d
    r 00

    48
    0E
    01
    infofield: last octet, no compression,
    no palette, 8 bit, 0 animated icons
    width: 72 pixel
    height: 14 pixel
    depth: 1 ?
    i
    m
    a
    g
    e

    d
    a
    t
    a
    3FF00110005B0001E8
    7FF802A801A500021C
    3FF80C470101000408
    7FF808010081001C04
    3FF008150081001304
    7E10183F0058803A84
    7DF030490064802C9C
    7E501855002D80473C
    3AD0082A8058404218
    39B005010060C04930
    105005BE0042203220
    1A1007620046600C40
    09E001BB003B900840
    042000960001080EA0




    --------------------------------------------------------------------------------

    7Bit
    编码
    "hellohello"
    包含了10个字符,他们必须一个个将用7-bits来代表。

    h e l l o h e l l o
    104 101 108 108 111 104 101 108 108 111
    1101000 1100101 1101100 1101100 1101111 1101000 1100101 1101100 1101100 1101111
    1101000
    110010 1
    11011 00
    1101 100
    110 1111
    11 01000
    1 100101
    1101100
    1101100
    110111 1



    首先将字符转换为7位的二进制,然后,将后面字符的位调用到前面,补齐前面的差别。例如:h翻译成1101000e翻译成1100101,显然h的二进制编码不足八位,那么就将e的最后一位补足到h的前面。那么就成了11101000E8)。剩余地编码看下表:


    1 1101000
    00 110010
    100 11011
    1111 1101
    01000 110
    100101 11
    1101100 1

    1 1101100
    110111
    E8 32 9B FD 46 97 D9
    EC 37


    那么就变成了9个八进制数 E8 32 9B FD 46 97 D9 EC 37



    --------------------------------------------------------------------------------

    错误信息
    错误编码意义
    0-127 GSM 04.11 Annex E-2 values
    128-255 GSM 03.40 section 9.2.3.22 values
    300 Phone failure
    301 SMS service of phone reserved
    302 Operation not allowed
    303 Operation not supported
    304 Invalid PDU mode parameter
    305 Invalid text mode parameter
    310 SIM not inserted
    311 SIM PIN necessary
    312 PH-SIM PIN necessary
    313 SIM failure
    314 SIM busy
    315 SIM wrong
    320 Memory failure
    321 Invalid memory index
    322 Memory full
    330 SMSC (message service center) address unknown
    331 No network service
    332 Network timeout
    500 Unknown error
    512 Manufacturer specific

    展开全文
  • 这里非常感谢,博客主人的分享,但是,博客主人写的东西并没有涵盖完全, 只是将到了普通短信和...因此,本文章主要讲解 长短信 与 普通短信的区别,7bit 编码时的注意事项。 在您阅读本文之前, 请务必阅读 上

     CDMA PDU 编解码补充解析


    http://blog.csdn.net/mcu_hong/article/details/7625478    这里非常感谢,博客主人的分享,但是,博客主人写的东西并没有涵盖完全,

    只是将到了普通短信和中文编码的部分,并没有对 长短信  和英文编码 做过多的讲解。

    因此,本编文章主要讲解  长短信 与 普通短信的区别7bit 编码时的注意事项。

    在您阅读本文之前, 请务必阅读 上文。这是文中提到的 http://download.csdn.net/detail/zx249388847/9708872 (3gpp2 短信文档)   3gpp2对cdma短信的有关标准。

    对于短信, 我们关注的主要是两个东西, 发送地址(谁发的,发给谁的),消息内容(文本是什么)。


    我用手机发送了一个串  hello  , 这是截取的PDU,   下面我先对这个PDU, 进行分析。

    0000021002020702c6049064c4d40601fc081b00031000200106102e8cbb366f03061409011126310a01400d0101

    以上遵循CDMA 的 PDU格式 


    所有的   PARAMETER_ID   在下表中标示



    按照 文档 中提供的格式,我们以此解析, 参见文档 C.S0015-A_v1.0_111403.pdf     P49

    1、 00    SMS_MSG_TYPE  :  

    00  表示   SMS Point-to-Point  点对点传输

    2、 00021002    Teleservice Identifier   

    The Teleservice Identifier parameter identifies which upper layer service access point is sending or should receive this message


           00 =  PARAMETER_ID , 02 = PARAMETER_LEN,   1002 = Parameter

    3、 020702c6049064c4d4      Address Parameters 

    The address parameters have the following variable-length format:      


     020702c6049064c4d4 

    02  =   PARAMETER_ID ,   这里表示源地址  Originating Address parameter, this field shall be set to ‘00000010’.
    07  = PARAMETER_LEN, SMS message parameter length.
    02c604  =  0000 0010 1100 0110 0000 0100   
                  第一个 0 = DIGIT_MODE   ,   4-bit DTMF    -->This field indicates whether the address digits are 4-bit   DTMF codes
    第二个 0 = NUMBER_MODE,  not a data network address     -->This field indicates whether the address type is as defined  a data network address.
                    接下来的8个bits  00 0010 11   -->  0B(十六进制),  11(十进制)  表示  后面紧跟了  一个 11 位的号码。
    接下来的  0001  -->  4个2进制数 ,表示一个十六进制数,  1   
    接下来 1000  -->  8  
    最后解析出来 号码是:          18124193135        (当收到短信时,这是一个源地址)

    4、0601fc   Bearer Reply Option

    The Bearer Reply Option parameter is used to request return of an SMS Acknowledge Message.  The Bearer Reply Option parameter has the following fixed-length format:

    06  =   PARAMETER_ID
    01  =  PARAMETER_LEN
    fc  ->  1111 1100      1111 11  = REPLY_SEQ  ,   00 =  RESERVED  (保留位通常补0)

    这个域, 说实话我也不知道是干什么用的, 如果你不需要解析这个域的话, 直接pass掉就好了。

    5、081b00031000200106102e8cbb366f03061409011126310a01400d0101    Bearer Data

    这个域里面有大量的子域
    The Bearer Data parameter has the following variable-length format:

    我们分别用不同的颜色标示,以示区分

    081b00031000200106102e8cbb366f03061409011126310a01400d0101

    08  =  PARAMETER_ID      
    1b  =  PARAMETER_LEN

    所有的  SUBPARAMETER_ID  在下表标示。


    5.1  0003100020      Message Identifier 

    The Message Identifier subparameter provides the message type and a messageidentification that can be used for acknowledgment. 
    The Message Identifier subparameterhas the following fixed-length format:


    00  --->  SUBPARAMETER_ID

    03  -->   SUBPARAM_LEN

    1  -->  MESSAGE_TYPE  :  Deliver (mobile-terminated only)  (表示短信以此为终止,当前设备)

    0002  -->   MESSAGE_ID

    0 -->  0000     第一个0 表示 HERDER_IND     这个域表示是不是长短信(长短信有数据头,下面我会讲到), 0 : 不是, 1  : 是 

                000     后面的三个 0    RESERVED

    5.2  0106102e8cbb366f    User Data

    The User Data subparameter has the following variable-length format:

    01  =  SUBPARAMETER_ID

    06 = SUBPARAM_LEN
    102e8cbb  -- > 0001 0000 0010 1110 1000 1100   1011 1011
                             0001 0       =  MSG_ENCODING :  表示 7-bit 编码,   00100  表示 16-bit  unicode 编码,  00000  表示 8-bit  编码
              000 0010 1 -->  5 (十进制) = NUM_FIELDS :表示后面有5个 7-bit 编码的数据 
    注意, 当有  UDH 时, 这个长度也包含有 UDH, 还有个 7bit 对齐的问题,下面会讲到)  
      110 1000  -->  0x68  (ASCII 码) : h 
        1100   101 -->  0x65 :        e

    注意:   CDMA 的 7-bit编码, 跟 GSM 的 7-bit 编码有区别,  如果你正在做了 GSM 的 7-bit编码, 请不要直接用过来

    以此解析完所有的bit,     内容就出来了:  hello 

    5.3 0306140901112631   Message Center Time Stamp

    The Message Center Time Stamp subparameter may be included with SMS messages sent  from a Message Center. 
    The Message Center Time Stamp subparameter has the following  fixed-length format:


    14 YEAR,  09 MONTH,   01 DAY,  11 HOURS,  26 MINUTES,  31 SECONDS
    2014-09-01 11:26:31

    5.4 0a0140  Reply Option 

    5.5 0d0101  Language Indicator


    我们来看一条长短信, 我接受到了一条英文 7-bit编码的 长短信,并把它截取出来

    0000021002020702c6049064c4d40601fc08a00003100028018e150028001818100b3ecd3bb3efcfa74eecf9f7e45db33e9dd9f4aed1bf66dd3bb3f6e7b72ecd3eb96ed3b37e9e7c346dcfab3e8dfb34e8dfb362e9fb366cdf9f669d9b366cd995754e4ba3f5d3b33ece7a73ae93b746fd9b37e774a766cdfbb5efdd9f7e7dfb33e9dd9f669cfbf3efcfb3669e9a36ae9fb34eecfa7769dba7767df9f7ae84ba12e849e23a5aa72003061409040928320d0101

    参照前面讲的步骤,我们以此解析,  第 5 节前面的都是一样的。   现在重复 5 节的步骤,来解析长短信,上了背景色的部分是我们需要在第5 节解析的内容

    08a00003100028018e150028001818100b3ecd3bb3efcfa74eecf9f7e45db33e9dd9f4aed1bf66dd3bb3f6e7b72ecd3eb96ed3b37e9e7c346dcfab3e8dfb34e8dfb362e9fb366cdf9f669d9b366cd995754e4ba3f5d3b33ece7a73ae93b746fd9b37e774a766cdfbb5efdd9f7e7dfb33e9dd9f669cfbf3efcfb3669e9a36ae9fb34eecfa7769dba7767df9f7ae84ba12e849e23a5aa72003061409040928320d0101

    5.  08a0

    5.1   0003100028    这里, HERDER_IND  解出来是  1    说明 User Data 中有用户数据头。

    5.2  018e150028001818100b3ecd3bb3e...

    01= SUBPARAMETER_ID

    8e = SUBPARAMETER_LEN  -->  142  byts

    150028 -->0001 0101 0000 0000 0010 1000

    0001 0MSG_ENCODING :  表示 7-bit 编码

        101 0000 0  -->  160 (十进制) = NUM_FIELDS :表示后面有160 个 7-bit 编码的数据

    000 0010 1  : UDHL   (User Data Header Length) : 05      UDH  的解析 参照  User Data Header 

    28001818100b3e -->0010 1000 0000 0000 0001 1000 0001 1000 0001 0000 0000 1011 0011 1110

    000 0000 0 -> iei : 0x00

    000 0001 1 : iei Length 0x03

    000 0001 1 : 参考号: 0x03

    000 0001 0 : 总条数 : 0x02

    000 0000 1 : 第几条 0x01

    --------------------------------------------------------------------------------------------------------------------------------------------- UDH 到这里结束

    这里 UDH 有 6 byte : 6 * 8 = 48 bit不能被 7 整除即不能刚好补满 7-bit编码的数据。所以这里需要 留 1 个 bit 补齐 7-bits 数据格式。

    0 UDH reserved

    11 0011 1 : 0x67 -> g

    依次解析出来内容是: glingogiinggod.lgingi.holmingvsmelizrniloisphmgjgholiholl.Ollloglillllle.Tr.Guilglsig.Imhollog:)llonkongogolgingligogogllithm.Olinginimingogo.B.B.B'D:-)d

    5.30306140904092832 :Message Center Time Stamp2014-09-04 09:28:32

    5.4  0d0101    Language Indicator  


    6 字符的编码解码

    默认我们的程序可以识别保存并输出的是 utf-8  的编码, 所以当你收到或传输的编码格式不是 utf-8 的编码格式时,就需要对字符进行编解码。

    编码:   utf-8  ---->   unicode  或  7-bit

    解码:  unicode  或 7-bit  --> utf-8

    有关 16-bit  编解码 的部分,参见 http://blog.csdn.net/iefreer/article/details/4836844

    参考文献 : 

    3.   http://www.3gpp2.com/Public_html/specs/C.S0015-A_v1.0_111403.pdf    (不建议直接打开,用下载工具下载出来)




            


    展开全文
  • PDU编码(非常经典)

    2016-11-23 16:03:11
    共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。   发送短消息常用Text和PDU(Protocol Data Unit,协议数据...

    共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。

     

    发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。

    使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。

     

    PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。

    7-bit编码用于发送普通的ASCII字符,它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可“压缩”成7个;

    8-bit编码通常用于发送数据消息,比如图片和铃声等;

    而UCS2编码用于发送Unicode字符

    在这三种编码方式下,PDU串的用户信息(TP-UD)段最大容量(可以发送的短消息的最大字符数)分别是160、140和70。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。

     

    PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同:

    7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数;

    8-bit编码时,就是字节数

    UCS2编码时,也是字节数,等于原始短消息的字符数的两倍

    如果用户信息(TP-UD)中存在一个头(基本参数的TP-UDHI为1),在所有编码方式下,用户信息长度(TP-UDL)都等于头长度与编码后字节数之和。如果采用GSM 03.42所建议的压缩算法(TP-DCS的高3位为001),则该长度也是压缩编码后字节数或头长度与压缩编码后字节数之和。

     

    PDU相当于一个数据包,它由构成消息(SMS)的信息组成。

    作为一种数据单元,它必须包含源/目的地址、保护(有效)时间数据格式协议类型和正文,正文长度可达140字节,它们都以十六进制表示。PDU结构根据短消息由移动终端发起或以移动终端为目的而不同。每条消息可以发送140个字节,由于本系统中最长的数据串没有超过140个字节,因此数据均可以用一条消息来发送。

    一般的PDU编码由A B C D E F G H I J K L M十三项组成。

    A:短信息中心地址长度,2位十六进制数(1字节)。

    B:短信息中心号码类型,2位十六进制数。

    C:短信息中心号码,B+C的长度将由A中的数据决定。

    D:文件头字节,2位十六进制数。

    E:信息类型,2位十六进制数。

    F:被叫号码长度,2位十六进制数。

    G:被叫号码类型,2位十六进制数,取值同B。

    H:被叫号码,长度由F中的数据决定。

    I:协议标识,2位十六进制数。

    J:数据编码方案,2位十六进制数。

    K:有效期,2位十六进制数。

    L:用户数据长度,2位十六进制数。

    M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。

    PDU编码协议简单说明

    例1 发送:SMSC号码是+8613800250500,对方号码是13693092030,消息内容是“Hello!”。从手机发出的PDU串可以是

    08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0 00 00 00 06 C8 32 9B FD 0E 01

    对照规范,具体分析:

    分段 含义 说明

    08 SMSC地址信息的长度 共8个八位字节(包括91)

    91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)

    68 31 08 20 05 05 F0 SMSC地址 8613800250500,补‘F’凑成偶数个

    11 基本参数(TP-MTI/VFP) 发送,TP-VP用相对格式

    00 消息基准值(TP-MR) 0

    0D 目标地址数字个数 共13个十进制数(不包括91和‘F’)

    91 目标地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)

    68 31 96 03 29 30 F0 目标地址(TP-DA) 8613693092030,补‘F’凑成偶数个

    00 协议标识(TP-PID) 是普通GSM类型,点到点方式

    00 用户信息编码方式(TP-DCS) 7-bit编码

    00 有效期(TP-VP) 5分钟

    06 用户信息长度(TP-UDL) 实际长度6个字节

    C8 32 9B FD 0E 01 用户信息(TP-UD) “Hello!”

    例2 接收:SMSC号码是+8613800250500,对方号码是13693092030,消息内容是“你好!”。手机接收到的PDU串可以是

    08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 96 03 29 30 F0 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21

    对照规范,具体分析:

    分段 含义 说明

    08 地址信息的长度 个八位字节(包括91)

    91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)

    68 31 08 20 05 05 F0 SMSC地址 8613800250500,补‘F’凑成偶数个

    84 基本参数(TP-MTI/MMS/RP) 接收,无更多消息,有回复地址

    0D 回复地址数字个数 共13个十进制数(不包括91和‘F’)

    91 回复地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)

    68 31 96 03 29 30 F0 回复地址(TP-RA) 8613693092030,补‘F’凑成偶数个

    00 协议标识(TP-PID) 是普通GSM类型,点到点方式

    08 用户信息编码方式(TP-DCS) UCS2编码

    30 30 21 80 63 54 80 时间戳(TP-SCTS) 2003-3-12 08:36:45  +8时区

    06 用户信息长度(TP-UDL) 实际长度6个字节

    4F 60 59 7D 00 21 用户信息(TP-UD) “你好!”

     


    详细解析:

     0891683108200505F011190D91683105155694F50008FF10008FF044F60597D


       <1>短信中心地址字段:


    0891

        08:Address-Lengt(地址长度),短信息中心地址长度为8个字节,是(91)+(683108200505F0)的长度,8个8位字节

     91地址类型:1 001 0001       Bit7:1。始终为1       Bits 6,5,4:Type-of-Number(号码类型):001,代表Internation Number。也即是号码前加“+”。注意:对某些比较特殊的号码,例如手机与小灵通的互通时,这里不能设置为001,而要设置成000,代表号码前没有“+”,否则无法接收。



    下面是GSM03.40协议号码类型的解释:


     0 0 0   Unknown

     0 0 1   International number

     0 1 0   National number

     0 1 1   Network specific number

     1 0 0   Subscriber number

     1 0 1   Alphanumeric(coded according to TS03.38 7-bit default alphabet)

     1 1 0   Abbreviated number

     1 1 1   Reserved for extension

     ll not interpret reserved values but will store them as received.

           Bits 3,2,1,0:Numbering-plan-identification(号码鉴别),0000—未知,0001—ISDN/电话号码(E.164/E.163),1111—留作扩展;一般默认为0001,表示电话号码类型的


    下面是GSM03.40号码鉴别的解释:

    Bits3 2 1 0

    0 0 0 0    Unknown

    0 0 0 1    ISDN/telephone numbering plan (E.164/E.163)

    0 0 1 1    Data numbering plan (X.121)

    0 1 0 0    Telex numbering plan

    1 0 0 0    National numbering plan

    1 0 0 1    Private numbering plan

    1 0 1 0    ERMES numbering plan (ETSI DE/PS 3 01-3)

    1 1 1 1    Reserved for extension

    All other values are reserved.

    <2>短信中心号码:683108200805F0

    一个字节内反转,8613800280500,如果长度为奇数则需要加“F”补齐。比如号码为:+8613505165495,去掉"+"后在末尾添加F变为:8613505165495F,再将手机号码的奇数位和偶数位的相交换为683105155694F5


    <3>FirstOctet字段:1119


         (1)11       包含TP-MTI(2bit),TP-RD(1bit),TP-VPF(2bit),TP-RP(1bit),TP-UDHI(1bit),TP-SRR(1bit)

    二进制表示形式:0 0 0 10 0 01

    TP-MTI:01 TP-Message-Type-Indicator(消息类型指示符)

         Bit1,0:00—读出(Deliver); 01—提交(Submit)

    Bit1,0:01指示为SMS-SUBMIT类型

    下面是GSM03.40的解释:

     bit1 bit0  Message type

     0     0    SMS-DELIVER (in the direction SC to MS)

     0     0    SMS-DELIVER REPORT (in the direction MS to SC)

     1     0    SMS-STATUS-REPORT (in the direction SC to MS)

     1     0    SMS-COMMAND (in the direction MS to SC)

     0     1    SMS-SUBMIT (in the direction MS to SC)

     0     1    SMS-SUBMIT-REPORT (in the direction SC to MS)

     1    1      ReservedTP-RD:0  TP-Reject-Duplicates(是否拒绝相同重复消息)

     

       Bit2:0—接受复制; 1—拒绝复制

     

     Bit2:0   指示短消息中心接收未转发的具有相同TP-MR的消息。

     Bit 2:

     0    Instruct the SC to accept an SMS-SUBMIT for an SM still held in the  SC which has the same TP-MR and the same TP-DA as a previously submitted SM from the same OA.

     1    Instruct the SC to reject an SMS-SUBMIT for an SM still held in the   SC which has the same TP-MR and the same TP-DA as the  previously submitted SM from the same OA. In this case an  appropriate TP-FCS value will be returned in the SMS-SUBMIT-REPORT.

    TP-VPF:10   TP-Validity-Period-Format(有效期格式)

     

    Bit4,3::00—不提供(Not present);01—预留;  10—整型(标准),指使用相对格式;11—提供8位字节的一半(Semi-Octet Represented)

    下面是GSM03.40的解释:

    bit4 bit3

    0   0      TP-VP field not present

    1   0      TP-VP field present and integer represented (relative)

    0   1      Reserved

    1   1      TP-VP field present and semi-octet represented (absolute)

    TP-SRR:0    TP-Status-Report-Request

       Bit5:    1:需要报告,0:不需要报告。

    Bit 5:

    0       A status report is not requested

    1       A status report is requested

    TP-UDHI:0   TP-User-Data-Header-Indicator(用户数据头标示)   Bit6:   1:含头信息  0:不含头信息,指示这是一个SMS消息,没有用户数据头,EMS(增强消息业务)消息需要设置。图片铃声这些都是包含头部信息的.文本不包含头部信息

    Bit  6

    0     The TP-UD field contains only the short message

    1     The beginning of the TP-UD field contains a Header in addition to the  short message

    TP-RP:0     TP-Reply-Path(回复路径)   Bit7:    1:设置回复路径,0:没有设置回复路径。

    下面是GSM03.40解释:

    Bit 7:

    0:  TP-Reply-Path parameter is not set in this SMS-SUBMIT/DELIVER

    1:  TP-Reply-Path parameter is set in this SMS-SUBMIT/DELIVER

    (2)消息参考值TP-MR (TP-Message-Reference):19如果使用"00" 值代表让电话自己设置消息参考值.

     

    <4> 对方号码字段:0D913105155694F5


        0D:目标地址数字个数,共13个十进制数(不包括91和‘F’)

        91:地址类型,同短信中心号码设置.

       3105155694F5:目标手机号码。

     

    <5>上层协议标识TP-PID(TP-Protocol-Identifier):00


         一般设置为00,表示普通GSM,点对点  <6> 数据编码设置TP-DCS(TP-Data-Coding-Scheme):08

        指示TP-UD的编码方式。08代表Unicode方式。参照GSM03.38协议:

    Bit 3,2

    00    Default alphabet

    01    8 bit

    10    UCS2 (16bit) [10]

    11    Reserved


    <7>有效期TP-VP(TP-Validity-Period):FF


        FF表示最大。

      <8> 用户数据长度TP-UDL(TP-User-Data-Length):4

          用户数据实际长度。注意不同编码下用户长度定义不同。

       <9>用户数据 :4F60597D     "你好"的Unicode编码

    你:0x4F60;好:0x597D


      2:手机接收的PDU串


     0891683108200505F0040D91683105155694F5000850208151754500044F60597D


     <1>短信中心地址字段

    0891683108200505F0,即是+8613800250500


     <2>FirstOctet :04        其二进制代码:00000100


        TP-MTI:00

        TP-MMS(TP-More-Message-to-Send):1 短信中心没有更多的消息发送

        TP-SRI: 0

        TP-UDHI:0

        TP-RP:  0

     <3>发送方号码 :

    0D91683105155694F5   即+8613505165495


     <4>协议标识: 

    00    TP-DCS 点对点


     <5>编码方式: 

    08    TP-DCS Unicode编码


       <6>短信中心时间  

        50208151754500 

         字节反转05/02/18 15:57:45 最后的00代表时区,这里为0

       <7>用户数据长度 

    :4

     <8>用户数据:4F60597D     

       中文“你好”的Unicode编码

    http://blog.csdn.net/linux_xiaomugua/article/details/7085374

    展开全文
  • 共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。 发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元...
    共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。

    发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可“压缩”成7个;8-bit编码通常用于发送数据消息,比如图片和铃声等;而UCS2编码用于发送Unicode字符。在这三种编码方式下,PDU串的用户信息(TP-UD)段最大容量(可以发送的短消息的最大字符数)分别是160、140和70。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。
    PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同。7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数。8-bit编码时,就是字节数。UCS2编码时,也是字节数,等于原始短消息的字符数的两倍。如果用户信息(TP-UD)中存在一个头(基本参数的TP-UDHI为1),在所有编码方式下,用户信息长度(TP-UDL)都等于头长度与编码后字节数之和。如果采用GSM 03.42所建议的压缩算法(TP-DCS的高3位为001),则该长度也是压缩编码后字节数或头长度与压缩编码后字节数之和。 

    PDU相当于一个数据包,它由构成消息(SMS)的信息组成。作为一种数据单元,它必须包含源/目的地址、保护(有效)时间、数据格式、协议类型和正文,正文长度可达140字节,它们都以十六进制表示。PDU结构根据短消息由移动终端发起或以移动终端为目的而不同。每条消息可以发送140个字节,由于本系统中最长的数据串没有超过140个字节,因此数据均可以用一条消息来发送。
    一般的PDU编码由A B C D E F G H I J K L M十三项组成。
    A:短信息中心地址长度,2位十六进制数(1字节)。
    B:短信息中心号码类型,2位十六进制数。
    C:短信息中心号码,B+C的长度将由A中的数据决定。
    D:文件头字节,2位十六进制数。 
    E:信息类型,2位十六进制数。
    F:被叫号码长度,2位十六进制数。
    G:被叫号码类型,2位十六进制数,取值同B。
    H:被叫号码,长度由F中的数据决定。
    I:协议标识,2位十六进制数。
    J:数据编码方案,2位十六进制数。
    K:有效期,2位十六进制数。
    L:用户数据长度,2位十六进制数。
    M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。
    PDU编码协议简单说明
    例1 发送:SMSC号码是+8613800250500,对方号码是13693092030,消息内容是“Hello!”。从手机发出的PDU串可以是
    08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0 00 00 00 06 C8 32 9B FD 0E 01
    对照规范,具体分析:
    分段 含义 说明
    08 SMSC地址信息的长度 共8个八位字节(包括91)
    91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
    68 31 08 20 05 05 F0 SMSC地址 8613800250500,补‘F’凑成偶数个
    11 基本参数(TP-MTI/VFP) 发送,TP-VP用相对格式
    00 消息基准值(TP-MR) 0
    0D 目标地址数字个数 共13个十进制数(不包括91和‘F’)
    91 目标地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
    68 31 96 03 29 30 F0 目标地址(TP-DA) 8613693092030,补‘F’凑成偶数个
    00 协议标识(TP-PID) 是普通GSM类型,点到点方式
    00 用户信息编码方式(TP-DCS) 7-bit编码
    00 有效期(TP-VP) 5分钟
    06 用户信息长度(TP-UDL) 实际长度6个字节
    C8 32 9B FD 0E 01 用户信息(TP-UD) “Hello!”
    例2 接收:SMSC号码是+8613800250500,对方号码是13693092030,消息内容是“你好!”。手机接收到的PDU串可以是
    08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 96 03 29 30 F0 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21
    对照规范,具体分析:
    分段 含义 说明
    08 地址信息的长度 个八位字节(包括91)
    91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
    68 31 08 20 05 05 F0 SMSC地址 8613800250500,补‘F’凑成偶数个
    84 基本参数(TP-MTI/MMS/RP) 接收,无更多消息,有回复地址
    0D 回复地址数字个数 共13个十进制数(不包括91和‘F’)
    91 回复地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
    68 31 96 03 29 30 F0 回复地址(TP-RA) 8613693092030,补‘F’凑成偶数个
    00 协议标识(TP-PID) 是普通GSM类型,点到点方式
    08 用户信息编码方式(TP-DCS) UCS2编码
    30 30 21 80 63 54 80 时间戳(TP-SCTS) 2003-3-12 08:36:45  +8时区
    06 用户信息长度(TP-UDL) 实际长度6个字节
    4F 60 59 7D 00 21 用户信息(TP-UD) “你好!”

    详细解析:
     0891683108200505F011190D91683105155694F50008FF10008FF044F60597D
       <1>短信中心地址字段:0891 
        08:Address-Lengt(地址长度),短信息中心地址长度为8个字节,是(91)+(683108200505F0)的长度,8个8位字节
     91地址类型:10010001       Bit7:1。始终为1       Bits 6,5,4:Type-of-Number(号码类型):001,代表Internation Number。也即是号码前加“+”。注意:对某些比较特殊的号码,例如手机与小灵通的互通时,这里不能设置为001,而要设置成000,代表号码前没有“+”,否则无法接收。
    下面是GSM03.40协议号码类型的解释:
     0 0 0   Unknown
     0 0 1   International number
     0 1 0   National number
     0 1 1   Network specific number
     1 0 0   Subscriber number
     1 0 1   Alphanumeric(coded according to TS03.38 7-bit default alphabet)
     1 1 0   Abbreviated number
     1 1 1   Reserved for extension
     ll not interpret reserved values but will store them as received.
           Bits 3,2,1,0:Numbering-plan-identification(号码鉴别),0000—未知,0001—ISDN/电话号码(E.164/E.163),1111—留作扩展;一般默认为0001,表示电话号码类型的。下面是GSM03.40号码鉴别的解释:
    Bits3 2 1 0
    0 0 0 0    Unknown
    0 0 0 1    ISDN/telephone numbering plan (E.164/E.163)
    0 0 1 1    Data numbering plan (X.121)
    0 1 0 0    Telex numbering plan
    1 0 0 0    National numbering plan
    1 0 0 1    Private numbering plan
    1 0 1 0    ERMES numbering plan (ETSI DE/PS 3 01-3)
    1 1 1 1    Reserved for extension
    All other values are reserved.
    <2>短信中心号码:683108200805F0 
    一个字节内反转,8613800280500,如果长度为奇数则需要加“F”补齐。比如号码为:+8613505165495,去掉"+"后在末尾添加F变为:8613505165495F,再将手机号码的奇数位和偶数位的相交换为683105155694F5
    <3>FirstOctet字段:1119
         (1)11       包含TP-MTI(2bit),TP-RD(1bit),TP-VPF(2bit),TP-RP(1bit),TP-UDHI(1bit),TP-SRR(1bit)
    二进制表示形式:0 0 0 10 0 01
    TP-MTI:01 TP-Message-Type-Indicator(消息类型指示符)

         Bit1,0:00—读出(Deliver); 01—提交(Submit)
    Bit1,0:01指示为SMS-SUBMIT类型 
    下面是GSM03.40的解释:
     bit1 bit0  Message type
     0     0    SMS-DELIVER (in the direction SC to MS)
     0     0    SMS-DELIVER REPORT (in the direction MS to SC)
     1     0    SMS-STATUS-REPORT (in the direction SC to MS)
     1     0    SMS-COMMAND (in the direction MS to SC)
     0     1    SMS-SUBMIT (in the direction MS to SC)
     0     1    SMS-SUBMIT-REPORT (in the direction SC to MS)
     1    1      ReservedTP-RD:0  TP-Reject-Duplicates(是否拒绝相同重复消息)

       Bit2:0—接受复制; 1—拒绝复制
     
     Bit2:0   指示短消息中心接收未转发的具有相同TP-MR的消息。
     Bit 2:
     0    Instruct the SC to accept an SMS-SUBMIT for an SM still held in the  SC which has the same TP-MR and the same TP-DA as a previously submitted SM from the same OA.
     1    Instruct the SC to reject an SMS-SUBMIT for an SM still held in the   SC which has the same TP-MR and the same TP-DA as the  previously submitted SM from the same OA. In this case an  appropriate TP-FCS value will be returned in the SMS-SUBMIT-REPORT.
    TP-VPF:10   TP-Validity-Period-Format(有效期格式)

    Bit4,3::00—不提供(Not present);01—预留;  10—整型(标准),指使用相对格式;11—提供8位字节的一半(Semi-Octet Represented) 
    下面是GSM03.40的解释:
    bit4 bit3
    0   0      TP-VP field not present
    1   0      TP-VP field present and integer represented (relative)
    0   1      Reserved
    1   1      TP-VP field present and semi-octet represented (absolute)
    TP-SRR:0    TP-Status-Report-Request
       Bit5:    1:需要报告,0:不需要报告。
    Bit 5:
    0       A status report is not requested
    1       A status report is requested
    TP-UDHI:0   TP-User-Data-Header-Indicator(用户数据头标示)   Bit6:   1:含头信息  0:不含头信息,指示这是一个SMS消息,没有用户数据头,EMS(增强消息业务)消息需要设置。图片铃声这些都是包含头部信息的.文本不包含头部信息
    Bit  6
    0     The TP-UD field contains only the short message
    1     The beginning of the TP-UD field contains a Header in addition to the  short message
    TP-RP:0     TP-Reply-Path(回复路径)   Bit7:    1:设置回复路径,0:没有设置回复路径。
    下面是GSM03.40解释:
    Bit 7:
    0:  TP-Reply-Path parameter is not set in this SMS-SUBMIT/DELIVER
    1:  TP-Reply-Path parameter is set in this SMS-SUBMIT/DELIVER
    (2)消息参考值TP-MR (TP-Message-Reference):19如果使用"00" 值代表让电话自己设置消息参考值.
     
      <4> 对方号码字段:0D913105155694F5 
        0D:目标地址数字个数,共13个十进制数(不包括91和‘F’)
        91:地址类型,同短信中心号码设置.
       3105155694F5:目标手机号码。

    <5>上层协议标识TP-PID(TP-Protocol-Identifier):00
         一般设置为00,表示普通GSM,点对点  <6> 数据编码设置TP-DCS(TP-Data-Coding-Scheme):08 
        指示TP-UD的编码方式。08代表Unicode方式。参照GSM03.38协议:
    Bit 3,2
    00    Default alphabet
    01    8 bit
    10    UCS2 (16bit) [10]
    11    Reserved
      <7>有效期TP-VP(TP-Validity-Period):FF
        FF表示最大。
      <8> 用户数据长度TP-UDL(TP-User-Data-Length):4
          用户数据实际长度。注意不同编码下用户长度定义不同。
       <9>用户数据 :4F60597D     "你好"的Unicode编码
    你:0x4F60;好:0x597D
      2:手机接收的PDU串
     0891683108200505F0040D91683105155694F5000850208151754500044F60597D
       <1>短信中心地址字段:0891683108200505F0,即是+8613800250500
     <2>FirstOctet :04        其二进制代码:00000100
        TP-MTI:00
        TP-MMS(TP-More-Message-to-Send):1 短信中心没有更多的消息发送
        TP-SRI: 0
        TP-UDHI:0
        TP-RP:  0
     <3>发送方号码 :0D91683105155694F5   即+8613505165495
     <4>协议标识: 00    TP-DCS 点对点
     <5>编码方式: 08    TP-DCS Unicode编码
       <6>短信中心时间    50208151754500  
         字节反转05/02/18 15:57:45 最后的00代表时区,这里为0
       <7>用户数据长度 :4 
     <8>用户数据:4F60597D      
       中文“你好”的Unicode编码

    来源:http://www.cppblog.com/zhangyq/archive/2009/07/04/89245.html

    展开全文
  • 在线PDU格式编码/解码

    2017-03-14 22:15:08
    http://www.multisilicon.com/blog/a22201774~/pdu.htm
    http://www.multisilicon.com/blog/a22201774~/pdu.htm
    
    展开全文
  • 超级好用的短信编解码工具,可以解析各种类型的使用 PDU 编码的短信,也可以根据给定的信息生成 PDU 编码串,非常方便短信程序开发
  • PDU短信编码解码

    2018-08-17 17:08:21
    PDU短信编解码格式说明 共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。   PDU模式不仅支持中文短信,也能...
  • Retrieval of Multimedia Message A MMS Client SHALL request the retrieval of an MM by sending a WSP/...containing a URI that indicates the location of the MM to be ...
  • PDU的编码和解码在网上找了很久。都没有合适的python内容,后来没办法自己结合C#,Python的部分代码逻辑自行编写,整体的代码其实不难,主要是需要符合PDU的编码规则,放上来方便自己以后查看也希望能帮到别人
  • 1,消息编码与解码 1),用C实现7-bit编码和解码的算法 2),用C实现UCS2编码和解码的算法 2,消息的发送(PDU编解码) 1),发送短消息 2),读取短消息 3),删除短消息 3,串口读写短信
  • 软件介绍: SMS PDU TOOLS V1.0支持中国移动和中国联通短消息,只需输入手机号码和短消息内容,即可生成相应的PDU数据包,并显示TPDU和PDU长度。非常方便短信 SMS 开发时使用。
  • 可以应用单片机,手机,PC通信软件开发使用,用于TD-SCDMA, GSM, 模块短信开发使用,支持编码和解码,字符集包含bit7,bit8,UNICODE格式
  • PDU转换工具绿色版

    2020-07-14 23:31:19
    很好用的短信PDU码转换工具,只要填入对方手机号码,中心号码,一键生成PDU码,GSM或手机开发的好工具。
  • CDMA SMS pdu解码

    2011-08-04 20:58:07
    收到两条短信,现在用AT把它们读取出来。 at+cmgr=5 +CMGR:5,”REC UNREAD”,”15338896020″,”UNKNOWN NUMBER”,”N/A”,176 “0000021002020702c54ce225a8a80601c0089d00031
  • 短信PDU编码解码(转)

    2019-07-17 04:02:02
    有两种方式,一有短信网关... 一共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。其中又分7bit-160,8bit-140,16...
  • /* ---------------------------------------------------------- 文件名称:GSMALPHABET.cs 作者:秦建辉 MSN:splashcn@msn.com QQ:36748897 ... 开发环境: Visual Studio V2010 .NET Frame
  • PDU转换工具

    2020-06-05 00:32:15
    PDU转换工具
  • PDU短信解码

    2020-06-04 23:30:18
    GSM短信开发,收取中文短信时,是一大堆编码,这个工具能帮你翻译出来
  • PDU编解码已经完成,现在奉上的是设备类简单实现,尚不完整,仅供参考。 设备类目前可以完成发送、接收、读取和删除短信,需要其他功能可以自行添加。谢谢支持,欢迎提出宝贵意见。 本程序使用用前两篇实现PDU编...
1 2 3 4 5 ... 20
收藏数 1,239
精华内容 495
热门标签
关键字:

pdu编解码