{------------------------------------------------------------------------------}
|
{µ¥ÔªÃû³Æ£ºgrainThread.pas }
|
{Ä£¿éÃû³Æ£ºÁ¸ÖÖÑ¡ÔñÏß³Ì }
|
{Ä£¿é˵Ã÷£ºÏ̴߳´½¨ºó×Ô¶¯ÔËÐУ¬Íê³ÉÒ»´ÎÁ¸ÖÖÑ¡Ôñ }
|
{½¨Á¢ÈÕÆÚ£º2024-07-02 }
|
{ÐÞ¸ÄÐ޸ģº2024-07-02 }
|
{°æÈ¨ËùÓУºÀîÁ¼Í¥ liangtingli@outlook.com }
|
{------------------------------------------------------------------------------}
|
unit grainThread;
|
|
interface
|
|
uses
|
Windows, Classes, SysUtils, PubUtils, DateUtils, ActuatorLib;
|
|
type
|
TGrainThread = class(TThread)
|
private
|
{ Private declarations }
|
t_ret : Integer; //·µ»ØÖµ
|
t_faultCode : Word; //Ë®·ÖÒǹÊÕÏÂë
|
|
procedure UpdateCaption; //ÊÖ¶¯¼ì²â·´À¡
|
procedure UpdateCaption1; //ÊÖ¶¯Ð£×¼·´À¡
|
procedure UpdateCaption2; //µ÷Õû½Ø¾à·´À¡
|
protected
|
procedure Start();
|
procedure Execute; override;
|
public
|
constructor Create(param: Boolean=false);
|
procedure Terminate;
|
end;
|
|
implementation
|
|
uses
|
uMain, Global, log4me, uInit;
|
|
{ TGrainThread }
|
|
//--------Ï̳߳õʼ»¯----------------------------------------
|
//Ï̳߳õʼ»¯
|
constructor TGrainThread.Create(param: Boolean=false);
|
begin
|
//Ïß³ÌÍ£Ö¹ºó×Ô¶¯ÊÍ·Å
|
inherited Create(param); //ÉèÖÃÏß³ÌÔËÐÐ, False-×Ô¶¯ÔËÐÐ, True-ÊÖ¶¯Æô¶¯
|
FreeOnTerminate := True; //ÉèÖÃÏß³ÌÍ˳ö×Ô¶¯Ïú
|
//·µ»ØÖµ
|
t_ret := 0;
|
t_faultCode := 0;
|
end;
|
|
//Ïß³ÌÏú»Ùʼþ
|
procedure TGrainThread.Terminate;
|
begin
|
inherited;
|
m_GrainThread := 0; //ÇåÀíÏ߳̾ä±ú
|
end;
|
|
//--------½çÃæ´¦Àíº¯Êý--------------------------------------
|
//ÊÖ¶¯¼ì²âʱ£¬Ï·¢Á¸ÖÖ·´À¡ÐÅÏ¢
|
procedure TGrainThread.UpdateCaption;
|
begin
|
with frmMain do begin
|
//Ïò½çÃæ·µ»ØÐÅÏ¢
|
if t_ret<0 then
|
lblManTest.Caption := Format('Á¸Ê³Æ·ÖÖÐÞ¸Äʧ°Ü£¬¹ÊÕÏÂë [%d]£¡',[t_faultCode])
|
else
|
lblManTest.Caption := 'Á¸Ê³Æ·ÖÖÐ޸ijɹ¦£¬×¼±¸¾ÍÐ÷£¡';
|
RefashFaultCode(t_faultCode);
|
|
//ÏÔʾµ±Ç°¼ÓÔØµÄÁ¸ÖÖÐÅÏ¢
|
sLabel15.Caption := Format('Á¸Ê³ÖÖÀà - [%s]',[Grain.Name]);
|
log4Info(Format('Á¸ÖÖ£ºµ±Ç°Ñ¡ÖÐ[%s], ´úÂë[%d], У׼ϵÊý[%s,%s,%s,%s,%s]',
|
[Grain.Name,
|
Grain.Code,
|
Grain.Coef[0],
|
Grain.Coef[1],
|
Grain.Coef[2],
|
Grain.Coef[3],
|
Grain.Coef[4]]));
|
end;
|
end;
|
|
//ÊÖ¶¯Ð£×¼Ê±£¬Ï·¢Á¸ÖÖ·´À¡ÐÅÏ¢
|
procedure TGrainThread.UpdateCaption1;
|
begin
|
with frmMain do begin
|
if t_ret<0 then
|
lblVerify.Caption := Format('Á¸Ê³Æ·ÖÖÐÞ¸Äʧ°Ü£¬¹ÊÕÏÂë [%d]£¡',[t_faultCode])
|
else
|
lblVerify.Caption := 'Á¸Ê³Æ·ÖÖÐ޸ijɹ¦£¬Ð£×¼¾ÍÐ÷£¡';
|
|
//¼ÓÔØÁ¸ÖÖУ׼ϵÊý
|
edtAutoCoef1.Text := Grain.coef[0];
|
edtAutoCoef2.Text := Grain.coef[1];
|
edtAutoCoef3.Text := Grain.coef[2];
|
edtAutoCoef4.Text := Grain.coef[3];
|
edtAutoCoef5.Text := Grain.coef[4];
|
|
//ÏÔʾµ±Ç°¼ÓÔØµÄÁ¸ÖÖÐÅÏ¢
|
sLabel3.Caption := Format('Ñ¡Ôñ - [%s]',[Grain.Name]);
|
log4Info(Format('Á¸ÖÖ£ºµ±Ç°Ñ¡ÖÐ[%s], ´úÂë[%d], У׼ϵÊý[%s,%s,%s,%s,%s]',
|
[Grain.Name,
|
Grain.Code,
|
Grain.Coef[0],
|
Grain.Coef[1],
|
Grain.Coef[2],
|
Grain.Coef[3],
|
Grain.Coef[4]]));
|
end;
|
end;
|
|
//µ÷Õû½Ø¾àʱ£¬Ï·¢Á¸ÖÖ·´À¡ÐÅÏ¢
|
procedure TGrainThread.UpdateCaption2;
|
begin
|
with frmMain do begin
|
//Ïò½çÃæ·µ»ØÐÅÏ¢
|
if t_ret<0 then
|
lblInter.Caption := Format('Á¸Ê³Æ·ÖÖÐÞ¸Äʧ°Ü£¬¹ÊÕÏÂë [%d]£¡',[t_faultCode])
|
else
|
lblInter.Caption := 'Á¸Ê³Æ·ÖÖÐ޸ijɹ¦£¬×¼±¸¾ÍÐ÷£¡';
|
|
//ÏÔʾµ±Ç°¼ÓÔØµÄÁ¸ÖÖÐÅÏ¢
|
sLabel70.Caption := Format('Á¸Ê³ÖÖÀà - [%s]',[Grain.Name]);
|
log4Info(Format('Á¸ÖÖ£ºµ±Ç°Ñ¡ÖÐ[%s], ´úÂë[%d], У׼ϵÊý[%s,%s,%s,%s,%s]',
|
[Grain.Name,
|
Grain.Code,
|
Grain.Coef[0],
|
Grain.Coef[1],
|
Grain.Coef[2],
|
Grain.Coef[3],
|
Grain.Coef[4]]));
|
end;
|
end;
|
|
//------- Ö´ÐÐÏß³Ì ----------------------------------------
|
procedure TGrainThread.Start();
|
begin
|
//¼ì²éË®·ÖÒǹÊÕÏÂë
|
t_ret := ReadFaultCode(hWrDev, @t_faultCode);
|
//Ï·¢Á¸ÖÖÐÅÏ¢
|
if t_ret >=0 then
|
t_ret := SendCommands(hWrDev, WR_GOODS, Grain.Code, 2); //ÕâÀïÖ¸Áî×èÈûʱ¼ä=2s
|
|
//Ïò½çÃæÊä³ö½á¹û
|
if s_Grain=1 then
|
Synchronize(UpdateCaption) //ÊÖ¶¯¼ì²â·´À¡ 1
|
else if s_Grain=2 then
|
Synchronize(UpdateCaption1) //ÊÖ¶¯Ð£×¼·´À¡ 2
|
else
|
Synchronize(UpdateCaption2);//µ÷Õû½Ø¾à·´À¡ 3
|
end;
|
|
//------- Ïß³ÌÈë¿Ú ----------------------------------------
|
procedure TGrainThread.Execute;
|
begin
|
{ Place thread code here }
|
try
|
//Ñ¡ÔñÁ¸ÖÖ
|
Start();
|
//·ÀÖ¹Ïß³Ì×èÈûCPU
|
Sleep(1);
|
finally
|
//ÊÖ¶¯Í˳öÏß³Ì
|
m_GrainThread := 0;
|
end;
|
end;
|
|
end.
|