{------------------------------------------------------------------------------}
|
{µ¥ÔªÃû³Æ£º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.
|