⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 GPRS/CDMA DTU数据中心源代码,基于DataCenterX控件开发.
💻 PAS
📖 第 1 页 / 共 2 页
字号:

  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 + -