
gsm短信息发送接收步骤.doc
9页短消息发送接收步骤一、发送短信PDU格式AT十CMGS ( Send SMS command)发送短消息指令PDU模式中,首先发送短消息数据的长度AT+CMGS=
例如,我们要将字符“水位=5米”字符发送到目的地“13309100910”08 91 683108200905F0 11 00 0D 91 683103190019F0 00 08 A7 10 6C 34 4F 4D 00 3D 00 35 7C 73 SCAFOMRDAPIDDCSVPUDLUD发送短信息的PDU格式1.SCA:短信息服务中心地址08 91 683108200905F0(1) 08-短信息服务中心地址长度指(91)+(683108200905F0)8个字节的长度2)91—短信息中心号码类型91是TON/NPI遵守International/E.164标准,指在号码前需加‘+’号;此外还有其它数值,但91最常用,91指国际类型,81指国内类型91—10010001号码类型数值类型(Type of Number):000—未知,001—国际,010—国内,111—留作扩展;号码鉴别(Numbering plan identification):0000—未知,0001—ISDN/号码(E.164/E.163),1111—留作扩展;⑶683108200905F0—短信息中心号码。
对于短消息中心号码的编码采用的是半位码取十六进制的 ASCII 码,8 的 ASCII 码是 38,6 的 ASCII码是 36,所以数字编码只要取相应的二进制的后四位就可以有效的表示一个数字,也就是十六进制的右边一位所有数字都取二进制的后四位,然后两两合并,后面的字符是高四位,前面的字符是低四位依此原则,短消息中心号码的前两位号码为 86,编码后为 68,同样的 13 编码为 31,但是最后只剩下一个 0,用 F 补齐,编码为 F0其中 86 为中国的国际区号注:西安短信中心号码 86 13800290500⑴、⑵、⑶通称短消息中心地址SCA2.FO—文件头字节,发短信时设为“11”11&h=00010001&b文件头格式应答路径—TP-RP(TP-Reply-Path):0—不设置; 1—设置用户数据头标识—TP-UDHL(TP-User-Data-Header-Indicator):0—不含任何头信息; 1—含头信息状态报告要求—TP-SPR(TP-Status-Report-Request):0—需要报告; 1—不需要报告有效期格式—TP-VPF(TP-Validity-Period-Format):00—不提供(Not present); 10—整型(标准);01—预留; 11—提供8位字节的一半(Semi-Octet Represented)拒绝复制—TP-RD(TP-Reject-Duplicates):0—接受复制; 1—拒绝复制信息类型提示—TP-MTI(TP-Message-Type-Indicator):00—读出(Deliver); 01—提交(Submit)3、MR—信息类型(TP-Message-Reference),一般为00。
4、DA—被叫号码0D 91 683103190019F00D-被叫号码长度“8613309100910”共 13 位,实际号码长度91—被叫号码类型,为国际类型683103190019F0—被叫号码,经过了位移处理,实际号码为“8613309100910” 编码方式与短消息中心号码相同5、PID—协议标识TP-PID(TP-Protocol-Identifier),一般为00 BIT No. 7 6 5 4 3 2 1 0 Bit No.7与Bit No.6: 00—如下面定义的分配Bit No.0—Bit No.5;01—参见GSM03.40协议标识完全定义;10—预留;11—为服务中心(SC)特殊用途分配Bit No.0—Bit No.5一般将这两位置为00Bit No.5:0—不使用远程网络,只是短消息设备之间的协议;1—使用远程网络Bit No.0—Bits No.4:00000—隐含;00001—电传;00010—group 3 telefax;00100—语音;00101—欧洲无线信息系统(ERMES);00110—国内系统;10001—任何基于X.400的公用信息处理系统;10010—Email。
6、DCS—数据编码方案TP-DCS(TP-Data-Coding-Scheme)Bit No.7与Bit No.6 :一般设置为00;Bit No.5:0—文本未压缩,1—文本用GSM标准压缩算法压缩;Bit No.4:0—表示Bit No.1、Bit No.0为保留位,不含信息类型信息,1—表示Bit No.1、Bit No.0含有信息类型信息;Bit No.3与Bit No.2:00—默认的字母表,01—8bit,10—USC2(16bit),11—预留;Bit No.1与Bit No.0:00—Class 0,01—Class 1,10—Class 2(SIM卡特定信息),11—Class 3⑾00—有效期TP-VP(TP-Valid-Period) 08-使用UNICODE编码类型,00-7位编码7、VP-相应的有效期 value(&h) A7为24小时00 to 8F (VP+1)*5 分钟 90 to A7 12小时+(VP-143)*30分钟 A8 to C4 (VP-166)*1天 C5 to FF (VP-192)*1 周 8、UDL-用户数据长度(TP-User-Data-Length)即实际短信息内容长度。
10-短信内容长度9、UD—用户数据(TP-User-Data),即短信内容水位=5米” UNICODE编码为“6C 34 4F 4D 00 3D 00 35 7C 73”,水的UNICODE编码为“6C 34”,位的UNICODE编码为“4F 4D”,=的UNICODE编码为“00 3D“,5的UNICODE编码为“00 35”, 米的UNICODE编码为“7C 73”如要发送英文字符,短消息的编码格式为(DCS—数据编码方案为00):设需要发送的短消息内容为“Hi”,使用的GSM字符集为7位编码首先将字符转换为7位的二进制,然后,将后面字符的位调用到前面,补齐前面的差别例如:H翻译成1001000,i翻译成1101001,显然H的二进制编码不足八位,那么就将i的最后一位补足到H的前面那么就成了11001000(C8),i剩下六位110100,前面再补两个0,变成00110100(34),于是“Hi”就变成了两个八进制数 C8 342)用TEXT格式发送短信(用超级终端)”(Chr(34))步骤1.发送AT<回车>(vbCr)返回OKAT+CMGF=1(TEXT格式)步骤2.发送AT+CMGS="+8613669262851"返回〉(返回的16进制为0D 0A 3E 20)步骤3.在〉后输入Let me try汉字!!步骤4.按ctrl+z(Chr(26))发送短消息。
返回+CMGS: 000OK其对应的十六进制数据是:0D 0A 2B 43 4D 47 53 3A 20 30 30 30 0D 0A 0D 0A 4F 4B 0D 0A如果发送失败,返回的数据是:ERROR对应的十六进制数据是:0D 0A 45 52 52 4F 52 0D 0A/******************************************************************函数名称:GSMSendSMS函数功能:发送短消息输入参数:输出参数:创建日期:2007.4.6*******************************************************************/void GSMSendSMS(uchar *str){ if(GSMSMSFlag==0)return; if(GSMCnt!=0)return; switch(GSMSMSPro) { case 0: GSMCnt = GSMCntConst;//装入超时记录时间 GSMReCmd = 0; GSMSendData("AT+CMGS=\""); GSMSendData(GSMPhoneNum);//对方号码 GSMSendData("\"\r"); break; case 1: GSMCnt = GSMCntConst2;//装入超时记录时间 GSMReCmd = 0; GSMSendData(str);//发送短消息数据 GSMSendChar(0x1A);//Ctrl^z break; default: break; }}二、接收短信+CMTI:“SM”,X (X表示接收短消息的SIM卡存储号码)AT+CMGR=X回车 (从X存储区读短消息)AT+CMGD=X回车 (从X存储区删除短消息)当有新的短消息到来时,需要TC35T产生提示,使用指令“AT+CNMI”。
该指令的完整语法如下: AT+CNMI=[












