当前位置:首页 > 网络编程 > 软件语言 > DELPHI > Delphi制作GSM Modem的短信发送控件

Delphi制作GSM Modem的短信发送控件

点击次数:89 次 发布日期:2008-11-09 08:45:58 作者:源代码网
源代码网推荐
广告载入中

源代码网整理以下目前大多数的企业及学校内部都建有Intranet。并建有内部网站实现资源共享。为了使用户及时的得知网上的最新信息,很多网站都采用了手机短信提醒的方式,但使用中国移动或中国联通的SP方式,会大大的增加企业的成本。故本文讨论的是利用GSM Modem和短信发送控件来实现的短信提醒。

源代码网整理以下首先,介绍一下笔者所使用环境。

源代码网整理以下服务器:Windows 2000 Advanced Server、IIS 5.0、ASP、SQL Server 2000

源代码网整理以下客户端:Windows XP 或Windows 2000

源代码网整理以下开发工具:Delphi6.0,APRO4.06

源代码网整理以下在建立项目之前先在Delphi6中安装APRO控件,这是笔者使用的方法,读者也可以用comm32。

源代码网整理以下新建一个自动化对象

源代码网整理以下命名为:sms点击OK.

源代码网整理以下保存单元文件,命名为:main.pas。

源代码网整理以下新建方法:sendmsg

源代码网整理以下Comnumber:GSM Modem所在的串口号。

软件开发网 www.mscto.com

源代码网整理以下Phone:要发送的目的手机号码。

软件开发网 www.mscto.com

源代码网整理以下Msg:发送信息内容。

源代码网整理以下完成后单击刷新。

源代码网整理以下打开main.pas为该方法写程序。

源代码网整理以下以下是main.pas的程序清单:

软件开发网 www.mscto.com

源代码网整理以下
unit main;

软件开发网 www.mscto.com

源代码网整理以下            {$WARN SYMBOL_PLATFORM OFF}

源代码网整理以下            interface

源代码网整理以下            uses

源代码网整理以下            ComObj, ActiveX, jksms_TLB, StdVCl, SysUtils,Windows,ADTrmEmu,

源代码网整理以下            OoMisc,reGIStry;

软件开发网 www.mscto.com

源代码网整理以下            type

源代码网整理以下            Tsms = class(TAutoObject, Isms)

源代码网整理以下            protected

源代码网整理以下            procedure sendmsg(comnumber: Integer; const phone, msg: WideString);

源代码网整理以下            safecall;

源代码网整理以下            { Protected declarations }

源代码网整理以下            end;

软件开发网 www.mscto.com

源代码网整理以下            implementation

源代码网整理以下            uses ComServ , adport;//这里需手工添加

源代码网整理以下            function SEncodeMobNO(SmobNO: string): string;

源代码网整理以下            //要想发送中文短信必须使用Modem的PDU方式。这个函数是将手机号码进行PDU编码。

源代码网整理以下            var

源代码网整理以下             TempPchar: Pchar;

源代码网整理以下             i: integer;

源代码网整理以下             Str: string;

源代码网整理以下            begin

软件开发网 www.mscto.com

源代码网整理以下             if (copy(smobno, 1, 1) = ’ ’) then //判断是否包含国家编码

源代码网整理以下              SmobNO := copy(smobno, 2, length(smobno) - 1); //去掉手机号码中的’ ’

源代码网整理以下             if ((length(SmobNO) mod 2) = 1) then

源代码网整理以下              SmobNO := SmobNO   ’F’;

源代码网整理以下              TempPchar := Pchar(SmobNO); //将字符串 Char数组化

软件开发网 www.mscto.com

源代码网整理以下             i := 0;

源代码网整理以下             Str := ’’;

源代码网整理以下             while i < length(TempPchar) do begin

源代码网整理以下              Str := Str   TempPchar[i   1]   TempPchar[i];

源代码网整理以下              i := i   2;

源代码网整理以下             end;

源代码网整理以下             result := Str;

源代码网整理以下            end;

软件开发网 www.mscto.com

源代码网整理以下            function EncodeChinese(Input: WideString): string;//将信息内容进行PDU编码

软件开发网 www.mscto.com

源代码网整理以下            var

源代码网整理以下             i: Integer;

源代码网整理以下            begin

源代码网整理以下             Result := ’’;

源代码网整理以下             for i := 1 to Length(Input) do

源代码网整理以下              Result := Result   Format(’%4.4X’, [ord(Input[i])]);

源代码网整理以下            end;

源代码网整理以下            procedure Tsms.sendmsg(comnumber: Integer; const phone, msg: WideString);

源代码网整理以下            //发送短信的方法

源代码网整理以下            var

软件开发网 www.mscto.com

源代码网整理以下             apdcomport:Tapdcomport;

源代码网整理以下             r,s,s2,s3,s4,s5:string;

源代码网整理以下            mdlong,tmp:integer;

软件开发网 www.mscto.com

源代码网整理以下             msgs:WideString;

源代码网整理以下            begin 软件开发网 www.mscto.com

源代码网整理以下             apdcomport:=TApdComPort.Create(nil);//创建串口通信对象

源代码网整理以下             apdcomport.AutoOpen:=false;//关闭自动打开属性

源代码网整理以下             apdcomport.Open:=false;

源代码网整理以下             apdcomport.ComNumber:=comnumber;//设置串行通信口

源代码网整理以下             apdcomport.Baud:=19200;//设置串口波特率

源代码网整理以下             msgs:=msg;

源代码网整理以下             s:=’0031000D9168’ ;

源代码网整理以下             //PDU编码属性,这种方法是不需要设置短信中心号码的,因为现的手机SIM卡已经写好了

源代码网整理以下             s2:=SEncodeMobNO(phone);//对手机号码进行PDU编码

源代码网整理以下             s3:=’0008A7’;

源代码网整理以下             s4:=’’;

源代码网整理以下             s5:=EnCodeChinese(msgs);

源代码网整理以下             tmp:=length(s5)div 2;

源代码网整理以下             s4:=format(’%X’,[tmp]);

源代码网整理以下             if length(s4)<2 then

源代码网整理以下              s4:=’0’ s4; 软件开发网 www.mscto.com

源代码网整理以下             //计算PDU编码长度

源代码网整理以下             r:=s s2 s3 s4 s5 ^Z;

源代码网整理以下             cmdlong:=(length(r)-2) div 2;

源代码网整理以下             apdcomport.Open:=true;//打开串行口

源代码网整理以下             apdcomport.Output:=’AT CMGF=0’#13;//设置Modem为PDU模式

源代码网整理以下             delayticks(7,true);//延时

源代码网整理以下             apdcomport.Output:=’AT CMGS=’ inttostr(cmdlong) #13;//设置信息长度,这里应为PDU编码长度的1/2.

源代码网整理以下             delayticks(7,true);

软件开发网 www.mscto.com

源代码网整理以下             apdcomport.Output:=r;//发送短信。

源代码网整理以下             delayticks(9,true);

源代码网整理以下             apdcomport.Open:=false;

源代码网整理以下             apdcomport.Free;

源代码网整理以下            end;

源代码网整理以下            initialization

源代码网整理以下            TAutoObjectFactory.Create(ComServer, Tsms, Class_sms,ciMultiInstance, tmApartment);

软件开发网 www.mscto.com

源代码网整理以下            end.


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华