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

📄 unit_main.~cpp

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

#include <vcl.h>
#pragma hdrstop

#include "Unit_Main.h"
#include "inifiles.hpp"
#include "PowCtr.h"
#include "Unit_ThreadTest.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "PERFGRAP"
#pragma link "CGAUGES"
#pragma resource "*.dfm"
int iTestTim;
int iTestN;
int iGpibIndex;
int iPriAdd;
float fOutputPow;
float fVoltProt;
float fCurrLimit;
bool iReatimeChg;

int clock;

CPowCtr *power;

float fCurrSum;
int icount;
float fCurrMax;
float fCurrMin;
float fCurrAver;

TForm_Main *Form_Main;

ThreadTest *test;
//---------------------------------------------------------------------------
__fastcall TForm_Main::TForm_Main(TComponent* Owner)
        : TForm(Owner)
{
    fCurrSum=0;
    icount=0;
    fCurrMax=0;
    fCurrMin=1;
    fCurrAver=0;
}
//---------------------------------------------------------------------------

void TForm_Main::LoadSetting(void)
{
    TIniFile *reg;
    reg=new TIniFile(GetCurrentDir()+"\\cfg.ini");

    iTestTim=reg->ReadInteger("Test","TestTim",1000);
    iTestN=reg->ReadInteger("Test","TestNum",1000);
    iGpibIndex=reg->ReadInteger("Instrument","Index",0);
    iPriAdd=reg->ReadInteger("Instrument","PriAdd",5);
    fOutputPow=reg->ReadFloat("Instrument","OutputPow",3.8);
    fVoltProt=reg->ReadFloat("Instrument","VoltProt",5);
    fCurrLimit=reg->ReadFloat("Instrument","CurrLimit",2);
    iReatimeChg=reg->ReadBool("MISC","RealTimeChg",true);

    delete reg;

    Edit_tim->Text=IntToStr(iTestTim);
    Edit_testN->Text=IntToStr(iTestN);
    CheckBox_RealtimneChg->Checked=iReatimeChg;
    Edit_GpibIndex->Text=IntToStr(iGpibIndex);
    Edit_PriAdd->Text=IntToStr(iPriAdd);
    Edit_OutPutPow->Text=FormatFloat("0.00",fOutputPow);
    Edit_VoltProt->Text=FormatFloat("0.0",fVoltProt);
    Edit_CurrLimt->Text=FormatFloat("0.0",fCurrLimit);
 
}

void TForm_Main::SaveSetting(void)
{
    TIniFile *reg;

    iTestTim=StrToInt(Trim(Edit_tim->Text));
    iTestN=StrToInt(Trim(Edit_testN->Text));
    iReatimeChg=CheckBox_RealtimneChg->Checked;
    iGpibIndex=StrToInt(Trim(Edit_GpibIndex->Text));
    iPriAdd=StrToInt(Trim(Edit_PriAdd->Text));
    fOutputPow=StrToFloat(Trim(Edit_OutPutPow->Text));
    fVoltProt=StrToFloat(Trim(Edit_VoltProt->Text));
    fCurrLimit=StrToFloat(Trim(Edit_CurrLimt->Text));

    reg=new TIniFile(GetCurrentDir()+"\\cfg.ini");
    reg->WriteInteger("Test","TestTim",iTestTim);
    reg->WriteInteger("Test","TestNum",iTestN);
    reg->WriteInteger("Instrument","Index",iGpibIndex);
    reg->WriteInteger("Instrument","PriAdd",iPriAdd);
    reg->WriteFloat("Instrument","OutputPow",fOutputPow);
    reg->WriteFloat("Instrument","VoltProt",fVoltProt);
    reg->WriteFloat("Instrument","CurrLimit",fCurrLimit);
    reg->WriteBool("MISC","RealTimeChg",iReatimeChg);

    delete reg;
}


void __fastcall TForm_Main::FormShow(TObject *Sender)
{
    int state;
    LoadSetting();

    power=new CPowCtr();
    state=power->Init(iGpibIndex,iPriAdd);
    if(state!=0){
        ShowMessage("Connect Instrument Error["+IntToStr(state)+"]");
        BitBtn_Start->Enabled=false;
        BitBtn_Reset->Enabled=false;
        StatusBar1->Panels->Items[0]->Text="连接电源失败!";
        return;
    }
    //state=pow->PowReset(fVoltProt,fCurrLimit,fOutputPow);
    //state=pow->PowOn();
    StatusBar1->Panels->Items[0]->Text="就绪!";
    Memo_log->Lines->LoadFromFile(GetCurrentDir()+"\\history.txt");

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

void __fastcall TForm_Main::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    SaveSetting();
    Memo_log->Lines->SaveToFile(GetCurrentDir()+"\\history.txt");
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::BitBtn_ResetClick(TObject *Sender)
{
   ClearResult();
}
//---------------------------------------------------------------------------
void TForm_Main::ClearResult()
{
    fCurrSum=0;
    icount=0;
    fCurrMax=0;
    fCurrMin=1;
    fCurrAver=0;

    Edit_CurrCurr->Clear();
    Edit_CurrMax->Clear();
    Edit_CurrMin->Clear();
    Edit_CurrAver->Clear();
    Edit_TestTime->Clear();

    CGauge_pro->Progress=0;
    Panel_S->Caption="";
}

void __fastcall TForm_Main::BitBtn_StartClick(TObject *Sender)
{
    if(BitBtn_Start->Caption=="开始"){
        test=new ThreadTest(true);
        test->Resume();
        BitBtn_Start->Caption="停止" ;


    }else if(BitBtn_Start->Caption=="停止"){
        test->interrrupt();
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::BitBtn_InitPowClick(TObject *Sender)
{
    int state;

    state=power->PowReset(fVoltProt,fCurrLimit,fOutputPow);
    power->PowOn();
    if(state!=0){
        ShowMessage("Connect Instrument Error["+IntToStr(state)+"]");
        BitBtn_Start->Enabled=false;
        return;
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::Edit_timChange(TObject *Sender)
{
   iTestTim=StrToInt(Trim(Edit_tim->Text));
   
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::Edit_testNChange(TObject *Sender)
{
   iTestN=StrToInt(Trim(Edit_testN->Text));
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::CheckBox_RealtimneChgClick(TObject *Sender)
{
    iReatimeChg=CheckBox_RealtimneChg->Checked;
}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::TimerTimer(TObject *Sender)
{
    clock++;
    Edit_TestTime->Text=IntToStr(clock);
}
//---------------------------------------------------------------------------
void TForm_Main::ResetClock(void)
{
    clock=0;
}

void __fastcall TForm_Main::BitBtn_ClearClick(TObject *Sender)
{
    Memo_log->Clear();        
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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