{------------------------------------------------------------------------------}
|
{µ¥ÔªÃû³Æ£ºvreadyThread.pas }
|
{Ä£¿éÃû³Æ£ºÐ£×¼-×¼±¸Ïß³Ì }
|
{Ä£¿é˵Ã÷£ºÏ̴߳´½¨ºó×Ô¶¯ÔËÐУ¬Íê³ÉÁ¸ÖÖÏ·¢ }
|
{½¨Á¢ÈÕÆÚ£º2023-11-09 }
|
{ÐÞ¸ÄÐ޸ģº2023-11-09 }
|
{°æÈ¨ËùÓУºÀîÁ¼Í¥ liangtingli@outlook.com }
|
{------------------------------------------------------------------------------}
|
|
unit vreadyThread;
|
|
interface
|
|
uses
|
Windows, Classes, SysUtils, PubUtils, DateUtils, ActuatorLib;
|
|
type
|
TvreadyThread = class(TThread)
|
private
|
{ Private declarations }
|
t_ret : Integer; //·µ»ØÖµ
|
t_nDatas : array[0..3] of Word; //ÔÝ´æË®·ÖÒÇÊý¾Ý
|
|
procedure UpdateStartClock;
|
procedure UpdateStopClock;
|
procedure UpdateGrain;
|
procedure UpdateGrainError;
|
protected
|
procedure StartVReady();
|
procedure Execute; override;
|
public
|
constructor Create(param: Boolean=false);
|
procedure Terminate;
|
end;
|
|
implementation
|
|
uses
|
uMain, uDM, uInit, uSaveData, Global, log4me;
|
|
{ TvreadyThread }
|
|
//--------Ï̳߳õʼ»¯----------------------------------------
|
//Ï̳߳õʼ»¯
|
constructor TVReadyThread.Create(param: Boolean=false);
|
begin
|
//Ïß³ÌÍ£Ö¹ºó×Ô¶¯ÊÍ·Å
|
inherited Create(param); //ÉèÖÃÏß³ÌÔËÐÐ, False-×Ô¶¯ÔËÐÐ, True-ÊÖ¶¯Æô¶¯
|
FreeOnTerminate := True; //ÉèÖÃÏß³ÌÍ˳ö×Ô¶¯Ïú
|
//·µ»ØÖµ
|
t_ret := 0;
|
//³õʼ»¯Ë®·ÖÒÇÊý×é
|
t_nDatas[0] := 0;
|
t_nDatas[1] := 0;
|
t_nDatas[2] := 0;
|
t_nDatas[3] := 0;
|
end;
|
|
//Ïß³ÌÏú»Ùʼþ
|
procedure TVReadyThread.Terminate;
|
begin
|
inherited;
|
m_vReadyThread := 0; //ÇåÀíÏ߳̾ä±ú
|
end;
|
|
//--------½çÃæ´¦Àíº¯Êý--------------------------------------
|
//¼ÆÊýÆ÷¿ªÊ¼
|
procedure TVReadyThread.UpdateStartClock;
|
begin
|
//Æô¶¯¼ì²â¼ÆÊ±Æ÷¶¯»
|
glStartTest := GetMillisecondTimeStamp;
|
dm.tmVerify.Enabled := true;
|
end;
|
|
//¼ÆÊýÆ÷½áÊø
|
procedure TVReadyThread.UpdateStopClock;
|
begin
|
dm.tmVerify.Enabled := false;
|
frmMain.mtVerifyClock.Value := 0;
|
end;
|
|
//---------------------------------------------------------
|
//Õý³£ÏÔʾ--ÐÞ¸ÄÁ¸ÖÖÐÅÏ¢
|
procedure TVReadyThread.UpdateGrain;
|
begin
|
//¸üнçÃæÐÅÏ¢
|
frmMain.lblVerify.Caption := 'Á¸Ê³Æ·ÖÖÐ޸ijɹ¦£¬Ð£×¼¾ÍÐ÷£¡';
|
end;
|
|
//³ö´íÏÔʾ--ÐÞ¸ÄÁ¸ÖÖ³ö´í
|
procedure TVReadyThread.UpdateGrainError;
|
begin
|
//¸üнçÃæÐÅÏ¢
|
frmMain.lblVerify.Caption := 'Á¸Ê³Æ·ÖÖÐÞ¸Äʧ°Ü£¬Ð£×¼¹ÊÕÏ£¡';
|
end;
|
|
//------- Ö´ÐÐÏß³Ì ----------------------------------------
|
procedure TVReadyThread.StartVReady();
|
begin
|
//·µ»ØÖµ
|
t_ret := 0;
|
|
//Ï·¢Á¸ÖÖÐÞ¸ÄÖ¸Áî
|
Synchronize(UpdateStartClock);
|
t_ret := SendCommands(hWrDev, WR_GOODS, Grain.Code, 3); //ÕâÀïÖ¸Áî×èÈûʱ¼ä=3s
|
Synchronize(UpdateStopClock);
|
if t_ret<0 then begin
|
Synchronize(UpdateGrainError);
|
Exit;
|
end
|
else
|
Synchronize(UpdateGrain);
|
end;
|
|
//------- Ïß³ÌÈë¿Ú ----------------------------------------
|
procedure TVReadyThread.Execute;
|
begin
|
{ Place thread code here }
|
try
|
//Ö´ÐÐ×¼±¸¶¯×÷
|
StartVReady();
|
//·ÀÖ¹Ïß³Ì×èÈûCPU
|
Sleep(1);
|
finally
|
//ÊÖ¶¯Í˳öÏß³Ì
|
m_VReadyThread := 0;
|
end;
|
end;
|
|
end.
|