编写发送短消息的动态链接库来学习Delphi,大家互相交流学习

ztgbasil 2003-10-23 02:09:13
本人是Delphi初学者,想找个东东学习一下Delphi,容易的没什么意思,难的又吃不消,最后决定拿:编写发送短消息的动态链接库来作为练

习的材料,希望想学习Delphi的程序员加入一起学习,也希望各位高手能鼎力相助,同时我还想把最后写好的程序和心得供后来者学习,希望

大家能一起进步,^_^
编写目的:
编写发送短消息的动态链接库。短消息软件现在很流行,而且大家基本上都会用手机发短消息,如果将手机的数据线接入到电脑中,通过电

脑来发短信的话,将会大大提高发短信的速度,更重要的是我们还可以对手机进行功能扩展,做成适合自己的东东。大家也可以直接拿他来开

发有关短消息的软件,由于有源代码,你还可以灵活地改进功能,也可以对客户加以封装。(先编写Delphi版本的,大家以后有兴趣可以写jav

a版本的)
使用资源:SPComm串口通信控件(API的难了点,这个比较方便哦^_^)很多地方都可以下载的哦
接口函数:
InitService()----初始化服务
SendMsg(Info:String); ----发送短消息
RecvMsg():String; -------接收短消息
文件:
---------------------------------------
sms.dpr---DLL工程文件
smsInterface.pas---接口文件
CommService.pas -------串口发送接收服务文件
---------------------------------------
library sms;
uses
ShareMem,
SysUtils,
Classes,
smsInterface in 'smsInterface.pas',
SPComm in 'SPComm.pas',
CommService in 'CommService.pas';

{$R *.res}
exports
InitService,
SendMsg,
RecvMsg;
begin
end.
//-------------------------------------
//--- smsInterface.pas
//-------------------------------------
unit smsInterface;

interface
uses
ShareMem,
SysUtils,
Classes;

procedure InitService();stdcall;
procedure SendMsg(Info:String);stdcall;
function RecvMsg():String;stdcall;

implementation
//初始化服务
procedure InitService();
begin

end;
//发送短消息
procedure SendMsg(Info:String);
begin
//短消息编码,pduData:=PDUEcode(Info);


end;
//接收短消息
function RecvMsg():String;
begin

end;
///////////////////////////////////////////////
end.
//--------------------------------------------------
//--- CommService.pas
//--------------------------------------------------
unit CommService;

interface
type
TSMS=class(TObject)
SCom:TComm;
private
{private declaration}
FSend_Data:String;
FRecv_Data:String;
FPortReceQueue: array[0..50] of String; //接收数据队列
procedure OpenComm(); //打开串口
procedure InitModule(); //初始化TC35模块
procedure SendData(Info:String); //向串口发送数据
procedure SComReceData(Sender:TObject;Buffer:Pointer;BufferLength:Word);
public
{public declaration}
constructor Create(Sender:TObject);
destructor Destroy;override;
end;
var
sms:TSMS; //?是否合理
{----------}
procedure ExtractMsg(sMsg:String);
function TextToPDU(sCenter,sPhone,sMsgBody:String): String;
function PDUEncode(Info:WideString):String;
function ConvertL2R(Msg:String):String;
implementation
constructor TSMS.Create(Sender:TObject);
begin
Inherited Create;
SCom:=TComm.Create(Application);
SCom.OnReceiveData := SComReceData;
OpenComm();
InitModule();
end;

{-----------向串口发送数据-------------------------------------}
procedure TSMS.SendData(Info:String);
var
pDataToWrite:PChar;
nTemp:Integer;
dwSizeOfToWrite:Word;
begin
//注意这个长度的测量,使用Length可能测出的长度比字符串的长度少1个
pDataToWrite:=PChar(Info);
nTemp:=Length(pDataToWrite);
dwSizeOfToWrite:=nTemp;
SCom.WriteCommData(pDataToWrite,dwSizeOfToWrite)
end;

{-----------从串口接收数据-------------------------------------}
procedure TSMS.SComReceData(Sender:TObject;Buffer:Pointer;BufferLength:Word);
var
rBuf: array of byte;
RecvData:String;
I:Integer;
begin
RecvData:='';
SetLength(rBuf,BufferLength);
move(Buffer^,PChar(rBuf),BufferLength);
for I:=0 to BufferLength-1 do
RecvData:=RecvData+IntToHex(rbuf[i],2);
//读取后应马上清空
//将接收的数据存入数据接收队列中去
i:=Length(FPortReceQueue);
if i=50 then exit;
FPortReceQueue[i]:=RecvData;

end;

{-----------打开串口--------------------------------------------}
procedure TSMS.OpenComm();
begin
SCom.CommName :='COM1';
SCom.BaudRate :=9600;
SCom.ByteSize :=_8;
SCom.ParityCheck :=false;
SCom.StopBits :=_1;
SCom.StartComm ;
end;


{--------------初始化模块----------------------------------------}
procedure TSMS.InitModule();
var
cmdAt:String;
begin
//TC35 模块的初始化命令
{初始化命令}
cmdAt:='.....'; //初始化命令
SendData(cmdAt); //发送命令

end;

{----------------------------------------------------------------}
destructor TSMS.Destroy;
begin
SCom.StopComm;

end;



//--------------------------------------------------
//--- SPComm见控件源代码
//---------------------------------------------------
...全文
41 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
da_yu 2004-03-22
  • 打赏
  • 举报
回复
这个东西还是有点价值的。
lizhigan 2004-03-22
  • 打赏
  • 举报
回复
不要做了,我已做烂了,没劲,你要我给你原程序都可以
bestztg 2004-03-22
  • 打赏
  • 举报
回复
有兴趣
Bellamy 2004-03-19
  • 打赏
  • 举报
回复
很有兴趣可是最近没有时间,这个星期就要出差了,要进行全省的巡检啦!
ercnet 2004-03-19
  • 打赏
  • 举报
回复
UP
dance_code 2004-03-19
  • 打赏
  • 举报
回复
楼主精神可佳,up
cnhxjtoa 2004-03-19
  • 打赏
  • 举报
回复
是源创??
da_yu 2003-10-23
  • 打赏
  • 举报
回复
学习!
delphi1234567 2003-10-23
  • 打赏
  • 举报
回复
除电脑之外,通过此发短讯还需要什么设备?手机及连线?????
ztgbasil 2003-10-23
  • 打赏
  • 举报
回复
当然是通过电脑发了,俺的手掌很大,手指一接触手机就是同时按下好几个键哦,^_^
收发短信都用电脑
redcola 2003-10-23
  • 打赏
  • 举报
回复
楼主,是通过电脑发还是通过手机发?
ztgbasil 2003-10-23
  • 打赏
  • 举报
回复
上面只是一个框架,大家有兴趣学习的可以发表一下补充修改意见,希望大家最后完成的是一个很好开源程序。学习Delphi的人可以从中学到不少东东,这里涉及到字符串的转换,进制转换,接口设计,动态链接库原理,多线程机制等等;等完成了这个程序,相信再去重新温习一下Delphi后,会有更大的收获。同时希望对短信编程有经验的兄弟经常来赐教,大伙会感谢您们的。填充或修改的程序,希望大家能够有个详细的注释,因为这个还要面对初学Delphi的兄弟的,比如像我(好像我是吃饱了没事干似的^_^)。

上面在文件最后少了一个 End.
大家也可以在QQ上和我聊:
QQ:79451849
E-mail: ztgdocu@yahoo.com.cn

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧