GSM短信的简单解析

来源:互联网 发布:手机生成器软件 编辑:程序博客网 时间:2024/06/10 08:51

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格式的数据。因此长度在这里是一个10个7-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")使能闪烁。这样的消息最长就是69个unicode字符。    

原创粉丝点击