{------------------------------------------------------------------------------} {µ¥ÔªÃû³Æ£ºresetThread.pas } {Ä£¿éÃû³Æ£ºÒÇÆ÷¸´Î»Ïß³Ì } {Ä£¿é˵Ã÷£ºÏ̴߳´½¨ºó×Ô¶¯ÔËÐУ¬¸üи´Î»¼ÆÊ±½çÃæ } {½¨Á¢ÈÕÆÚ£º2025-01-17 } {ÐÞ¸ÄÐ޸ģº2025-01-17 } {°æÈ¨ËùÓУºÀîÁ¼Í¥ liangtingli@outlook.com } {------------------------------------------------------------------------------} unit resetThread; interface uses Classes, PubUtils, SysUtils, ActuatorLib; type TResetThread = class(TThread) private { Private declarations } t_ret : Integer; //·µ»ØÖµ t_faultCode : Word; //Ë®·ÖÒǹÊÕÏÂë procedure UpdateStart; procedure UpdateStop; procedure UpdateTest; procedure UpdateFaultCode; protected procedure Execute; override; public constructor Create(param: Boolean=false); procedure Terminate; end; implementation uses uMain, Global, log4me, uDM, uInit; { TResetThread } //--------Ï̳߳õʼ»¯---------------------------------------- //Ï̳߳õʼ»¯ constructor TResetThread.Create(param: Boolean=false); begin //Ïß³ÌÍ£Ö¹ºó×Ô¶¯ÊÍ·Å inherited Create(param); //ÉèÖÃÏß³ÌÔËÐÐ, False-×Ô¶¯ÔËÐÐ, True-ÊÖ¶¯Æô¶¯ FreeOnTerminate := True; //ÉèÖÃÏß³ÌÍ˳ö×Ô¶¯Ïú t_ret := 0; end; //Ïß³ÌÏú»Ùʼþ procedure TResetThread.Terminate; begin inherited; m_ResetThread := 0; //ÇåÀíÏ߳̾ä±ú end; //------- ½çÃæÊä³ö ---------------------------------------- //Æô¶¯¶¨Ê±Æ÷ procedure TResetThread.UpdateStart; begin glStartTest := GetMillisecondTimeStamp; dm.tmReset.Enabled := true; end; //¸üмì²â½á¹ûµ½½çÃæ procedure TResetThread.UpdateStop; begin dm.tmReset.Enabled := false; //ÉèÖð´Å¥²»¿ÉÓà frmMain.SetResetUI(true); end; //¸´Î»Ìáʾ procedure TResetThread.UpdateTest; begin if t_ret=0 then frmMain.lblMaintain.Caption := 'Ìáʾ£ºÏ·¢Ë®·ÖÒÇ [¸´Î»] ²Ù×÷³É¹¦£¡' else frmMain.lblMaintain.Caption := 'Ìáʾ£ºÏ·¢Ë®·ÖÒÇ [¸´Î»] ²Ù×÷ʧ°Ü£¡'; end; //³ö´íÏÔʾ--ÒÇÆ÷×Ô¼ì³ö´í procedure TResetThread.UpdateFaultCode; begin RefashFaultCode(t_faultCode); end; //------- Ïß³ÌÖ´ÐÐ ---------------------------------------- //Ïß³ÌÈë¿Ú procedure TResetThread.Execute; begin try //Ö´Ðнؾàµ÷Õû´úÂë Synchronize(UpdateStart); t_ret := ResetCommand(hWrDev); Synchronize(UpdateStop); //Êä³ö¸´Î»½á¹û Synchronize(UpdateTest); //¼ì²éË®·ÖÒǹÊÕÏÂë ReadFaultCode(hWrDev, @t_faultCode); Synchronize(UpdateFaultCode); finally //Ïú»ÙÏß³Ì Terminate; end; end; end.