当前位置:主页>delphi7/进销存和数据库> 文章内容

谁有手机发送短信源代码?

发布时间:2010-01-23 | QQ免费站
1楼: 谁有手机发送短信源代码?

2楼: 手机短信息SMS开发—编码,解码 1、 英文编码 缺省的GSM字符集为7位编码,ASCII码为8位编码,编码就是将8位ASCII编码转换为7位编码。 例如:1234 编码后得到31D98C06 2进制表示 8位编码 00110001 00110010 00110011 00110100 7位编码 00110001 11011001 10001100 00000110 通过例子可以看出,将ascii8位编码的Bit8去掉,依次将下7位编码的后几位逐次移到前面,形成新的8位编码。 以下是C++Builder的实现代码: String __stdcall EncodeEnglish(String InputStr) { int n,len,cur; String tempstr,returnstr; unsigned char mid1[2],mid2[2]; len=InputStr.Length(); n=0; for(int i=1;i<=len;i++) { if (i>n)|((mid2[0]<<(7-n))& 0xff); } else { strcpy(mid1,InputStr.SubString(i,1).c_str()); cur=(mid1[0]>>n)& 0x7f; } FmtStr(tempstr,“%2.2X“,ARRAYOFCONST((cur))); returnstr=returnstr+tempstr; n=(n+1)%7; if (n==0) i++; } return returnstr; } 2、 英文解码 简单地说就是将7位字符编码转换为8为字符编码 以下是C++Builder的实现代码: int ReturnHex(int Value) { switch (Value) { case 0: Value=0x7f; break; case 1: Value=0x3f; break; case 2: Value=0x1f; break; case 3: Value=0x0f; break; case 4: Value=0x07; break; case 5: Value=0x03; break; case 6: Value=0x01; break; case 7: Value=0x00; break; } return Value; } String __stdcall DecodeEnglish (String InputStr) { unsigned char InStr[300]; char OutStr[300]; String str; int j=0,i=0; int Point=0; int temp; memset(InStr,0,301); memset(OutStr,0,301); for(int i=0;i>(8-Point)); if(Point%7==0&&Point!=0) Point=0; else Point=Point+1; i++; j=i-(i/8); } OutStr[12]=((InStr[12]&0x07)<<5)|(InStr[11]>>(8-5)); return AnsiString(OutStr); } 3、 中文编码 中文编码较为简单,就是将GB2312的中文编码转换为代码页为CP936的Unicode编码即可 以下是C++Builder的实现代码 String EncodeChinese(String InputStr) { int cur; String tempstr,returnstr; WideString ws; wchar_t mid[2]; ws=WideString(InputStr); for(int i=1;i<=ws.Length();i++) { wcscpy(mid,ws.SubString(i,1).c_bstr()); cur=mid[0]; FmtStr(tempstr,“%4.4X“,ARRAYOFCONST((cur))); returnstr=returnstr+tempstr; } return returnstr; } 4、 中文解码 将代码页为CP936的Unicode编码转换为GB2312的中文编码即可 以下是C++Builder的实现代码 String DecodeChinese(String InputStr) { wchar_t Buf[300]; for(int i=0;i字串8

3楼: SMS程式开发 九十年代初,AT命令仅被用于modem操作。由于没有控制移动电话文本消息的先例,因此开发了一种叫SMS Block Mode的协议,通过终端设备(TE)或电脑来完全控制SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM研制了一整套AT命令,其中包含对SMS的控制。AT命令在此基础上演化并被加入GSM 07.05标准,以及之后的GSM 07.07标准。 对SMS的控制共有三种实现途径: • 最初的Block Mode; • 基于AT命令的Text Mode; • 基于AT命令的PDU Mode; 到现在,PDU已取代Block Mode,后者逐渐淡出。 什么是PDU Mode? 它是发送或接收手机SMS消息的一种方法。消息正文经过十六进制编码后进行传送。 PDU命令有哪些? 基本的PDU命令是AT+CMGR,AT+CMGL,AT+CMGS。例如读取电话上全部未读过的SMS消息,最简单的办法是用AT+CMGL=0;而用AT+CMGL=4则可读取全部SMS消息,无论已读过与否。 实例: 15:38:58 TX:AT 15:39:05 TX:AT+CPMS=“ME“ 15:39:05 RX:AT+CPMS=“ME“ 15:39:05 RX: +CPMS: 15,15,4,10,15,15 15:39:05 RX: OK 15:39:07 TX:AT+CMGL=0 15:39:07 RX:AT+CMGL=0 15:39:07 RX: +CMGL: 5,0,,52 15:39:07 RX:07914408020033F40407D0B1582C0600000030525183920028D43708 2E7FD3CB633A888E2E83EE6F399B0C32CBDF6D10B96C0FCFE9617AFAED76B95C 15:39:07 RX: OK 使用工具对上述收到的SMS进行解码后,可得到如下的解释: IEI: 00 LENGTH: 00 MESSAGE REF: 00 STATUS: 00 SC Address length: 07 SC Address type: 91 Type of number: International Numbering plan identifier: E.164 SC Address: 44802000334 Message Type Indicator: 04 Message Type: SMS-DELIVER / SMS-DELIVER REPORT More Messages To Send: No Status Report Indication: No Reply Path: No Originating Address Length: 07 Originating Address type: D0 Type of number: Alphanumeric Numbering plan identifier: Unknown Originating Address: 1B85C260 Decoded: 1111 Protocol Identifier: Default Data Coding Scheme: GSM Default Alphabet SC Timestamp: 00305251839200 decoded: 00/03/25 15:38:29 Time Zone: GMT+0.00H User Data Length: 28 decimal: 40 Message: To protect the world from devastation 于是我们知道这条SMS消息的第一部分是: 07914408020033F4 07是跟在服务中心地址内的字节数; 91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加‘+’号;此外还可有其他数值,但91最常用到。 44080200033F4是所使用的服务中心地址,由于位置上略有处理,实际号码应为: 44802000334F(字母F意指长度减1),这就是服务中心的准确地址(号码)。 下一单元是: 04 这是文件头字节(header byte, 是一种bitmask)。将每个字节设为1时,有如下含义: 10000000 回复路径(Reply Path):移动电话可循发送SMS消息的短消息中心进行回复(但并非所有SMSC都会这样设置)。 01000000 TP-UDH - 带有用户数据文件头 00100000 TP-Status-Report-Indication - 发送状态报告给发信人,表示消息收到 00010000 00001000 此两类在正常的移动终接短消息(MT,Mobile Terminated SMS)中不会使用。 00000100 TP-More Messages to Send - SMSC内再无新消息发送给该移动电话。 00000010 00000001 最后两个位数表示消息种类 - 10指是移动终接短消息(MT),01指移动起始短消息(MO,Mobile Originated SMS)。 所以“04“指此条消息是正常的移动终接短消息,SMSC内再无新消息发送给该手机。 my mail : jinwutongbj@yahoo.com.cn 字串1

4楼: 我有 字串5

5楼: 谢谢各位提供的代码。 字串7

6楼: gyh75: lqk586@126.com 能把源码发给我吗?十分感谢!

字串2

7楼: 谢谢 字串1



热门文章