📄 unit1.pas
字号:
for i:=0 to listview1.Items.Count-1 do
begin
listitem:=listview1.Items[i];
if listitem.StateIndex=1 then listitem.ImageIndex:=0;
end;
end;
procedure TfrmMain.DataCenterX1SysError(Sender: TObject; ErrorCode: Integer;
const ErrorMessage, DTUID: WideString);
begin
memo1.Lines.Add(datetimetostr(now)+' 系统错误:dtuid='+dtuid+',错误消息='+errormessage);
end;
procedure TfrmMain.Button6Click(Sender: TObject);
begin
datacenterx1.DeleteAllDTU;
datacenterx1.AddDTU('zsgprs01','123456');
datacenterx1.AddDTU('zsgprs02','123456');
datacenterx1.AddDTU('zsgprs03','123456');
end;
procedure TfrmMain.btStartServiceClick(Sender: TObject);
var i,j:integer;
begin
try
i:=datacenterx1.StartService(serviceport);
if i=-1 then
begin
j:=datacenterx1.GetLastError;
memo1.Lines.Add(datetimetostr(now)+' 服务启动失败');
exit;
end;
timer1.Enabled:=true;
btstartservice.Enabled:=false;
btstopservice.Enabled:=true;
menustartservice.Enabled:=false;
menustopservice.Enabled:=true;
timer1.Enabled:=true;
if i=0 then memo1.Lines.Add(datetimetostr(now)+' 服务启动成功,服务端口号='+inttostr(serviceport))
else memo1.Lines.Add(datetimetostr(now)+' 服务启动失败');
except
memo1.Lines.Add(datetimetostr(now)+' 服务启动失败');
end;
end;
procedure TfrmMain.btStopServiceClick(Sender: TObject);
begin
datacenterx1.StopService;
timer1.Enabled:=false;
btstartservice.Enabled:=true;
btstopservice.Enabled:=false;
menustartservice.Enabled:=true;
menustopservice.Enabled:=false;
memo1.Lines.Add(datetimetostr(now)+' 服务停止');
end;
procedure ShowDTUS;
var i,j:integer;
listitem:tlistitem;
begin
with form1 do
begin
listview1.Clear;
for i:=0 to datacenterx1.GetDTUCount-1 do
begin
listitem:=listview1.Items.Add;
listitem.StateIndex:=0; listitem.ImageIndex:=-1;
for j:=1 to 10 do listitem.SubItems.add('');
listitem.Caption:=datacenterx1.GetDTUIDByPos(i);
showdtu(datacenterx1.GetDTUIDByPos(i));
end;
end;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var listitem:tlistitem;
begin
serviceport:=65000;
datacenterx1.Init;
datacenterx1.DeleteAllDTU;
datacenterx1.AddDTU('zsgprs01','123456');
datacenterx1.AddDTU('zsgprs02','123456');
datacenterx1.AddDTU('zsgprs03','123456');
ShowDTUS();
btStartServiceClick(sender);
end;
procedure TfrmMain.MenuStopServiceClick(Sender: TObject);
begin
btStopServiceClick(sender);
end;
procedure TfrmMain.MenuStartServiceClick(Sender: TObject);
begin
btStartServiceClick(sender);
end;
procedure TfrmMain.FormActivate(Sender: TObject);
begin
// if btStartService.Enabled=true then btStartServiceClick(sender);
end;
procedure TfrmMain.suiButton1Click(Sender: TObject);
var i,j:integer;
listitem:tlistitem;
hexstr:string;
s:string;
ws:widestring;
p:pchar;
k:integer;
begin
if memo2.text='' then exit;
if listview1.SelCount=0 then
begin
showmessage('请选中接收数据的DTU');
exit;
end;
for j:=1 to strtoint(combobox2.text) do
begin
for i:=0 to listview1.Items.Count-1 do
begin
listitem:=listview1.Items[i];
if listitem.Selected=false then continue;
if listitem.StateIndex=1 then
begin
s:=memo2.text;
setlength(ws,length(s));
p:=@ws[1];
for k:=1 to length(s) do p[k-1]:=s[k];
datacenterx1.SendData(listitem.Caption,ws,length(s));
if listitem.SubItems[8]='' then listitem.SubItems[8]:='0';
listitem.SubItems[8]:= inttostr(strtoint(listitem.SubItems[8])+length(memo2.text));
//showdtu(listitem.Caption);
application.ProcessMessages;
listitem.ImageIndex:=2;
sleep(10);
if hex1.Checked then hexstr:=' {HEX:'+texttohexstr(memo2.text)+'}';
memo1.lines.add(datetimetostr(now)+' 发送数据到'+ listitem.Caption+' 数据内容:'+memo2.text+hexstr);
end;
end;
end;
end;
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if btstopservice.Enabled then
begin
showmessage('请先停止服务,才能退出');
action:=canone;
end;
end;
procedure TfrmMain.N1Click(Sender: TObject);
begin
listview1.ViewStyle:=vsreport;
end;
procedure TfrmMain.N2Click(Sender: TObject);
begin
listview1.ViewStyle:=vssmallicon;
end;
procedure TfrmMain.DataCenterX1DTULogout(Sender: TObject;
const DTUID: WideString);
var i:integer;
listitem:tlistitem;
begin
memo1.lines.Add(datetimetostr(now)+' '+'收到注销,dtuid='+dtuid);
showdtu(dtuid);
end;
procedure TfrmMain.N3Click(Sender: TObject);
var s:string;
begin
s:=inttostr(serviceport);
inputquery('服务端口号设置','请输入服务端口号(1025-65535):',s);
try
serviceport:=strtoint(s);
except
showmessage('输入非法,请输入1025-65535之间的整数');
end;
end;
procedure TfrmMain.MenuExitClick(Sender: TObject);
begin
if btstopservice.Enabled then
begin
showmessage('请先停止服务,才能退出');
end
else application.Terminate;
// application.ProcessMessages;
end;
procedure TfrmMain.DTU2Click(Sender: TObject);
begin
frmAddDTU.showmodal;
end;
procedure TfrmMain.DTU3Click(Sender: TObject);
var i:integer;
begin
if listview1.SelCount=0 then
begin
showmessage('请先选中要删除的DTU');
end;
for i:=0 to listview1.Items.Count-1 do
begin
if listview1.Items[i].Selected then
begin
datacenterx1.DeleteDTU(listview1.Items[i].Caption);
end;
end;
showdtus;
end;
procedure TfrmMain.DTU6Click(Sender: TObject);
var i:integer;
begin
for i:=0 to listview1.Items.Count-1 do
begin
datacenterx1.DeleteDTU(listview1.Items[i].Caption);
end;
showdtus;
end;
procedure TfrmMain.DTU4Click(Sender: TObject);
var i:integer;
begin
if listview1.SelCount=0 then
begin
showmessage('请先选中要关闭的DTU');
end;
for i:=0 to listview1.Items.Count-1 do
begin
if listview1.Items[i].Selected then
begin
datacenterx1.CloseDTU(listview1.Items[i].Caption,0);
end;
end;
showdtus;
end;
procedure TfrmMain.DTU5Click(Sender: TObject);
var i:integer;
begin
for i:=0 to listview1.Items.Count-1 do
begin
datacenterx1.CloseDTU(listview1.Items[i].Caption,0);
end;
showdtus;
end;
procedure TfrmMain.N7Click(Sender: TObject);
var i:integer;
begin
if listview1.SelCount=0 then
begin
showmessage('请先选中要关闭的DTU');
end;
for i:=0 to listview1.Items.Count-1 do
begin
if listview1.Items[i].Selected then
begin
listview1.Items[i].SubItems[8]:='0';
listview1.Items[i].SubItems[9]:='0';
end;
end;
end;
procedure TfrmMain.HEX1Click(Sender: TObject);
begin
hex1.Checked:=not hex1.Checked;
panel3.Visible:=hex1.Checked ;
memo6.Visible:=hex1.Checked ;
end;
procedure TfrmMain.Memo2Change(Sender: TObject);
begin
memo6.Text:=texttohexstr(memo2.text);
end;
procedure TfrmMain.SpeedButton1Click(Sender: TObject);
begin
memo2.Text:=memo2.text+chr(strtohex(edit3.text));
end;
procedure TfrmMain.N9Click(Sender: TObject);
begin
frmRemotecfg.Show;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -