中文短信发送说明及数据解析
- 格式:docx
- 大小:36.81 KB
- 文档页数:13
短信格式(sms)以及编码总结第一篇:短信格式(sms)以及编码总结短信格式(sms)以及编码总结一、短信猫操作分为三种模式: Block、Pdu 和 Text1、Block 模式基本已经被 Pdu 模式取代,没有具体研究。
2、Text 模式比较简单,但是支持的设备不是很全,而且不能实现中文。
AT + CGMF=1 AT +CGMS= “ *** ” ,129 >Hello World!3、Pdu 模式Pdu 编码主要包括两个主要的部分,一是 pdu 串的整体数据格式,分别因为发送信息串和接收信息串而有区别,二是pdu 中文本部分的编码,分别因为字符集而不同。
我们也可以这样来理解这个 pdu 编码的格式,sms 相当于一个协议栈,最简单的协议栈:根据 gsm03.40 规范,sms 协议包括以下几层:1、SM-AL :应用层。
这个部分就是数据部分。
2、SM-TL :传输层。
我们可以清楚的看到这里描述了主要的短信内容,包括发送号码,接收号码,信息类型,编码,数据报长度等等,这也是我们编程主要要面对的问题。
3、SM-RL :中继层。
这个指的是短信在网关之间中继需要的协议。
4、SM-LL:链路层。
从上述描述中我们可以清楚的看到,我们编程主要集中于传输层。
二、短信传送有三种编码: 7 位,8 位,UniCode1、英文 7 位编码这是 gsm 的默认编码方式由于这样的移位,我们可以看到我们能发的最多英文字符等于:140*8/7 = 160。
2、数据 8 位编码8-bit 编码通常用于发送数据消息,比如图片和铃声等;3、中文pdu 编码发送中文时,必须用UCS2(utf-16)进行编码,最多可以发 140/2 = 70 个汉字。
UniCode 编码转换也比较简单,以中文为例,一个中文字符是两个字节,直接对高位字节和低位字节进行十六进制转换就可以了。
如“欢迎”,UniCode 编码是6B22 8FCE,这同时也就是转换的结果,如果发送的串中有英文字符,那么在前面补全 00,以保证一个字符对应两个字节。
一、报告背景随着科技的飞速发展,短信已成为人们日常生活中不可或缺的通讯工具。
为进一步了解我单位员工使用短信的情况,提高工作效率,优化通讯方式,特对此进行专项调查与分析。
二、调查方法本次调查采用问卷调查、访谈和数据分析等方法,对单位全体员工进行了一次全面的短信使用情况调查。
三、调查结果1. 短信使用频率根据调查结果显示,我单位员工每天平均发送短信量为50条,接收短信量为80条。
其中,工作相关的短信占比为60%,生活娱乐类短信占比为40%。
2. 短信内容分类(1)工作类短信:主要包括工作通知、会议安排、项目进度报告等,占比为30%。
(2)生活娱乐类短信:包括朋友聚会、节日祝福、休闲八卦等,占比为20%。
(3)学习交流类短信:涉及培训、学术研讨、行业动态等,占比为15%。
(4)其他类短信:如求职、求职推荐、公益宣传等,占比为15%。
3. 短信发送对象(1)同事:占比为50%,主要用于工作沟通、信息共享。
(2)上级领导:占比为20%,主要用于汇报工作、请示问题。
(3)朋友、家人:占比为30%,主要用于生活娱乐、情感交流。
(4)陌生人:占比为10%,主要用于求职、公益宣传等。
4. 短信使用时间(1)工作时间:占比为40%,主要用于工作沟通。
(2)下班时间:占比为30%,主要用于生活娱乐。
(3)周末及节假日:占比为30%,主要用于学习交流、朋友聚会。
四、问题分析1. 短信内容单一:部分员工在短信内容上过于单一,缺乏创新和个性化。
2. 信息传递效率低:由于短信字数限制,部分重要信息无法在一条短信中完整传达。
3. 安全隐患:部分员工在短信中透露个人信息,存在安全隐患。
五、改进措施1. 丰富短信内容:鼓励员工在短信内容上创新,提高短信的趣味性和实用性。
2. 优化信息传递方式:针对重要信息,可采取电话、邮件等方式进行补充说明,提高信息传递效率。
3. 加强信息安全教育:提高员工信息安全意识,避免在短信中透露个人信息。
SMS-短信PDU解析PDU-modeSMS with the SMS PDU-mode编者序版本变动历史1、绪论2、缩写词3、设置指令3.1 效劳中心号码(+CSCA)3.2 选择消息效劳(+CSMS)3.3 选择消息格式(+CMGF)4、SMS文本模式5、SMS PDU模式5.1 发送方SMS-Submit (Mobile Originated) 5.1.1 向SIM卡存储区写入一条SMS(+CMGW)5.1.2 发送SIM卡存储区中的一条SMS(+CMSS)5.1.3 直接从终端设置发送SMS(+CMGS)5.2 接收方SMS-DELIVER (Mobile Terminated)5.2.1 列取消息(+CMGL)5.2.2 读取消息(+CMGR)5.2.3 删除消息(+CMGD)6、SMS PDU 根本组成元素6.1 发送方PDU格式SMS-SUBMIT-PDU (Mobile Originated)6.2 接受方PDU格式SMS-DELIVER-PDU (Mobile Terminated)6.3 SCA 短消息效劳中心地址格式6.4 PDU Type〔第一个八位位组〕6.5 MR 信息参考(Message Reference)6.6 DA/OA 接收方地址与发送方地址6.7 PID 协议标识(Protocol-Identifier)6.8 DCS 数据编码方案(DataCoding-Scheme) 6.9 VP 信息有效期〔Validity Period〕6.10 SCTS 效劳中心时间戳〔Service Center TimeStamp〕6.11 UDL 用户数据长度(User-Data-Length (Amount of Characters))7、常用AT 指令8、PDU操作实例8.1 准备工作8.2 连接8.3 发送PDU SMS9、SMS 编码方案与编程实现附Message service errorerror codes:默认的字符表1、绪论SMS提供了在GSM移动站台(MS)与一个短消息实体(SME)之间通过效劳中心(SC)传送短消息的方法。
短信服务用量说明短信服务已经成为现代生活中不可或缺的一部分,它为人们提供了便捷的通信手段。
本文将对短信服务用量进行详细说明,帮助大家更好地了解和使用短信服务。
一、短信服务概述短信服务,又称短信发送服务,是指通过运营商的网络将短消息发送到目标手机号码的一种通信服务。
根据发送方式的不同,短信服务可分为基础短信服务和增值短信服务。
二、短信服务分类及用途1.基础短信服务:主要包括运营商之间的短信互发和运营商向用户发送的短信。
基础短信服务通常用于日常通信、通知类信息发送等。
2.增值短信服务:包括短信发送平台、短信接口服务等。
增值短信服务可用于企业营销、会员关怀、紧急通知等场景。
三、短信服务用量计算方法短信服务用量是指发送短信的数量。
计算方法如下:短信服务用量= 发送成功短信条数+ 发送失败短信条数四、影响短信服务用量的因素1.发送频率:发送短信的频率越高,所需的短信服务用量越大。
2.发送对象:发送给不同运营商的手机号码,可能会有不同的短信发送成功率,从而影响短信服务用量。
3.发送内容:短信内容的长短会影响短信的发送条数。
例如,一条较长的短信可能需要分成多条发送,从而增加短信服务用量。
五、节省短信服务用量的技巧1.合理选择短信服务商:选择正规、信誉好的短信服务商,以降低发送失败的风险。
2.优化短信内容:尽量使用简洁明了的文字,避免过长的内容导致短信分割。
3.控制发送频率:避免短时间内频繁发送短信,以免影响发送成功率。
4.了解目标用户:了解接收短信的手机运营商,有针对性地选择合适的短信通道。
六、短信服务提供商的选择选择短信服务提供商时,应关注以下几个方面:1.信誉度:选择有良好信誉度的短信服务商,以确保短信发送的稳定性和安全性。
2.服务质量:了解短信服务提供商的客服、技术支持等服务质量,以确保在使用过程中遇到问题时能得到及时解决。
3.价格:比较不同短信服务提供商的价格,选择性价比较高的。
4.发送速度:了解短信服务提供商的发送速度,以满足紧急通知等需求。
手机短信编码与长度限制手机短信收发有三种方式:Block方式、Text方式和PDU方式,前两种在国内很少使用,PDU格式则普遍支持。
内容总长度140个字节(1120位),支持采用三种编码方式:7-bit、8-bit和UCS2编码,7-bit编码——用于发送普通的ASCII字符,ASCII码表最大到0x7X,最高位为0,总7-bit,实际编码时则可把8-bit的最高位比特使用起来,所以可支持1120/7=160个字符;8-bit编码——用于发送数据消息,比如图片和铃声、二进制数据等,此类数据无法使用7-bit编码,因为那样会丢掉一位,也不能用下面UCS2编码,因为不符合UNICODE编码检查(范围)。
8-bit编码最多支持140个字节数据。
UCS2编码——用于发送Unicode字符,每个中文(韩文、日文),占用2字节,只要短信里包含这些多字节编码文字,那么即使还有英文,英文也需要安装UCS2编码,也占用2字节,所以,最多支持70个中文字(或中英混合短信)总之,只要含有中文(日文、韩文等),就需要使用多字节编码方式,若编码采用UCS2格式,1中文字占2字节,则可容纳70个中文字,如果是纯英文,将默认使用7bit编码方式(注意是7bit编码),则可容纳(140*8)/7=160个字符。
超过此长度的短信,目前的智能机平台都可以本地实现自动切分成多个短信后再逐一进行发送,长短信因为要涉及到协议头。
如果想通过短信发送非文本信息的数据,建议通过数据端口方式,而不是文本,否则文本短信的默认处理规则(7bit格式)可能会导致数据不完整或丢失。
PDU编码由以下部分组成(顺序连接):1.短信息中心地址长度——1字节。
2.短信息中心号码类型——1字节。
3.短信息中心号码——A设置的长度-B的长度。
4.文件头字节——1字节。
5.信息类型——1字节。
6.被叫号码长度——1字节。
7.被叫号码类型——1字节,取值同B。
8.被叫号码——长度由F中的数据决定。
1、以pdu方式发送中文短信AT+CMGF=0 //以pdu模式发短信AT+CMGS=19 //短信长度15+4,15是号码长度,4是短信字节数。
如果要发给手机的话,那么这个短信长度就是15,是固定的,后面只要加上短信字节数就可以了。
AT+CMGS这个值可以是19,也可以是20。
都能发的出短信,比计算出来的数字大1是可以的,但小1或大2是不可以的。
0891683108501705F011000D91683107157624F0000000044E2D6587 //向我的手机发送“中文”俩字下面剖析这个数字串:0891 683108501705F0 1100 0D 91 683110937414F2 0 00000 044E2D6587数字串被分为九个部分:0891是第一个部分(1)08—短信息中心地址长度。
指(91)+(683108701305F0)的长度除以2。
(2)91—短信息中心号码类型。
91是TON/NPI遵守International/E.164标准,指在号码前需加…+‟号;此外还有其它数值,但91最常用。
一般都用91。
683108501705F0 是第二个部分:你用哪个号码发短信,它就是哪个号码的短信息中心号码:例如我用的手机号码是139****0374,它是浙江的号码,短信息中心号为:+86138****1500。
去掉+号,所剩的部分位数为奇数,所以在末尾补F,变为8613800571500F,然后将每两位互换得到:683108501705F0。
第二步完成了。
1100是第三部分:11文件头字节。
一般为固定数值,就是11。
00—信息类型(TP-Message-Reference),这个一般也是固定值。
0D是第三部分:它是被叫号码的长度。
手机号码前面加上86一般都是13位。
例如:8613705167420。
如果不加86就是0B。
如果要写成0D的话,那么后面的接收号码要写成这个样子的:683107157624F0。
GSM03.40有关SMS SUBMIT及SMS DELIVER详细中文说明目录一SMS-SUMMIT与SMS—DELIVER的基本关系 (2)二GSM03.40中SMS-SUBMIT和SMS—DELIVER的格式及参数说明 (2)2.1 短信提交SMS-SUBMIT的TPDU构成 (2)2.2 短信接收SMS-DELIVER的TPDU构成 (3)2.3 参数详细说明 (3)①短信类型指示 (3)②有效期格式 (3)③短信引用 (3)④目的地址 (4)⑤源地址 (4)⑥协议标识符 (4)⑦数据编码模式 (5)⑧设置数据有效周期 (6)⑨服务中心时间戳 (7)⑩用户数据长度 (7)字节位说明:一SMS-SUMMIT与SMS—DELIVER的基本关系二GSM03.40中SMS-SUBMIT和SMS—DELIVER的格式及参数说明2.1 短信提交SMS-SUBMIT的TPDU构成表12.2 短信接收SMS-DELIVER的TPDU构成2.3 参数详细说明①短信类型指示表3②有效期格式③短信引用短信参考由MS设置,在每次发送短信之前短信引用的值是最后一次发送的短信引用值(从短信提交报告中短信引用得到)加一。
④目的地址对于SC来说,对于保留和其不支持的地址类型,SC将拒绝接收信息⑤源地址MS对于未知和保留的地址类型,直接保存短信。
⑥协议标识符SMS-SUBMIT中,当bit7bit6bit5=001时,说明SMS是远程设备,由bit4-bit3来说明远程设备类型,SC会将短信转换成适合设备类型的形式,如果目的网络是ISDN,SC 必须选择合适的服务指示器,用来连接到对应的设备类型。
SMS-DElIVER中,当bit7bit6bit5=001时,说明SMS是远程设备,由bit4-bit0来说明远程设备类型;bit7bit6bit5=000时,bit4-bit0用来确定SME和MS之间短信应用层间的协议。
对于简单的MS-SC的短信传送,协议标识符的值为零。
106、集信通、0061、0085开头短信说明讲解关于短信市场上几条主要的通道做一个说明,大家可以参考下10657、10655、10659:这三个号码是近两年来的主流短信通道,质量也可以说是最优质的了,从2013年打击垃圾短信以来,受的很大的影响,运营商关掉不少端口10657:中国移动的短信网关,只可以发送移动的号码10655:中国联通的短信网关,只可以发送联通的号码10659:中国电信的短信网关,只可以发送电信的号码10690:10690的通道是由工信部审批,然后在运营商落地而成,可以三网显示统一一个号码,不过现在监管相当严,内容稍有营销性质就会被处罚集信通:我们平时所说的集信通是指浙江联通的一个业务,俗称联通跨网,可以给三网号码发送,显示号码为联通手机号,优质相对差于106的网关,但是监管也会稍微松一些,不过现在也严了,官方称有一条投诉罚款6000元,这个条件摆在这里,也让很多短信公司望而却步021、0755、0793、0532等:这些通道主要是由中国电信开出,质量也差于106网关,2012年垃圾短信曝光之后这些通道疯狂过一段时间,不过由于严格了,加上各种限制及质量问题,现在几乎销声匿迹了0061、0085:我目前见过这两条通道,属于国外的卡发,0061是澳大利亚的短信网关,0085是美国的,移动号码接收到短信显示0061或者0085,联通电信收到显示+61XXXXXXX、+85XXXXXXX,就像别人给你发短信的时候,有可能显示+86XXXXXXX。
这是新兴起的通道,不过由于是国际网关,成本很高,0061在1毛5以上,0085也在3毛以上。
苹果imessage:这个其实也算不上一种短信网关,这是苹果手机里的一个功能,本人没有苹果手机,对这个没多少研究,只知道用这个可以给苹果手机发送消息,而且监管比较松,但随着越来越多的投诉声,工信部也在想方设法整治这个了总得来说,目前短信市场上就这么多通道,好坏优劣大家都可以看出,现在大环境不好的情况下,只有行业短信比较好发一点,营销的是越来越难。
短信服务范本尊敬的客户,感谢您选择使用我们的短信服务。
我们为您提供以下短信服务范本,希望能满足您的需求。
范本一:约会提醒短信亲爱的[姓名],这是一条提醒短信,提醒您今晚有一个重要的约会。
请您准时出席,并确保您的准备工作已完成。
祝您度过愉快的时光!【发送人】范本二:订单确认短信尊敬的[姓名],感谢您对我们的支持与信任!您的订单已确认,订单号为[订单号]。
请您等待我们的发货通知。
如有任何疑问,请联系客服。
祝您购物愉快!【发送人】范本三:生日祝福短信亲爱的[姓名],祝您生日快乐!愿您在新的一岁里,健康、快乐、幸福!希望我们的祝福能为您带来温暖与喜悦。
【发送人】范本四:会议通知短信尊敬的[姓名],这是一条会议通知短信,提醒您明天上午九点在[地点]参加[会议主题]的会议。
请您准时到达。
如有任何问题,请联系[负责人姓名]。
祝您会议顺利!【发送人】范本五:支付提醒短信尊敬的[姓名],这是一条支付提醒短信,提醒您尚有未支付的订单。
为避免延迟发货,请尽快完成支付。
如已支付,请忽略此消息。
感谢您的合作!【发送人】范本六:运动挑战短信亲爱的[姓名],我们发起了一个新的运动挑战!现邀请您加入我们的团队,一起完成每日运动目标。
让我们共同保持健康,迎接更好的明天!【发送人】范本七:客户满意度调查短信尊敬的客户,感谢您使用我们的服务!为了提供更好的服务质量,我们诚邀您参与我们的满意度调查。
请点击以下链接进行问卷调查:[无网址链接,具体指引客户如何参与调查]。
感谢您的支持与反馈!【发送人】范本八:天气预报短信尊敬的[姓名],这是一条天气预报短信,提醒您今天的天气状况:[天气情况]。
请您合理安排行程,并注意保暖/防晒。
祝您度过美好的一天!【发送人】以上是我们为您提供的短信服务范本。
如果您有任何其他需求或疑问,请随时联系我们的客服团队。
祝愿您使用愉快!谢谢,短信服务团队。
短信格式范文
《短信格式范文》
亲爱的朋友,
你好!希望你一切都好。
最近我收到你的短信,很高兴听到你的消息。
我想和你分享一些关于短信格式的范文。
首先,短信格式应该简洁明了。
在发送短信的时候,我们需要注意字数限制,所以要尽量减少冗长的描述,把最主要的信息放在前面。
这样可以让接收者更容易理解。
其次,短信格式要注意礼貌和尊重。
无论是与朋友、家人还是同事之间的交流,礼貌是非常重要的。
在短信中,我们可以用一些礼貌用语,比如“您好”、“谢谢”、“请”等,这样可以显示我们的尊重和友好。
最后,签名也是短信格式的一部分。
在短信结尾,我们可以用一些常见的签名,比如“祝好”、“期待回复”等。
这样可以给收信人留下一个良好的印象。
希望这些范文对你有所帮助。
如果有任何问题或者需要进一步的指导,请随时与我联系。
祝好,
[你的名字]。
短信格式解析2022年04月26日星期一 16:17最近重整一个兄弟的代码,把短信重新分析了一次。
以防以后忘了如今就记下来。
网上有些格式解析下面这个E文的比拟专业,不过看了怪费力的。
以下是我重整理的。
1.短信格式的编码主要是有两种一个是text格式的,明文不用解码一看就懂,一个是PDU格式的,国内的都是的PDU格式的。
以下分析的都是PDU格式数据包。
2.PDU格式的数据包,发送的数据包和接收的数据包数据段是不一样的。
一样是一,他们都是把数据变成字符0123456789ABCDEF。
二,都是2个字符算一个数,除了电码号码其的数都是16进制的。
+CMTI: "MT",37再发送指令读取短信AT+CMGR=37串口AT回复:中间蓝色的就是接收的数据包了。
3.发送PDU格式消息首先发送AT指令AT+CMGS=38串口AT回复:>发送以下ASCII字符串就是PDU格式的短信数据包740065007300743002再发送0x1a(Ctrl-z的ASCII码,这个也可以和上面的数据写在一起发送)串口AT回复:+CMGS: 221OK注意:1.在写发送指令的时候38就是PDU包除了SMSC段之后的长度是38*2=76个ASCII字符AT+CMGS=38//表示后面有76个ASCII字符2.这里的38就是不包含前面的上表中黄色的00这两个字符。
3.超长短信本来超长短信是有规定格式的,不过在中国短信延时比拟严重,显得没有什么意义了。
超长短信的也是符合上面的格式的,只是要短信的内容段加了固定的头。
表示这是条超长短信.("050003") // 6-bit codec header("060804") // 7-bit codec header以下是的代码是直接将超长短信分为两条短信,没有做结合。
在西门子MC75i上测试过/************************************************* 文件名称:SMS.cpp* 摘要:用于短信数据的编解码* 当前版本:v1.0* 作者:胡丰凯* 创立日期:2022年4月21日* 修改纪录:**************************************************///---------------------------------------------------------------------------//--Include file#include "sms.h"#include "Debug.h"#define LONG_SMS_HEAD_6BIT ("050003") // 6-bit codec header#define LONG_SMS_HEAD_7BIT ("060804") // 7-bit codec header//---------------------------------------------------------------------------//--静态函数static bool ReadByte(string& s_buf,int start_pos,unsigned char &out); static bool ReadString(string& s_buf,int start_pos,int len ,string &out); static bool Gsm7bitDecoding(string& s_context);static bool Gsm8bitDecoding(string& s_context);static bool TimeDecode(string & s_in);static bool UCS2Decoding(string& s_context);static bool UCS2Encoding(string& s_context_out,wstring& s_context_in); static void ByteToString(int i_value,char *buffer,int buf_len);//---------------------------------------------------------------------------//--函数/*++isLongSms判断是否是长短信参数:const char * pUD: 短信头地址返回:短信头没有为0--*/static int isLongSms(const char * pUD){int ret;if (0==strncmp(LONG_SMS_HEAD_6BIT, pUD, strlen(LONG_SMS_HEAD_6BIT))) {ret = 6 * 2;}else if (0==strncmp(LONG_SMS_HEAD_7BIT, pUD,strlen(LONG_SMS_HEAD_7BIT))){ret = 7 * 2;}else {ret = 0;}return ret;}/*++ReadByte读16进制的数据参数:[IN]string& s_buf 输入缓冲[IN]int start_pos 读字节启始位置[OUT]unsigned char &out 输出返回:成功为TRUE否那么false--*/static bool ReadByte(string& s_buf,int start_pos,unsigned char &out) {string s_byte = s_buf.substr(start_pos,2);int len = s_byte.length();if(len != 2)return false;out = (unsigned char)strtol(s_byte.c_str(),NULL,16);return true;}/*++ReadString读错位相读字符,主要号码参数:[IN]string& s_buf 输入缓冲[IN]int start_pos 读字节启始位置[IN]int len 要读取字符串的长度[OUT]string &out 输出返回:成功为TRUE否那么false--*/static bool ReadString(string& s_buf,int start_pos,int len ,string &out) {string s_string = s_buf.substr(start_pos,len);int r_len = s_string.length();int i;out = s_string;if(len != r_len)return false;for(i=0;i<len;i++){if(0== (i%2)){out[i+1] = s_string[i];}else{out[i-1] = s_string[i];}}if(out[len-1] == 'F'){out = out.substr(0,len-1);}return true;}static bool TimeDecode(string & s_in){string s_time = "20";const string s_1 = "-";const string s_2 = " ";const string s_3 = ":";s_time += s_in;s_time.insert(4,s_1);s_time.insert(7,s_1);s_time.insert(10,s_2);s_time.insert(13,s_3);s_time.insert(16,s_3);s_in = s_time.substr(0,s_time.length()-2);return true;}/*++DecodeSMS解码原始的PDU数据包.参数:[IN]string s_in_pdu 原始 PDU数据包[OUT]string& number 发信人号码[OUT]string& s_time 发信时间[OUT]string& s_context 发信内容返回:成功为TRUE否那么false--*/bool DecodeSMS(string s_in_pdu, string& s_number,string& s_time,string& s_context){CPDUReceive l_pdu;int len =s_in_pdu.length();bool res = false;unsigned char smsc_len = 0;unsigned char address_len = 0;int offset = 0;int encode_type = 0;//------------------------------------//--读SMSC效劳中心号码res = ReadByte(s_in_pdu,0,smsc_len);if(!res)return false;res = ReadByte(s_in_pdu,2,l_pdu.i_smsc_type);if(!res)return false;len = (smsc_len - 1)*2;res = ReadString(s_in_pdu,4,len,l_pdu.s_smsc);if(!res)return false;if(l_pdu.i_smsc_type == 0x91)//国际型{l_pdu.s_smsc ="+" +l_pdu.s_smsc;}//--读FO第一个字节offset = (smsc_len + 1)*2;res = ReadByte(s_in_pdu,offset,l_pdu.i_fo);if(!res)return false;//------------------------------------//--读发件号长度offset += 2;res = ReadByte(s_in_pdu,offset,address_len);if(!res)return false;//------------------------------------//--读发件号类型offset += 2;res = ReadByte(s_in_pdu,offset,l_pdu.i_address_type);if(!res)return false;//------------------------------------//--读号码offset += 2;if(0!=(address_len%2))len = address_len+1;elselen = address_len;res = ReadString(s_in_pdu,offset,len,l_pdu.s_dest_address); if(!res)return false;if(l_pdu.i_address_type == 0x91)//国际型{l_pdu.s_dest_address = "+" + l_pdu.s_dest_address;}//------------------------------------//--协议表示offset += len;res = ReadByte(s_in_pdu,offset,l_pdu.i_pid);if(!res)return false;//------------------------------------//--数据编码标准offset += 2;res = ReadByte(s_in_pdu,offset,l_pdu.i_dsc);i f(!res)return false;//--发信时间offset += 2;res = ReadString(s_in_pdu,offset,14,l_pdu.s_time);if(!res)return false;//------------------------------------//--短信长度offset += 14;res = ReadByte(s_in_pdu,offset,l_pdu.i_context_len);if(!res)return false;//------------------------------------//--内容offset += 2;l_pdu.s_context = s_in_pdu.substr(offset,s_in_pdu.length()-offset);TimeDecode(l_pdu.s_time);s_number = l_pdu.s_dest_address;s_time = l_pdu.s_time;s_context = l_pdu.s_context;if(0 != (l_pdu.i_dsc & 0x60))return false;encode_type = (l_pdu.i_dsc>>2)&0x3;offset = isLongSms(s_context.c_str());if(offset > 0){s_context = s_context.substr(offset,s_context.length()-offset); }switch(encode_type){case 0:// 7bit编码Gsm7bitDecoding(s_context);break;case1://8 bitGsm8bitDecoding(s_context);break;case2:// 16 bit编码UCS2Decoding(s_context);break;}return true;}/*++Gsm7bitDecoding7bit包的解码参数:[IN,OUT]string& s_context 短信内容返回:成功为TRUE否那么false--*/static bool Gsm7bitDecoding(string& s_context){unsigned char src[MAX_UD];char dst[MAX_7UD];char c_temp[3];int len = 0,i=0;int srcLength = 0;int dstLength = 0;int a, b, k;string s_out;memset(src,0,sizeof(src));memset(dst,0,sizeof(dst));len = s_context.length();if(len > MAX_7UD || len < 1)return false;//----------------------------------------//--转为数据for(i = 0 ;i<len/2;i ++){ReadByte(s_context,i*2,src[i]);}srcLength = len/2;dstLength = srcLength * 8/7;for (a = 0, b = 0; b < srcLength ; a++, b++){k = a % 8;if (a > 0){dst[a] = (unsigned char)(((src[b] << k) & 0x7f) | (src[b - 1] >> 8 - k));}else{dst[a] = (unsigned char)(src[b] & 0x7f);}if (k == 7 && a > 0){dst[++a] = (unsigned char)(src[b] & 0x7f);}}s_out = dst;s_context = s_out;return true;}void ByteToString(int i_value,char *buffer,int buf_len){const char s_num[17] ="0123456789ABCDEF";memset(buffer,0,buf_len);buffer[0] = s_num[i_value/16];buffer[1] = s_num[i_value%16];}/*++UCS2EncodingUnicode 数据编码参数:[OUT]string& s_context 短信内容返回:成功为TRUE否那么false--*/static bool UCS2Encoding(string& s_context_out,wstring& s_context_in) {// 上下字节对调,输出int i = 0,len = 0,temp;char buffer[32];len = s_context_in.length();if(len > MAX_UD/2)return false;for( i=0; i<len; i++){temp = (s_context_in[i] >> 8); // 先输出高位字节ByteToString(temp,buffer,32);s_context_out += buffer;temp = (s_context_in[i] & 0xff); // 后输出低位字节ByteToString(temp,buffer,32);s_context_out += buffer;}return true;}/*++UCS2DecodingUnicode 数据解码参数:[IN,OUT]string& s_context 短信内容返回:成功为TRUE否那么false--*/static bool UCS2Decoding(string& s_context) {int nSrcLength,i; // UNICODE宽字符数目wchar_t wchar[MAX_UD]; // UNICODE串缓冲区unsigned char src[MAX_UD];unsigned char * pSrc = NULL;wstring ws_out;nSrcLength = s_context.length();memset(wchar,0,sizeof(wchar));memset(src,0,sizeof(src));if( nSrcLength > (MAX_UD*2) || nSrcLength< 1) return false;//----------------------------------------//--转为数据for(i = 0 ;i<nSrcLength/2;i ++){ReadByte(s_context,i*2,src[i]);}pSrc = (unsigned char * )src;// 上下字节对调,拼成UNICODEfor(int i=0; i<nSrcLength/2; i++){wchar[i] = *pSrc++ << 8; // 先高位字节wchar[i] |= *pSrc++; // 后低位字节}ws_out = wchar;s_context = ws2s(ws_out);return true;}/*++Gsm8bitDecoding8位数据解码参数:[IN,OUT]string& s_context 短信内容返回:成功为TRUE否那么false--*/static bool Gsm8bitDecoding(string& s_context){return true;}/*++FormatNumber调整个num为反序参数:[IN,OUT]string &s_num 号码返回:成功为TRUE否那么false--*/static void FormatNumber(string &s_num){int len = s_num.length();int i = 0;string s_org ;if(len %2 != 0){s_num += "F";len ++;}s_org = s_num;for(i = 0;i<len;i++){if(i%2 == 0)s_num[i] = s_org[i+1];elses_num[i] = s_org[i-1];}}void ByteToTwoString(int data,char *buffer,int buf_len) {memset(buffer,0,buf_len);if(data < 16){buffer[0]='0';itoa(data,buffer+1,16);}else{itoa(data,buffer,16);}}/*++EncodeSMS解码原始的PDU数据包.参数:[OUT]string &s_in_pdu 原始 PDU数据包[IN]string &smsc 短信中心号码[IN]string& number 发信人号码[IN]wstring& s_context 发信内容返回:0表示出错否那么返回要发送的长度--*/int EncodeSMS(string &s_in_pdu,string &smsc, string& s_number,wstring& s_context){const string s_FOTP = "3100";//FO,前段 TP-Message-Referenceconst string s_International_type = "91";const string s_national_type = "A1";const string s_context_type ="0008A7";//pid 0, dsc 08 ---Unicode形式 VP 4天有效const string s_end_flag = "\x01a";//Ctrl-z 为0x1aint len =0,smcc_len = 0;char buffer[32];string s_temp;string s_ucs2_context;string::size_type pos = string::npos;wstring s_out;int res = 0;//------------------------------------//-SMCS段pos = smsc.find('+');if(string::npos != pos)//国际型{s_temp = smsc.substr(1,smsc.length()-1);FormatNumber(s_temp);smcc_len = s_temp.length();if(smcc_len> 255)return 0;memset(buffer,0,sizeof(buffer));len = smcc_len/2 +1;ByteToString(len,buffer,32);s_in_pdu = buffer+s_International_type + s_temp;}else{smcc_len = smsc.length();if(smcc_len !=0 ){if(smcc_len> 255)return 0;memset(buffer,0,sizeof(buffer));len = smcc_len/2 +1;ByteToString(len,buffer,32);FormatNumber(smsc);s_in_pdu = buffer+s_national_type + smsc;}else{s_in_pdu = "00";//从中读取中心号码len = 0;}}smcc_len = len+1;s_in_pdu += s_FOTP;//-------------------------------------//--收件人段pos = s_number.find('+');if(string::npos != pos)//国际型{s_number = s_number.substr(1,s_number.length()-1);len = s_number.length();if(len> 255)return 0;ByteToString(len,buffer,32);FormatNumber(s_number);s_in_pdu = s_in_pdu + buffer+s_International_type + s_number; }else{len = s_number.length();if(len> 255)return 0;ByteToString(len,buffer,32);FormatNumber(s_number);s_in_pdu = s_in_pdu + buffer+s_national_type + s_number; }//-------------------------------------//--短信设置段s_in_pdu += s_context_type;UCS2Encoding(s_ucs2_context,s_context);len = s_ucs2_context.length()/2;if(len> 255)return 0;ByteToString(len,buffer,32);s_in_pdu = s_in_pdu + buffer + s_ucs2_context;res = s_in_pdu.length()/2- smcc_len ;s_out = s2ws(s_in_pdu);TRACE(L"\n\n");TRACE(s_out.c_str());s_in_pdu += s_end_flag;return res;}。
信息传递模板
尊敬的(收件人称呼):
我希望通过这封信/邮件将以下重要信息传达给您:
1. 简要介绍背景和目的:首先,我想向您简要介绍一下这封信/邮件的背景和目的。
明确说明您所要传递信息的原因和意图。
2. 主要内容:接下来,详细说明要传递的主要内容。
确保信息的清晰、明确,同时排列有序,按照逻辑合理地展示。
3. 相关细节和说明:如果需要提供更多的细节、说明或解释,请在这部分提供。
提供充分的上下文信息有助于确保信息被正确理解和应用。
4. 相关文件/附件:如果有相关文件、附件需要提供,请在这
里指明。
确保附件的格式正确,易于阅读和访问。
5. 后续行动和反馈:明确表达希望收件人采取的后续行动,并提供任何必要的截止日期或期望时间。
提供收件人反馈或回复的方式和时间,以确保沟通的双向性。
6. 结尾和感谢:在信息传递结束时,表达感谢之意并礼貌地结束信函/邮件。
感谢收件人的时间和关注,再次重申您对他们
的行动的期望。
最后,请务必在信/邮件上签署您的名字,并提供您的联系方
式,以便有需要时与您进行进一步沟通。
再次感谢您的关注和合作。
祝好!
(您的名字)。
通信协议中的消息传递与数据格式解析通信协议是计算机网络中非常重要的一部分,它规定了网络中各个设备之间的通信方式和数据交换的规则。
消息传递与数据格式解析是通信协议中的关键环节,它涉及到如何正确地发送和接收数据,在网络通信中起到了至关重要的作用。
本文将详细介绍通信协议中消息传递和数据格式解析的步骤,并分点列出。
一、消息传递的步骤:1. 确定消息类型:在消息传递之前,发送方需要确定发送的消息类型,例如请求数据、响应数据、命令等,不同的消息类型需要使用不同的协议和数据格式。
2. 打包数据:发送方根据所选定的消息类型,将需要传递的数据打包成一片连续的字节序列。
在打包数据时,需要注意指定数据的长度和格式,以确保接收方可以正确地解析和处理数据。
3. 发送消息:发送方通过网络将打包好的消息数据发送给接收方。
为了保证消息的可靠传递,通常会使用一些可靠传输协议,例如TCP(传输控制协议),来确保数据的正确性和完整性。
4. 接收消息:接收方通过网络接收到发送方发送的消息数据。
在接收消息的过程中,需要处理网络中可能出现的延迟、丢包和重复等问题,以保证消息的可靠性和正确性。
5. 解析消息:接收方根据约定的协议和数据格式,对接收到的消息数据进行解析。
解析消息的过程涉及到数据格式的解析和处理,以及根据消息类型进行相应的操作和响应。
二、数据格式解析的步骤:1. 确定数据格式:在数据格式解析之前,需要确定数据的编码格式和结构。
常见的数据编码格式包括二进制、文本和XML等。
数据结构指的是数据中各个字段的排列和组织方式,例如采用固定长度字段还是变长字段。
2. 提取数据:根据数据结构的定义,对接收到的消息数据进行解析和提取。
提取数据的过程可能涉及到字节序转换、字符串编解码等操作,以确保提取到的数据能够被正确地处理和使用。
3. 验证数据:对提取到的数据进行验证,确保数据的完整性和正确性。
验证数据的方式包括校验和、CRC(循环冗余校验)等。
短信分析报告1. 引言短信是人们日常生活中经常使用的通信方式之一,它快速、简洁且广泛用于各种领域。
本报告旨在对短信进行分析,探索其中的特点和用途。
2. 数据收集为了进行短信分析,我们收集了一批真实的短信数据。
这些数据涵盖了个人与个人之间的短信、企业与个人之间的短信,以及各种广告短信等。
3. 短信文本分析3.1 通信习惯分析通过对短信数据进行分析,我们可以了解人们的通信习惯。
例如,我们可以统计一天中不同时间段的短信数量,以了解人们在不同时间段的通信活跃程度。
我们还可以分析短信的长度分布,了解人们发送的短信一般有多长。
3.2 短信内容分析我们还对短信的内容进行了深入分析。
通过提取短信中的关键词和短语,我们可以了解人们在短信中经常讨论的话题。
例如,我们可以找出频繁出现的关键词,了解人们关注的热点问题和话题。
3.3 短信情感分析除了内容分析外,我们还对短信的情感进行了分析。
通过使用情感分析算法,我们可以判断短信中所表达的情感是积极还是消极。
这有助于我们了解人们在短信中表达的情感状态。
4. 短信用途分析4.1 个人通信短信作为个人之间的即时通信方式,被广泛用于日常交流和社交。
通过对短信数据的分析,我们可以了解人们在短信中经常讨论的话题,例如家庭、朋友、工作等。
4.2 商业营销短信还被许多企业用于推广和营销。
通过发送短信广告,企业可以直接将产品和服务推送给潜在客户。
我们可以通过分析短信中的广告内容,了解企业在短信营销中的策略和效果。
5. 结论通过对短信进行分析,我们可以了解人们的通信习惯、关注话题和情感状态,以及短信在个人通信和商业营销中的用途。
这些分析结果对于个人和企业都有重要的参考价值,可以帮助人们更好地理解短信的特点和用途,提高短信的效果和效率。
以上是对短信分析的报告,通过对短信数据的分析,我们了解了短信的通信习惯、内容特点,以及个人通信和商业营销中的用途。
希望本报告对您有所帮助。
PDU格式短信解析(GSM)AT指令收发短信主要有两种模式:Text模式和PDU(Protocol Data Unit,协议数据单元)模式。
使用Text模式收发短信代码简单,很容易实现,最大缺点不支持中文短信。
PDU模式不仅能发送中文短信,也能发送英文短信。
PDU收发短信有三种编码可用:7-bit、8-bit和UCS2编码。
7-bit编码用于发送普通的ASCII字符,即英文短信,最多可发送160字符。
8- bit编码通常用于发送数据消息。
UCS2编码用于发送Unicode字符,可发送中文字符,最多发送70字符。
短信发送实例:Text模式(向号码为150****0677的手机发送“TEST”):PDU模式(向号码为150****0677的手机发送“你好”):有的“猫”用“串口调试器”发送总是失败:Text模式接收到的是乱码,PDU模式发送不出去。
我用的这个就是这个样子,给我郁闷了很多天,后来发现在串口调试器中我们摁下的“回车”被解析为”\r\n”,而我用的这个modem只有在只发送AT指令+”\r”时才能正确的发送短信。
发现后发送短信都能成功,高兴了好一会儿。
不说废话了,开始PDU短信编码的解析。
这是我的理解,更多详细资料参考下列标准:GSM 03.04 着重介绍短信发送中对字符集的控制部分GSM 03.08GSM 03.41GSM 07.05 介绍 at 的一些控制命令GSM 07.07 着重介绍 at 的短信相关命令,可以说是at的sms 规范元素名称长度描述SCA Service Center Address 1-12 短消息服务中心号码PDU-Type Protocol Data Unit 1 协议数据单元类型MR Message Reference 1 所有成功的短信发送参考数目(0..255)OA Originator Address 2-12 发送方地址(手机号码)DA Destination Address 2-12 接收方地址(手机号码)PID Protocol Identifer 1 参数显示消息中心以何种方式处理消息内容(比如FAX,Voice)DCS Data Coding Scheme 1 参数显示用户数据编码方案SCTS Service Center Time Stamp 7 消息中心收到消息时的时间戳VP Validity Period 0,1,7 参数显示消息有效期UDL User Data Lenghth 1 用户数据长度UD User Data 0-140 用户数据发送方PDU格式:SCA PDU-Type MR DA PID DCS VP UDL UD1-12 1 1 2-12 1 1 0,1,7 1 0-140 示例:向150****0677发送一条短信,内容“Test”0011000D91685150800576F70000C404D4F29C0E向150****0677发送一条短信,内容“你好”0011000B815150800576F70008C4044F60597DSCA PDU-Type MR DA PID DCS VP UDL UD1-12 1 1 2-12 1 1 0,1,7 1 0-14000 11 00 0D91685150800576F7 00 00 C4 04 D4F29C0E 00 11 00 0B815150800576F7 00 08 C4 04 4F60597D接收方PDU格式:SCA PDU-Type OA PID DCS SCTS UDL UD1-12 1 2-12 1 1 7 1 0-140 示例:从150****0677接收一条短信,内容“Test”0891683110402505F0240BA151********F7000001112081 60302304D4F29C0E从150****0677接收一条短信,内容“你好”0891683110402505F0240BA151********F7000801112081 600423044F60597DSCA PDUType OA PIDDCSSCTS UDLUD1-12 1 2-12 1 1 7 1 0-1400891683110402505 F0 24 0BA151********F700 00 0111208160302304 D4F29C0E089168311040250524 0BA1515080057600 08 01112081600404 4F60597F0 F7 23 D SCA:短消息服务中心地址格式服务中心地址包含三个部分:1-12个8位位组第一个位组指示服务中心地址长度,第二个位组指示服务中心类型,第三个位组为服务中心地址。
v1.0可编辑可修改TC35模块波特率设定AT+IPR=960041 54 2B 49 50 52 3D 39 36 30 30 0D保存设置AT&W41 54 26 57 0DQ2303短信模块使用1.设置短信格式(设置短消息格式为PDU)AT+CMGF=041 54 2B 43 4D47 46 3D300D模块返回数据 :41 54 2B 43 4D47 46 3D300D 0D 0A 4F 4B 0D 0A (AT+CMGF=0 OK)2.设置短信的存储位置(Q2403A 中为可选项 )AT+CNMI=2,1短信存储在SIM 中41 54 2B 43 4E 4D 49 3D 32 2C 31 0D模块返回数据 :41 54 2B 43 4E 4D 49 3D 32 2C 31 0D 0D 0A 4F 4B 0D 0A(AT+CNMI=2,1)(OK)AT+WUSS=1读短信时不改变状态41 54 2B 57 55 53 53 3D 31 0DAT+WUSS=0读短信时改变状态41 54 2B 57 55 53 53 3D 30 0D模块返回数据 :0D 0A 4F 4B 0D 0A (OK)v1.0可编辑可修改中文短信发送说明PIML 短信模块使用AT+WUSS=1读短信时不改变状态41 54 2B 57 55 53 53 3D 31 0DAT+WUSS=0读短信时改变状态41 54 2B 57 55 53 53 3D 30 0D模块返回数据 :0D 0A 4F 4B0D 0A(OK)PIML 短信模块使用步骤:2.设置短信格式(设置短消息格式为PDU)AT+CMGF=041 54 2B 43 4D 47 46 3D 30 0D模块返回数据 :0D 0A 4F 4B0D 0A(OK)2.设置短信的存储位置(PIML 中为必选项 )AT+CNMI=2,1短信存储在SIM 中41 54 2B 43 4E 4D 49 3D 32 2C 31 0D模块返回数据 :0D 0A 4F 4B 0D 0A (OK)AT+CNMI=2,2短信不存储在SIM 中41 54 2B 43 4E 4D 49 3D 32 2C 32 0D3.不存卡方式的短信接收+CMT: ,32089F0240D9F0000C8BF4660E4E864E0D77E590534.存卡方式的短信接收+CMTI: "SM",7 (短消息提示信息)AT+CMGL=0(读未读短信)发送内容: 41 54 2B 43 4D 47 4C 3D 30 0D+CMGL: 7,0,,32089F0240D9F0000C8BF4660E4E864E0D77E59053Q2403A短信模块使用步骤:1.设置短信格式(设置短消息格式为PDU)AT+CMGF=041 54 2B 43 4D 47 46 3D 30 0D2.设置短信的存储位置(Q2403A 中为可选项 )AT+CNMI=2,1短信存储在SIM 中41 54 2B 43 4E 4D 49 3D 32 2C 31 0D3.短信接收+CMTI: "SM",8 (短消息提示信息)AT+CMGL=0(读未读短信)发送内容: 41 54 2B 43 4D 47 4C 3D 30 0D+CMGL: 8,0,,32089F0240D9F0000C8BF4660E4E864E0D77E59053089F0040D9F0A第一步:AT+CMGF=0(设置短消息格式为PDU)发送内容: 41 54 2B 43 4D 47 46 3D 30 0D(AT+CMGF=0)接受内容: 41 54 2B 43 4D 47 46 3D 30 0D0D 0A 4F 4B 0D 0A(OK)第二步:AT+CMGS=019(设置短信长度,19 为十进制数= 15+ 2×中文短信长度)发送内容: 41 54 2B 43 4D 47 53 3D 30 31 39 0D接收内容: 41 54 2B 43 4D 47 53 3D 30 31 39 0D0D 0A 3E 20 ("> ")第三步:30 30 31 31 30 30 30 44 39 31 36 38 33 31 30 35 32 35 36 38 36 37 46 38 30 30 3038 30 31 30 34 34 46 36 30 35 39 37 44 1A要向号码为“ +86”发送一条短信息(号码转换为3567F3),发送内容为“你好” ,( 变成 Unicode 为“ 4F60597D”,长度是04)。
0011000D9168 67F3000801 04 4F60597D(短信内容:你好)0011000D9168+处理过的手机号码+000801①+短信长度(十六进制,两位 ,2* 中文短信长度)+短信内容发送内容: 30 30 31 31 30 30 30 44 39 31 36 3833 31 31 39 35 34 33 35 36 37 46 3330 30 30 38 30 31 30 34 34 46 36 30 35 39 37 44 1A接收内容: 30 30 31 31 30 30 30 44 39 31 36 3833 31 31 39 35 34 33 35 36 37 46 3330 30 30 38 30 31 30 34 34 46 36 30 35 39 37 44 1A0D 0A 2B 43 4D 47 533A 20 39 37 0D 0A 0D 0A 4F 4B 0D 0A(+ CMGS:97 OK )2. 读取短信内容:方式一 :AT+CMGR=25(读取短信命令,25 为读取短信的存放位置)发送内容: 41 54 2B 43 4D 47 52 3D 32 35 0D接受内容: 41 54 2B 43 4D 47 52 3D 32 35 0D0D 0A 45 52 52 4F 52 0D 0A (ERROR )---------------------------------------------方式二 :AT+CMGL=0(读未读短信)发送内容: 41 54 2B 43 4D 47 4C 3D 30 0DAT+CMGL=1(读已读短信)发送内容: 41 54 2B 43 4D 47 4C 3D 31 0DAT+CMGL=2(读待发短信)发送内容: 41 54 2B 43 4D 47 4C 3D 32 0DAT+CMGL=3(读已发短信)发送内容: 41 54 2B 43 4D 47 4C 3D 33 0DAT+CMGL=4(读全部短信)发送内容: 41 54 2B 43 4D 47 4C 3D 34 0D--------------------------------------------------------------------------------------3.删除短信AT+CMGD=24(删除短信命令)发送内容: 41 54 2B 43 4D 47 44 3D 32 34 0D接受内容: 41 54 2B 43 4D 47 44 3D 32 34 0D-0D 0A 4F 4B 0D 0A----------------------------------------------------------------------------------------4.发送中文短信:AT+CMGF=0(设置短消息格式为PDU)发送内容: 41 54 2B 43 4D 47 46 3D 30 0D接受内容: 41 54 2B 43 4D 47 46 3D 30 0D 0D 0A 4F 4B 0D 0A-----------------------------------------------------------AT+CMGS=019(发送短信,19为十进制数=15+ 2×中文短信长度)发送内容: 41 54 2B 43 4D 47 53 3D 30 31 39 0D接收内容: 41 54 2B 43 4D 47 53 3D 30 31 39 0D-0D 0A 3E 20(返回">")要向号码为“ +86”发送一条短信息(号码转换为3567F3),发送内容为“你好”,(变成 Unicode 为“ 4F60597D”,长度是04)。
0011000D9F3 000801 04 4F60597D(短信内容:你好)+ 86F 000801 04;0011000D9168+处理过的手机号码+000801①+短信长度(十六进制,两位 ,2* 中文短信长度)+短信内容发送内容: 30 30 31 31 30 30 30 44 39 31 36 38 33 31 31 39 35 34 33 35 36 37 46 3330 30 30 38 30 31 30 34 34 46 36 30 35 39 37 44 1A30 30 31 31 30 30 30 44 39 31 36 38 33 31 30 35 32 35 36 38 36 37 46 38 30 30 3038 30 31 30 34 34 46 36 30 35 39 37 44 1A接收内容: 30 30 31 31 30 30 30 44 39 31 36 38 33 31 31 39 35 34 33 35 3637 46 33 30 3030 38 30 31 30 34 34 46 36 30 35 39 37 44 1A-0D0A2B434D47533A 20 39 37 0D0A 0D 0A 4F 4B 0D 0A(+ CMGS:97OK)注① :000801:⑴00——协议标识TP-PID,一般为00⑵ 08——数据编码方案BIT No.76543210TP-DCS ,USC2编码(汉字编码)Bit 与 Bit :一般设置为00; Bit:0—文本未压缩,1—文本用GSM标准压缩算法压缩;Bit : 0—表示 Bit、Bit为保留位,不含信息类型信息,1—表示 Bit、Bit含有信息类型信息; Bit与Bit:00—默认的字母表,01— 8bit ,10— USC2(16bit ), 11—预留; Bit与 Bit : 00— Class 0,只显示,不储存 01— Class 1,储存在 ME内存中 10— Class 2( SIM 卡特定信息)储存在SIM 卡中, 11— Class 3直接传输到TE。