首页  编辑  

如何通过PC用手机发送短信

Tags: /超级猛料/Network.网络通讯/BP短讯和手机短消息/   Date Created:

gordon9673 :用PC通过手机发送短信?我是用手机数据线来发送的,例如用我的PC连好了NOKIA6110的数据线,通过COM1来连接,我察过资料,我的想法是,先用CREATEFILE创建连接,然后用WRITEFILE来传送我的消息,nokia的手机大部分都支持TEXT的格式,是吧,例如,我在EDIT中输入:'AT ?',然后用WRITEFILE向COM1发送数据,这样可以吗?如果可以,拿我怎么接收它的返回信息呢?(显示在MEON1)上。

deathcat:发送短消息有很多种方法.第一:控制手机,第二:控制GSM模块,第三:通过短消息网关。在GSM协议中.有MT,ME,不知道你说的究竟是什么,说清楚点。

1.去查阅AT命令集+GSM0707协议+GSM0705协议.

2.从手机制造商哪里下载软件.

根据AT命令集.没有"AT?"这个命令.(但是不知道NOKIA有没有).标准的text文本发送模式:

发送:

at+cmgs="+86(手机号码)"+#13+#10

返回:

>

发送:

消息内容

返回:

+CMGS [发送标号]

OK

至于接收.你用的应该是Comm控件吧,当ReceiveCount>0的时候,缓冲区有数据,用Input的方法就可以读出来了.

gordon9673 :谢谢。我还想知道用PDU格式发送时,必须把AT命令转化成16进制的数吗?该怎么转换?

gordon9673 (gody) :

这个好象可以啊

http://www.yiwant.com/download1.htm

电脑连接手机收发短消息的二次开发工具,包括一个实现短消息收发功能的DLL、函数说明和一个DELPH程序源代码。

www.yiwant.com/cgi-bin/click.cgi?job=down&filename=sms-delphi

部分程序:

mplementation

{$R *.DFM}

//=============DLL 函数调用声明 开始 =========

   procedure ConnectToMobile;stdcall; external 'SMSLIB.DLL';

   procedure DisconnectToMobile;stdcall; external 'SMSLIB.DLL';

   Function  IsConnected:boolean;stdcall; external 'SMSLIB.DLL';

   Function  IsBusy:boolean;stdcall; external 'SMSLIB.DLL';

   procedure InitMobile;stdcall; external 'SMSLIB.DLL';

   procedure SetSMC(SMC:PChar);stdcall; external 'SMSLIB.DLL';

   Function SendSMS(phone,text:PChar):boolean;stdcall; external 'SMSLIB.DLL';

   Function ReadSMS(Text,sendnum,smc,time:PChar):boolean;stdcall; external 'SMSLIB.DLL';

//=============DLL 函数调用声明 结束 =========

procedure TForm1.Button1Click(Sender: TObject);

begin

   ConnectToMobile;

   memo2.Lines.Add ('已经发出连接命令。');

   sleep(4000);     //等待4秒,等待手机准备好

   while not IsConnected do ;  //直到连接成功

   memo2.Lines.Add ('已经连接到手机。');

   InitMobile;

   memo2.Lines.Add ('已经初始化。');

   SetSMC(PChar(SMC.Text ));

   memo2.Lines.Add ('短信中心设置成功。');

end;

deathcat:

使用pdu格式可以啊。

at+cmgf=0  ----使用pdu模式

at+cmgf=1  ----使用text模式

但是,你首先要看nokia的手机是否支持pdu格式。

不过,我想应该是支持的。

因为text模式不支持中文短消息。

你要先查查pdu格式手册,每一个短信中心的pdu格式不是很一致的。

没有必要做什么16进制的转换啊。如果发送中文,那么用的是uc2码。

比如说发送给手机号码为123456789ab的手机发送1234。那么pdu格式应该是

0891683108200905f011000b816821436587a9fb0004+短信息内容长度(16进制)+短信息内容