{------------------------------------------------------------------------------} {µ¥ÔªÃû³Æ£º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; t_faultCode : Word; //Ë®·ÖÒǹÊÕÏÂë procedure UpdateStartClock; procedure UpdateStopClock; procedure UpdateTest; procedure UpdateTestError; procedure UpdateFaultCode; 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.UpdateFaultCode; begin RefashFaultCode(t_faultCode); 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 //Ï·¢Ë®·ÖÒÇÆô¶¯Ö¸Áî Synchronize(UpdateStartClock); t_ret := SendCommands(hWrDev, WR_VERIFY, 0, glTime2); Synchronize(UpdateStopClock); //Ïò½çÃæÊä³ö½á¹û if t_ret<>0 then Synchronize(UpdateTestError) else begin //´ÓË®·ÖÒÇÆ÷¶ÁÈ¡Êý¾Ý ReadVcc(hWrDev, @t_nVcc); Synchronize(UpdateTest); Synchronize(UpdateCaption); end; //¼ì²éË®·ÖÒǹÊÕÏÂë ReadFaultCode(hWrDev, @t_faultCode); Synchronize(UpdateFaultCode); end; //------- Ïß³ÌÈë¿Ú ---------------------------------------- procedure TVerifyThread.Execute; begin try //Ö´Ðмì²â´úÂë StartVerify(); //·ÀÖ¹Ïß³Ì×èÈûCPU Sleep(1); finally Terminate; end; end; end.