- 浏览: 138606 次
- 性别:
文章分类
最新评论
接收短信有两种编码格式:
1.中英文混合的为unicode
2.英文的为7BIT编码。
以7BIT编码为例子,如接收到PDU码为
0891683108502905F0040D91685159296028F30000701021216182230947759B4C0F93E967
08 //短消息中心长度
91 //短消息中心有国家编码 没有为81
683108502905F0//短信中心号码
685159296028F3//发送方手机号码
0000//编码格式=7BTT格式(0008为unicode)
70102121618223//时间
09//消息长度
47759B4C0F93E967//短信内容,7BIT解码为:Gjmdtadtg
附DELPHI中对unicode和7BIT解码函数
//unicode解码
function U2GB(Str: string): string;
var s: pchar;
i: integer;
tmp: string;
begin
tmp := '';
result := '';
s := PChar(str);
i := 0;
while i < length(s) do
begin
tmp := tmp + chr(HexToInt(s[i + 2] + s[i + 3])) + chr(HexToInt(s + s[i + 1]));//unicode转换时,高低位互换
inc(i, 4);
end;
result := widechartostring(pWideChar(tmp + #0#0#0#0));
end;
//7BIT短信内容解码
function TFrm_DtuCall.gsmDecode7bit(pSrc:string; nSrcLength:Integer):string;
//pSrc内容
//nSrcLength内容长度
var
nSrc:Integer; // 源字符串的计数值
nByte:Integer; // 当前正在处理的组内字节的序号,范围是0-6
nLeft:Byte; // 上一字节残余的数据
tmpChar:Byte;
pDst:string;
begin
// 计数值初始化
nSrc := 1;
// 组内字节序号和残余数据初始化
nByte := 0;
nLeft := 0;
pdst := '';
// 将源数据每7个字节分为一组,解压缩成8个字节
// 循环该处理过程,直至源数据被处理完
// 如果分组不到7字节,也能正确处理
while (nSrc < nSrcLength) do
begin
tmpChar := byte(StrToInt('$' + pSrc[nsrc] + pSrc[nsrc + 1]));
// 将源字节右边部分与残余数据相加,去掉最高位,得到一个目标解码字节
pDst := pDst + Char(((tmpchar shl nByte) or nLeft) and $7F);
// 将该字节剩下的左边部分,作为残余数据保存起来
nLeft := tmpChar shr (7 - nByte);
// 修改字节计数值
Inc(nByte);
// 到了一组的最后一个字节
if (nByte = 7) then
begin
// 额外得到一个目标解码字节
pdst := pDst + Char(nLeft);
// 组内字节序号和残余数据初始化
nByte := 0;
nLeft := 0;
end;
// 修改源串的指针和计数值
nSrc := nSrc + 2;
end;
// 返回目标串长度
result := pdst;
end;
发表评论
-
Delphi中的接口和抽象类
2010-12-06 16:30 607接口:Interface Delphi中接口的关键字 ... -
Delphi中票据凭证的精确打印
2011-04-06 15:13 1015一、概述 在银行,税务,邮政等行业的实际工作中,经常涉及到在 ... -
Delphi编程中流的应用
2011-05-25 11:19 828一、流的概念 流简单说是建立在面向对象基础上的一种 ... -
Pascal与C的指针
2011-05-26 13:49 1059大家都认为,C语言 ... -
Delphi编程的一些资料1
2011-06-16 10:40 764手机 SMS PDU 格式参考手册 1.相关的GSM AT指 ... -
Delphi编程的一些资料2
2011-06-16 10:43 746算法步骤: 一、地址 ... -
Delphi编程的一些资料3
2011-06-16 10:46 816一、一般命令 AT+CGMI ... -
Delphi编程的一些资料4
2011-06-16 10:48 818七、追加服务命令 AT+CCFC 呼叫继续 ... -
Delphi编程的一些资料5
2011-06-16 10:53 801十三、SIM卡工具箱命令 AT+STSF ... -
通过注册表获取当前所有串口号
2011-06-16 15:49 2737usesWindows, Messages, SysUtils ... -
Delphi 分隔GSMModem接收到的短信字符串
2011-06-20 10:37 1118Delphi 分隔GSMModem接收到的短信字符串 ... -
Delphi流的操作
2011-06-22 14:34 835Delphi流的操作 一、流的概念 流简单说是建立在面 ... -
Delphi、PChar和Char数组的比较
2011-06-22 16:14 1306Delphi、PChar和Char数组的 ... -
Delphi 判断数据库表是否存在
2011-06-26 12:54 1121//根据表名和一个数据库连接判断表是否存在 function ... -
Delphi ListView基本用法大全
2011-08-22 17:27 1406Delphi ListView基本用法大全 //增加项或列( ... -
Delphi2010 无效的类别字符串, ProgID: "ADOX.Catalog"问题
2012-07-18 09:56 2138程序中用ADOX创建的Access数据库,一直运行正常,其 ... -
Delphi 禁用TEdit右键菜单及复制粘贴
2012-07-19 11:24 1400Delphi 禁用TEdit右键菜单及复制粘贴简的单方法 ... -
Delphi TStrings取得Ini文件键值对
2012-07-20 07:37 1361Delphi TStrings取得Ini文件键值对的简单 ... -
Delphi 压缩Access数据库
2012-07-21 12:21 1677由于Access数据库在反复使用过程中会自动增大,Del ...
相关推荐
1、短信传输分三种模式:Block(淘汰)、Text(纯文本模式,用处受限,不能实现中文)、PDU(手机默认的短信模式,可以使用任何字符集) 2、PDU编码主要包括两个主要的部分:一是PDU串的整体数据格式,分别因为发送...
PDU模式下的短信由多个部分组成,包括: 1. **Service Center Address (SCA)**:服务中心地址,通常是一个手机号码,用于指示短信应该发送到哪个SMSC。 2. **Destination Address (DA)**:目的地址,即接收短信的...
在使用"短信UCS编码或解码工具"时,开发人员可以方便地处理不同编码格式之间的转换,比如从用户输入的文本(可能是UTF-8编码)转换为适合短信传输的7位编码,或者从接收到的PDU格式短信解码成可读的文本。...
GSM Modem 短信的编码和解码 在收发短信方面,按时间产生先后,共产生了三种模式:Block Mode、基于AT指令的Text Mode、基于AT指令的PDU Modem, Text Mode比较简单,多款诺基亚手机均支持该模式。西门子的手机大多只...
2. **短信PDU模式**:在短信发送过程中,用户可以选择文本模式或者PDU模式。文本模式适用于英文和其他简单的7位字符,而PDU模式则用于处理包含16位Unicode字符(如中文)的复杂情况。PDU模式下,用户需手动输入或...
短信PDU模式是GSM 03.40标准定义的,主要用于SMSC(Short Message Service Center)与手机之间的通信。它包含控制信息和用户数据两部分,其中控制信息描述短信的特性,如短信类型、目的地址、编码方式等;用户数据则...
PDU模式包含了短信的地址信息、控制信息以及消息文本的编码。 3. **PDU编解码**:编码过程是将ASCII文本转换为PDU格式,以便于在GSM网络中传输。解码则是将接收到的PDU数据还原成可读的文本消息。这个过程中涉及到7...
在GSM通信系统中,短信通常以PDU模式传输,这是一种二进制编码方式,包含了短信的各种控制信息和文本内容。对于非专业人士来说,这些编码看起来就像一堆无法理解的数据。 描述中提到的“GSM短信开发,收取中文短信...
- 解码PDU需要理解每个字段的意义,例如,提取出电话号码,确定短信类型(提交、接收、报告),并把7位或16位编码的文本恢复为可读的字符。 5. **C# 2005中的实现**: - 使用C# 2005,开发者可以构建自定义类库来...
- "PDU Encoder (New Windows Form)"可能是一个Windows应用程序,提供用户界面来输入短信内容并生成相应的PDU编码,或者输入PDU字符串并解码成可读的文本形式。此类应用通常会包含以下几个关键功能: - 输入界面:...
PDU模式是短信的一种原始表示形式,它允许数据在移动设备之间传输。在这里,我们将深入探讨PDU短信的解码和编码过程及其相关知识点。 首先,我们要理解PDU短信的基本结构。PDU短信由多个部分组成,包括SMS-SUBMIT、...
这部分代码会与硬件接口进行交互,发送AT命令(如AT+CMGF切换文本/PDU模式,AT+CMGS发送短信,AT+CMGL读取存储的短信等),并处理来自短信猫的响应。 对于初学者或开发者来说,此源码提供了一个了解和学习如何使用...
在PDU模式下,短信被编码为二进制字符串,包括地址信息、控制信息和消息负载。编码过程涉及到多个步骤,包括编码短信中心号码、电话号码、短信类型以及短信的7位或8位GSM 7编码的数据。 GSM编码标准,全称为Global ...
- 解码短信内容,这通常涉及到将16进制串转换为7位或8位编码的文本,然后解码成可读的字符。 - 处理短信长度,因为PDU中的长度值可能包含了编码指示符。 5. **编码过程**: - 首先,将文本转换为其对应的7位或8...
"PDU发送接收编解码.zip"这个压缩包文件包含了关于GSM文本编码以及PDU(Protocol Data Unit)模式下短信发送和接收的相关内容。下面将详细介绍这些知识点。 首先,GSM_8转7bit的过程,这是为了将标准的8位ASCII字符...
PDU模式包含了短信的全部信息,如发送者和接收者的电话号码、短信类型、编码方式以及实际的文本内容。通过这种方式,短信可以在各种不同的手机和网络之间进行交换,而无需关心具体的硬件或软件差异。 2. **PDU编码...
TPDU包含多个字段,如目的地址、源地址、消息类型、编码类型等,以及编码后的短信文本。 6. **解码过程**:在接收端,接收到的TPDU数据需要被解码,恢复出原始的文本消息。这包括解析TPDU结构,识别编码类型,然后...
在这个类中,会调用`PduPack.java`中的方法将待发送的文本消息转化为PDU,然后通过串口将PDU数据发送给短信猫,短信猫再将其发送到指定的手机号码。 在实际应用中,开发者还需要处理各种异常情况,如串口通信失败、...
本文将详细讲解基于Linux环境下的C++实现的SMS中文短信解码编码,以及GPRS通信类的原理和应用。 首先,"SMS中文短信解码编码"是指在SMS通信中处理中文字符的过程。由于SMS协议最初设计时仅支持7位ASCII字符,而中文...