`
金笛子
  • 浏览: 35808 次
社区版块
存档分类
最新评论

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

 
阅读更多
目前大多数的企业及学校内部都建有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。
  安装APRO如图1
  装好后,新建项目。
  选择ActiveX Library
  点击OK后。保存项目命名为jksms.dpr.
  新建一个自动化对象

  命名为:sms点击OK.
  保存单元文件,命名为:main.pas。
  新建方法:sendmsg
  为该方法添加参数。
  Comnumber:GSM Modem所在的串口号。
  Phone:要发送的目的手机号码。
  Msg:发送信息内容。
  完成后单击刷新。
  打开main.pas为该方法写程序。
  以下是main.pas的程序清单:
  unit main;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, jksms_TLB, StdVcl, SysUtils,windows,ADTrmEmu,
OoMisc,registry;
type
Tsms = class(TAutoObject, Isms)
protected
procedure sendmsg(comnumber: Integer; const phone, msg: WideString);
safecall;
{ Protected declarations }
end;
implementation
uses ComServ , adport;//这里需手工添加
function SEncodeMobNO(SmobNO: string): string;
//要想发送中文短信必须使用Modem的PDU方式。这个函数是将手机号码进行PDU编码。
var
 TempPchar: Pchar;
 i: integer;
 Str: string;
begin
 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数组化
 i := 0;
 Str := ’’;
 while i < length(TempPchar) do begin
  Str := Str + TempPchar[i + 1] + TempPchar[i];
  i := i + 2;
 end;
 result := Str;
end;
function EncodeChinese(Input: WideString): string;//将信息内容进行PDU编码
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
 apdcomport:Tapdcomport;
 r,s,s2,s3,s4,s5:string;
 cmdlong,tmp:integer;
 msgs:WideString;
begin
 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;
 //计算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);
 apdcomport.Output:=r;//发送短信。
 delayticks(9,true);
 apdcomport.Open:=false;
 apdcomport.Free;
end;
initialization
TAutoObjectFactory.Create(ComServer, Tsms, Class_sms,ciMultiInstance, tmApartment);
end.
  以上程序编译后生成jksms.dll文件。Copy到web服务器上d:/。运行:regsvr32 d:/jksms.dll。在ASP程序中这样使用。
  Set sms=Server.CreateObject("jksms.sms")
Msg="您好!测试一下好不好用!"
Phone="手机号码"
Port=Modem所在端口号
Sms.sendmsg port,phone,msg
  至此,控件制作完成。此控件在笔者单位已运行至今,一切正常。
转自bbs.sendsms.cn
分享到:
评论

相关推荐

    短信接口delphi源代码DLL_gsmmodem_短信接口_delphi短信接口源码_

    标题中的“短信接口delphi源代码DLL_gsmmodem_短信接口_delphi短信接口源码”揭示了这个压缩包文件包含的是使用Delphi编程语言编写的短信接口源代码,主要针对GSM(Global System for Mobile Communications)模块。...

    GSM-MODEM.rar_DELPHI GSM_短信_短信猫

    标题 "GSM-MODEM.rar_DELPHI GSM_短信_短信猫" 提供的信息表明,这是一个与使用Delphi编程语言开发的GSM模块(通常称为短信猫)相关的项目,主要功能是通过GSM Modem或者手机发送短信。下面将详细阐述这个领域的相关...

    GSM-MODEM.rar_DELPHI GSM_DELPHi modem_delphi modem port_delphi s

    通过串口控件在delphi 7 对GSM modem(短信猫)进行收发短信的简单操作,对初学者帮助很大

    短信猫:又称GSM MODEM,GSM猫,无线猫,短信模块,GSM模块

    除了原装正版的WAVECOM GSM MODEM,自身更是研发了多种型号的短信猫设备,基本上基于WAVECOM核心模块,接口包括串口(RS232)、USB接口、PCI接口、网口等,并提供一系列短信猫开发包及示例程序,支持VC/VC++/VB/...

    基于Delphi的各类短信发送接收原码打包上传

    2. **短信发送**:这涉及到短信协议,如SMPP(Short Message Peer-to-Peer)或者通过GSM Modem的AT命令发送短信。开发者需要理解短信编码(7位、8位、16位)和短信分段等概念。 3. **短信接收**:接收短信可能涉及...

    短信猫(modem gsm)二次开发包

    短信猫(Modem GSM)是一种特殊的通信设备,它允许计算机通过GSM网络发送和接收短信。这个二次开发包是专为程序员设计的,用于利用这种技术集成到自己的应用程序中。以下是一些关于短信猫(Modem GSM)二次开发的...

    短信猫Delphi源码

    2. **sms.dll**:这是一个动态链接库文件,封装了与短信猫硬件交互的底层函数,比如发送短信、接收短信、设置短信猫参数等。开发者可以通过调用这些函数来实现短信服务功能。 3. **Project1.dpr**:这是Delphi项目的...

    手机短信二次开发控件(源码)(真正免费好用,无需注册) (delphi)

    1. 发送短信:控件提供了发送短信的接口,开发者可以通过设置相关参数(如接收号码、短信内容)来实现向指定手机发送短信的功能。这通常涉及到字符串编码、短信编码格式(如7位、8位或16位)的处理。 2. 接收短信:...

    短信群发控件SMSComm

    【短信群发控件SMSComm】是一款用于批量发送短信的软件开发组件,它在IT行业中主要服务于需要进行大规模通信的企业或服务提供商。该控件基于SMComm,解决了之前版本缺失`u_SMSModem.dcu`文件的问题,确保了完整的...

    GSM&CDMA短信猫二次开发接口

    3. 发送短信:调用控件提供的API,输入接收方号码、短信内容,发送短信。 4. 接收短信:设置监听短信事件,当有新短信到达时,触发事件处理函数,读取短信内容。 5. 管理短信存储:可能还包括读取已存短信、删除...

    爱特生彩信开发控件

    无需接入互联网即可实现发送彩信、接收彩信、发送短信、接收短信、发送WAP Push消息、发送彩E等功能,支持群发彩信和信息接收报告, 同时还包含彩信制作、接收彩信解析、彩信文件播放等功能。 爱特生短信彩信...

    基于短信猫的短信管理平台

    短信猫,又称短信Modem,是一种硬件设备,它可以连接到计算机并通过GSM或CDMA网络发送和接收短信。这种设备在企业级应用中广泛使用,如批量短信发送、报警系统、自动通知等。基于短信猫的短信管理平台就是一种利用...

    863短信服务器 短信数据库接口免费(短信中间件)

    你仅需要在指定的表中添加记录,本接口程序就自动进行发送短信了,收到的短信会自动保存到数据库里,所以,您不需要了解任何有关数据通信方面的知识,就可实现发送即时短信、定时短信、循环短信、WAP PUSH短信和接收...

    863短信二次开发数据库接口免费

    你仅需要在指定的表中添加记录,本接口程序就自动进行发送短信了,收到的短信会自动保存到数据库里,所以,您不需要了解任何有关数据通信方面的知识,就可实现发送即时短信、定时短信、循环短信、WAP PUSH短信和接收...

    短信猫开发源码

    例如,AT命令可以用来设置通信参数、拨号、发送短信等。在本项目中,开发者需要编写代码直接向短信猫发送AT指令,并解析其响应,以实现功能。 3. **spcom串口控件**:`spcom`控件是Delphi环境下用于串口通信的一个...

    基于ApdComPort控件的串口通信程序设计.doc

    APRO组件提供了丰富的通信功能,如COM端口控制、RS-485、Modem、Winsock、FRP、GSM等,并且易于使用。ApdComPort控件作为基础组件,可以直接控制串行端口,实现数据的收发。 在使用ApdComPort控件进行串口通信时,...

    GPRS Modem编程

    首先,我们看到一个名为`smsModem.bpr`的文件,这通常是Borland Delphi或Embarcadero C++ Builder的工程文件,它包含了项目的基本设置和依赖关系。这意味着这个项目是用C++ Builder构建的,一个流行的Windows应用...

    Delphi串口及语音传真高级编程随书光盘

    提供APF打印驱动环境,转换文件为传真文件格式、拨号控件、终端控件、FTP控件等,可以实现呼叫中心、Fax系统,实现语音E-mail更简单,为GSM提供SMS服务等。  虽然如此.结合我国电信标准和Modem硬件的实际情况,还是...

    TurboPower Async Professional 4.06

    在Async Professional 4.06中加入这一特性,意味着开发者现在可以直接利用该库处理与GSM设备的PDU级交互,比如发送和接收含有特殊字符或Unicode文本的短信,或者进行更复杂的短信操作,如分段和合并短信。...

    PDU码解析——详细的PDU码教程及解析

    无论是使用VB中的MSCOMM控件,还是其他编程语言如VC++, DELPHI, JAVA, PB, VB等,掌握PDU模式的基本概念都是必不可少的技能。 综上所述,PDU模式不仅涵盖了短消息发送的基础知识,还深入到了高级编码细节,是现代...

Global site tag (gtag.js) - Google Analytics