📄 unit_threadtest.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 + -