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