📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Send: TButton;
Button2: TButton;
jshm: TEdit;
fsnr: TMemo;
GroupBox1: TGroupBox;
Label2: TLabel;
GroupBox2: TGroupBox;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
jsnr: TMemo;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Button3: TButton;
cwxx: TMemo;
sqhm: TEdit;
Label8: TLabel;
Memo2: TMemo;
Device: TEdit;
Label9: TLabel;
Label10: TLabel;
Label7: TLabel;
Memo3: TMemo;
pb1: TProgressBar;
Label11: TLabel;
status1: TEdit;
Baud: TEdit;
Memo1: TMemo;
Button1: TButton;
Memo4: TMemo;
Button4: TButton;
sendState: TCheckBox;
isClear: TCheckBox;
procedure FormDestroy(Sender: TObject);
procedure SendClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{ 获取短信猫授权机器码}
function GSMModemAutoTest():PChar;
stdcall; external 'GSMMultiPort.dll' name 'GSMModemAutoTest';
{ 初始化gsm modem,并连接gsm modem}
function GSMModemInit(device:PChar;
baudrate:PChar;
initstring:PChar;
charset:PChar;
swHandshake:Boolean;
sn:PChar):Boolean;
stdcall; external 'GSMMultiPort.dll' name 'GSMModemInit';
{ 获取短信猫授权机器码}
function GSMModemGetSnInfo(device:PChar;
baudrate:PChar):PChar;
stdcall; external 'GSMMultiPort.dll' name 'GSMModemGetSnInfo';
{ 获得错误信息}
function GSMModemGetErrorMsg(device:PChar):PChar;
stdcall; external 'GSMMultiPort.dll' name 'GSMModemGetErrorMsg';
{ 断开连接并释放内存空间}
procedure GSMModemRelease(device:PChar)
stdcall; external 'GSMMultiPort.dll' name 'GSMModemRelease';
{ 连接状态}
function GSMModemIsConn(device:PChar):Boolean;
stdcall; external 'GSMMultiPort.dll' name 'GSMModemIsConn';
{ 发送短信息}
function GSMModemSMSsend(device:PChar;
serviceCenterAddress:PChar;
encodeval:Integer;
text:PChar;
textlen:Integer;
phonenumber:PChar;
requestStatusReport:Boolean):Boolean;
stdcall; external 'GSMMultiPort.dll' name 'GSMModemSMSsend';
{ 接收短信息}
function GSMModemSMSReadAll(device:PChar;RD_opt:Integer):PChar;
stdcall; external 'GSMMultiPort.dll' name 'GSMModemSMSReadAll';
{$R *.dfm}
procedure TForm1.FormDestroy(Sender: TObject);
begin
end;
{ 发送短信}
procedure TForm1.SendClick(Sender: TObject);
var
smscontent: PChar;
number:PChar;
smslen: Integer;
begin
//0) 格式检查
if jshm.Text = '' then
begin
showmessage('接收号码不能为空!');
Exit;
end;
if fsnr.Text = '' then
begin
showmessage('发送内容不能为空!');
Exit;
end;
//1)连接设备
status1.Text := '正在发送短信,请稍等 ......';
pb1.Position := 50;
//2) 发送短信
number :=PChar(jshm.Text);
smscontent := PChar(fsnr.Text);
smslen := Length(PChar(fsnr.Text));
if GSMModemSMSsend(PChar(Device.Text),nil,8,smscontent,smslen,number,sendState.Checked) = True then
showmessage('GSMModemSMSsend: 短信发送成功!')
else
begin
showmessage('GSMModemSMSsend: 短信发送失败:' + GSMModemGetErrorMsg(PChar(Device.Text)));
Exit;
end;
//3) 显示错误信息
cwxx.Text := GSMModemGetErrorMsg(PChar(Device.Text));
status1.Text := '发送短信完毕!';
pb1.Position := 100;
end;
{ 读取短信}
procedure TForm1.Button2Click(Sender: TObject);
begin
status1.Text := '正在读取短信,请稍等 ......';
pb1.Position := 50;
//2) 读取短信
if isClear.Checked = True then
jsnr.Text := GSMModemSMSReadAll(PChar(Device.Text),0)
else
jsnr.Text := GSMModemSMSReadAll(PChar(Device.Text),1);
//3) 显示错误信息
cwxx.Text := GSMModemGetErrorMsg(PChar(Device.Text));
status1.Text := '读取短信完毕!';
pb1.Position := 100;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
cwxx.Text := GSMModemGetErrorMsg(PChar(Device.Text));
end;
{ 连接设备}
procedure TForm1.Button1Click(Sender: TObject);
begin
//1)检查输入参数
if Device.Text = '' then
begin
showmessage('请指定通讯端口!');
Device.SetFocus();
Exit;
end;
if Baud.Text = '' then
begin
showmessage('请指定通讯波特率!');
Baud.SetFocus();
Exit;
end;
if sqhm.Text = '' then
begin
showmessage('请输入授权号码!');
sqhm.SetFocus();
Exit;
end;
//2)连接设备
status1.Text := '正在连接设备,请稍等 ......';
pb1.Position := 50;
if GSMModemInit(PChar(Device.Text),PChar(Baud.Text),nil,nil,false,PChar(sqhm.Text)) = True then
showmessage('GSMModemInit: 连接成功!')
else
begin
showmessage('GSMModemInit: 连接失败:' + GSMModemGetErrorMsg(PChar(Device.Text)));
end;
//3)显示信息
cwxx.Text := GSMModemGetErrorMsg(PChar(Device.Text));
status1.Text := '连接完毕!';
pb1.Position := 100;
end;
{ 退出}
procedure TForm1.Button4Click(Sender: TObject);
begin
self.Close;
end;
{ 关闭的时候释放资源}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if GSMModemIsConn(PChar(Device.Text)) = True then
GSMModemRelease(PChar(Device.Text))
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -