From 868daf94f29ce1ffdd799a68c07bb668cd373bcd Mon Sep 17 00:00:00 2001 From: HP\李良庭 <liliangting@lanpucloud.cn:1111> Date: 星期二, 08 七月 2025 11:49:03 +0800 Subject: [PATCH] 提交分辨率自适应版本V3.1.0.1500 --- src/uDM.pas | 128 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 128 insertions(+), 0 deletions(-) diff --git a/src/uDM.pas b/src/uDM.pas new file mode 100644 index 0000000..4181a7a --- /dev/null +++ b/src/uDM.pas @@ -0,0 +1,128 @@ +{------------------------------------------------------------------------------} +{单元名称: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. -- Gitblit v1.9.3