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/thread/verifyThread.~pas | 142 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 142 insertions(+), 0 deletions(-) diff --git a/src/thread/verifyThread.~pas b/src/thread/verifyThread.~pas new file mode 100644 index 0000000..eb53109 --- /dev/null +++ b/src/thread/verifyThread.~pas @@ -0,0 +1,142 @@ +{------------------------------------------------------------------------------} +{单元名称:verifyThread.pas } +{模块名称:计算校准线程 } +{模块说明:线程创建后自动运行,完成一组校准检验,共五组 } +{建立日期:2023-11-01 } +{修改修改:2023-11-01 } +{版权所有:李良庭 liangtingli@outlook.com } +{------------------------------------------------------------------------------} +unit verifyThread; + +interface + +uses + Windows, Classes, SysUtils, PubUtils, DateUtils, sBitBtn, ActuatorLib; + +type + TVerifyThread = class(TThread) + private + { Private declarations } + t_ret : Integer; + t_nVcc : Word; + procedure UpdateStartClock; + procedure UpdateStopClock; + procedure UpdateTest; + procedure UpdateTestError; + procedure UpdateCaption; + protected + procedure startVerify(); + procedure Execute; override; + public + constructor Create(param: Boolean=false); + procedure Terminate; + end; + +implementation + +uses + uMain, uDM, uInit, uSaveData, Global, log4me; + +{ TVerifyThread } +//--------线程初始化---------------------------------------- +//线程初始化 +constructor TVerifyThread.Create(param: Boolean=false); +begin + //线程停止后自动释放 + inherited Create(param); //设置线程运行, False-自动运行, True-手动启动 + FreeOnTerminate := True; //设置线程退出自动销 + t_ret := 0; + t_nVcc:= 0; +end; + +//线程销毁事件 +procedure TVerifyThread.Terminate; +begin + inherited; + m_VerifyThread := 0; //清理线程句柄 +end; + +//--------界面处理函数-------------------------------------- +//计数器开始 +procedure TVerifyThread.UpdateStartClock; +begin + //启动检测计时器动画 + glStartTest := GetMillisecondTimeStamp; + dm.tmVerify.Enabled := true; +end; + +//计数器结束 +procedure TVerifyThread.UpdateStopClock; +begin + dm.tmVerify.Enabled := false; + frmMain.mtVerifyClock.Value := 0; +end; + +//--------------------------------------------------------- +//正常显示--执行检测 +procedure TVerifyThread.UpdateTest; +begin + //更新界面信息 + frmMain.lblVerify.Caption := '校准一组系数成功!'; +end; + +//出错显示--执行检测出错 +procedure TVerifyThread.UpdateTestError; +begin + //更新界面信息 + frmMain.lblVerify.Caption := '校准测试失败,水分仪故障!'; +end; + +procedure TVerifyThread.UpdateCaption; +begin + with frmMain do begin + case glBtnTag of + 1: edtTest1.Text := IntToStr(t_nVcc); + 2: edtTest2.Text := IntToStr(t_nVcc); + 3: edtTest3.Text := IntToStr(t_nVcc); + 4: edtTest4.Text := IntToStr(t_nVcc); + 5: edtTest5.Text := IntToStr(t_nVcc); + end; + end; +end; + +//------- 执行线程 ---------------------------------------- +procedure TVerifyThread.StartVerify(); +begin + //返回值 + t_ret := 0; + + //下发水分仪启动指令 + Synchronize(UpdateStartClock); + t_ret := SendCommands(hWrDev, WR_VERIFY, glTime2); + Synchronize(UpdateStopClock); + if t_ret<0 then begin + Synchronize(UpdateTestError); + Exit; + end; + + //从水分仪器读取数据 + ReadVcc(hWrDev, @t_nVcc); + Synchronize(UpdateTest); + + //输出计算含水率 + Synchronize(UpdateCaption); +end; + +//------- 线程入口 ---------------------------------------- +procedure TVerifyThread.Execute; +begin + { Place thread code here } + try + //执行检测代码 + StartVerify(); + //防止线程阻塞CPU + Sleep(1); + finally + //销毁线程 + //m_VerifyThread := 0; + Terminate; + end; +end; + +end. -- Gitblit v1.9.3