{------------------------------------------------------------------------------}
|
{µ¥ÔªÃû³Æ£ºuDM.pas }
|
{Ä£¿éÃû³Æ£ºÈ«¾ÖÊý¾ÝÄ£Ðͼ¯ }
|
{Ä£¿é˵Ã÷£º°üÀ¨È«¾Ö¶¨Ê±Æ÷¡¢Êý¾Ý´æ´¢µÈ }
|
{½¨Á¢ÈÕÆÚ£º2023-10-24 }
|
{ÐÞ¸ÄÐ޸ģº2024-07-08 }
|
{°æÈ¨ËùÓУºÀîÁ¼Í¥ liangtingli@outlook.com }
|
{------------------------------------------------------------------------------}
|
|
unit uDM;
|
|
interface
|
|
uses
|
SysUtils, Classes, ExtCtrls, PubUtils, IdBaseComponent, IdComponent,
|
IdUDPBase, IdUDPClient;
|
|
type
|
Tdm = class(TDataModule)
|
tmClock: TTimer;
|
tmManTest: TTimer;
|
tmAutoTest: TTimer;
|
tmVerify: TTimer;
|
tmRegFault: TTimer;
|
tmInter: TTimer;
|
tmReset: TTimer;
|
IdUDPClient1: TIdUDPClient;
|
tmHeart: TTimer;
|
procedure tmClockTimer(Sender: TObject);
|
procedure tmManTestTimer(Sender: TObject);
|
procedure tmAutoTestTimer(Sender: TObject);
|
procedure tmVerifyTimer(Sender: TObject);
|
procedure tmRegFaultTimer(Sender: TObject);
|
procedure tmInterTimer(Sender: TObject);
|
procedure tmResetTimer(Sender: TObject);
|
procedure tmHeartTimer(Sender: TObject);
|
procedure DataModuleCreate(Sender: TObject);
|
private
|
{ Private declarations }
|
public
|
{ Public declarations }
|
end;
|
|
var
|
dm: Tdm;
|
|
implementation
|
|
uses
|
uMain, global;
|
|
{$R *.dfm}
|
|
procedure Tdm.tmClockTimer(Sender: TObject);
|
begin
|
with frmMain do begin
|
//×Ô¶¯Ä£Ê½-ʱÖÓ
|
ssYear.Value := StrToInt(FormatDateTime('YYYY',Now()));
|
ssMonth.Value := StrToInt(FormatDateTime('MM',Now()));
|
ssDay.Value := StrToInt(FormatDateTime('DD',Now()));
|
ssClock.Time := Now();
|
|
//ÊÖ¶¯Ä£Ê½-ʱÖÓ
|
ssYear1.Value := StrToInt(FormatDateTime('YYYY',Now()));
|
ssMonth1.Value := StrToInt(FormatDateTime('MM',Now()));
|
ssDay1.Value := StrToInt(FormatDateTime('DD',Now()));
|
ssClock1.Time := Now();
|
end;
|
end;
|
|
procedure Tdm.tmAutoTestTimer(Sender: TObject);
|
begin
|
frmMain.mtAutoClock.Value := (GetMillisecondTimeStamp - glStartTest)/1000;
|
end;
|
|
procedure Tdm.tmManTestTimer(Sender: TObject);
|
begin
|
frmMain.mtManClock.Value := (GetMillisecondTimeStamp - glStartTest)/1000;
|
end;
|
|
procedure Tdm.tmVerifyTimer(Sender: TObject);
|
begin
|
frmMain.mtVerifyClock.Value := (GetMillisecondTimeStamp - glStartTest)/1000;
|
end;
|
|
//×¢²áʧ°Ü£¬Æô¶¯Í˳öϵͳ¶¨Ê±Æ÷
|
procedure Tdm.tmRegFaultTimer(Sender: TObject);
|
begin
|
frmMain.Close;
|
end;
|
|
//µ÷Õû½Ø¾àµÄ¼ÆÊ±Æ÷
|
procedure Tdm.tmInterTimer(Sender: TObject);
|
begin
|
frmMain.mtInterClock.Value := (GetMillisecondTimeStamp - glStartTest)/1000;
|
end;
|
|
procedure Tdm.tmResetTimer(Sender: TObject);
|
begin
|
frmMain.lblMaintain.Caption := Format('Ìáʾ£ºË®·ÖÒÇ [¸´Î»] ÖУ¬ÇëµÈ´ý %.3f Ãë.',
|
[(GetMillisecondTimeStamp - glStartTest)/1000]);
|
end;
|
|
//------------------------------------------------------------------------------
|
//Ïò¹Ì¶¨IPºÍport·¢×Ö·û´®'4'ÐÄÌø
|
procedure Tdm.tmHeartTimer(Sender: TObject);
|
var
|
HeartbeatStr: string;
|
begin
|
HeartbeatStr := '4'; // ÐÄÌø×Ö·û´®
|
try
|
IdUDPClient1.Send(HeartbeatStr); // ·¢ËÍÐÄÌøÐÅÏ¢
|
except
|
on E: Exception do
|
frmMain.lblAutoRet_error.Caption := 'UDP ÐÄÌø·¢ËÍʧ°Ü: ' + E.Message; // ´íÎó´¦Àí
|
end;
|
end;
|
|
procedure Tdm.DataModuleCreate(Sender: TObject);
|
begin
|
IdUDPClient1.Host := PlcConn.heart_ip;
|
IdUDPClient1.Port := PlcConn.heart_port;
|
IdUDPClient1.Active := true;
|
tmHeart.Interval := 1*1000; //1sÒ»´Î
|
tmHeart.Enabled := true;
|
end;
|
|
end.
|