📄 spformunit.~pas
字号:
unit SpFormUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp,CMPP20, ComCtrls;
type
TSpForm = class(TForm)
SpClientSocket: TClientSocket;
StatusBar1: TStatusBar;
procedure SpClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure SpClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
sequence:Cardinal;
public
{ Public declarations }
msgh:MsgHeader;
function GetSequence():Cardinal;
end;
var
SpForm: TSpForm;
const
SP_ID='910007';
implementation
{$R *.dfm}
procedure TSpForm.SpClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
connect:CMPP_Connect;
astr:String;
msg_len:Cardinal;
begin
statusbar1.Panels[0].Text:='已建立TCP连接';
InitConnect(connect,SP_ID,CMPP_VERSION);
astr:=StrConnect(connect);
msg_len:=Length(astr)+12;
InitMsgHeader(msgh,msg_len,Cmd_Connect,GetSequence);
astr:=StrMsgHeader(msgh)+astr;
SpClientSocket.Socket.SendText(astr);
end;
procedure TSpForm.FormCreate(Sender: TObject);
begin
SpClientSocket.Open;
sequence:=0;
end;
function TSpForm.GetSequence: Cardinal;
begin
if sequence=High(sequence) then
sequence:=0
else
sequence:=sequence+1;
result:=sequence;
end;
procedure TSpForm.SpClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
var
sub:CMPP_Submit;
astr:String;
msgh:MsgHeader;
connect:CMPP_Connect;
connect_resp:CMPP_Connect_RESP;
sub_resp:CMPP_Submit_RESP;
deliver:CMPP_Deliver;
sub_statrep:CMPP_Submit_StatREP;
deliver_resp:CMPP_Deliver_RESP;
active_test_resp:CMPP_Active_Test_RESP;
total_length:Cardinal;
begin
astr:=socket.ReceiveText;
//for msgh
msgh:=RecMsgHeader(Copy(astr,1,12));
total_length:=msgh.Total_Length;
case msgh.Command_Id of
Cmd_Connect_RESP:
begin
connect_resp:=RecConnectRESP(Copy(astr,13,total_length-12));
showmessage('CMPP_Connect_RESP!');
showmessage('test='+IntToStr(connect_resp.Version));
end;
Cmd_Submit_RESP:
begin
sub_resp:=RecSubmitRESP(Copy(astr,13,total_length-12));
showmessage('CMPP_Submit_RESP!');
showmessage('Result='+IntToStr(sub_resp.Result));
end;
Cmd_Deliver:
begin
deliver:=RecDeliver(Copy(astr,13,total_length-12));
showmessage('CMPP_Deliver!');
if deliver.Registered_Delivery<>0 then
begin
sub_statrep:=RecSubmitStatREP(deliver.Msg_Content);
showmessage(sub_statrep.Dest_Terminal_Id);
end
else
showmessage(deliver.Msg_Content);
end;
Cmd_Active_Test:
begin
showmessage('CMPP_Active_Test');
end;
Cmd_Active_Test_RESP:
begin
active_test_resp:=RecActiveTestRESP(Copy(astr,13,total_length-12));
showmessage('CMPP_Active_Test_RESP!');
showmessage(IntToStr(active_test_resp.Reserved));
end;
else
showmessage('Bad Command ID!');
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -