⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_threadtest.~cpp

📁 使用GPIB卡控制数控电源(Agilent66X)测试电流的一个小程序
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "PowCtr.h"
#include "Unit_Main.h"

#include "Unit_ThreadTest.h"
#pragma package(smart_init)

extern CPowCtr *power;
//---------------------------------------------------------------------------

//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall Unit1::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }
//---------------------------------------------------------------------------

__fastcall ThreadTest::ThreadTest(bool CreateSuspended)
        : TThread(CreateSuspended)
{
     bintrupt=false;
}
//---------------------------------------------------------------------------
void __fastcall ThreadTest::Execute()
{
     float ftmp;
     int state;

     power->DispOnSet(false);
     Form_Main->Edit_tim->Enabled=false;
     Form_Main->Edit_testN->Enabled=false;
     Form_Main->CheckBox_RealtimneChg->Enabled=false;
     Form_Main->CGauge_pro->MaxValue=iTestN;
     Form_Main->CGauge_pro->Progress=0;
     Form_Main->ResetClock();
     Form_Main->StartClock();
     for(int i=0;i<=iTestN;i++){
         if(bintrupt) break;
         Sleep(iTestTim);
         state=power->Measure_curr(&ftmp);
         if(state!=0) break;
         Form_Main->Edit_CurrCurr->Text=FormatFloat("0.0000",ftmp);
         if(ftmp>fCurrMax) fCurrMax=ftmp;
         if(ftmp<fCurrMin) fCurrMin=ftmp;
         fCurrSum=fCurrSum+ftmp;
         icount++;
         fCurrAver=fCurrSum / icount;
         if(iReatimeChg){
             Form_Main->Edit_CurrMax->Text=FormatFloat("0.0000",fCurrMax);
             Form_Main->Edit_CurrMin->Text=FormatFloat("0.0000",fCurrMin);
             Form_Main->Edit_CurrAver->Text=FormatFloat("0.0000",fCurrAver);
         }
         Form_Main->CGauge_pro->Progress++;
         Form_Main->Panel_S->Caption=IntToStr(i)+"\\"+IntToStr(iTestN);
     }
     Form_Main->BitBtn_Start->Caption="开始";
     Form_Main->CGauge_pro->Progress=iTestN;
     Form_Main->Edit_tim->Enabled=true;
     Form_Main->Edit_testN->Enabled=true;
     Form_Main->CheckBox_RealtimneChg->Enabled=true;
     power->DispOnSet(true);
     if(!iReatimeChg){
         Form_Main->Edit_CurrMax->Text=FormatFloat("0.0000",fCurrMax);
         Form_Main->Edit_CurrMin->Text=FormatFloat("0.0000",fCurrMin);
         Form_Main->Edit_CurrAver->Text=FormatFloat("0.0000",fCurrAver);
     }
     Form_Main->StopClock();

     printf("Date:"+DateTimeToStr(Now()));
     printf("---------------------------------------");
     printf("最大电流:"+Form_Main->Edit_CurrMax->Text+" A");
     printf("最小电流:"+Form_Main->Edit_CurrMin->Text+" A");
     printf("平均电流:"+Form_Main->Edit_CurrAver->Text+" A");
     printf("---------------------------------------");
     printf("采样间隔:"+Form_Main->Edit_tim->Text+" ms");
     printf("采样次数:"+Form_Main->Edit_testN->Text" 次");
     printf("测试用时:"+Form_Main->Edit_TestTime->Text+" S");
     printf("");

}
//---------------------------------------------------------------------------

void ThreadTest::printf(AnsiString str)
{
     Form_Main->Memo_log->Lines->Add(str);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -