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

📄 foutform.cpp

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "FoutForm.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmFout *frmFout;
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------
__fastcall TfrmFout::TfrmFout(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmFout::FormCreate(TObject *Sender)
{
  //This function is for getting the device number
    if(1 == DRV_SelectDevice(Handle, True, (ULONG*)&lDeviceNum, szDescription)){
        Application->MessageBoxA("Can not Open Select Device Dialog", "Error");
    }
    //open device
    ErrCde = DRV_DeviceOpen(lDeviceNum, (LONG far *) &lDriverHandle);
    if (ErrCde != SUCCESS){
        strcpy(szErrMsg,"Device open error !");
        Application->MessageBoxA((LPCSTR)szErrMsg,"Device Open");
        return;
    }
    //Get Device Features
    ptDevGetFeatures.buffer = (LPDEVFEATURES )&DevFeatures;
    ptDevGetFeatures.size   = sizeof(DEVFEATURES);
    ErrCde = DRV_DeviceGetFeatures(lDriverHandle, (PT_DeviceGetFeatures*)&ptDevGetFeatures);
    if (ErrCde != SUCCESS){
        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
        Application->MessageBoxA((LPCSTR)szErrMsg,"Driver Message");
        DRV_DeviceClose((LONG far *)&lDriverHandle);
        return;
    }
    DRV_DeviceClose(&lDriverHandle);
    //store some device specific paramter
    dwBoardID = DevFeatures.dwBoardID;
    if (dwBoardID != BD_USB4751){
       usMaxFreqOutNum = 4;
    }else{
       usMaxFreqOutNum = 2;
    }
    //Init the UI
    cmbChannel->Clear();
    for (int i=0; i<usMaxFreqOutNum; i++){
       cmbChannel->Items->Add(AnsiString(i));
    }
    cmbChannel->ItemIndex = 0;
    cmbFoutSrc->Clear();
    cmbFoutSrc->Items->Add("External Clock");
    cmbFoutSrc->Items->Add("20MHZ");
    cmbFoutSrc->Items->Add("10MHZ");
    cmbFoutSrc->Items->Add("5MHZ");    
    cmbFoutSrc->Items->Add("1MHZ");
    cmbFoutSrc->Items->Add("100KHZ");
    labDeviceName->Caption = AnsiString(szDescription);
    cmbFoutSrc->ItemIndex = 0;

    bRun = False;
    btnStop->Enabled = FALSE;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFout::btnSelectDeviceClick(TObject *Sender)
{
    FormCreate(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFout::btnStartClick(TObject *Sender)
{
    ErrCde = DRV_DeviceOpen(lDeviceNum, (LONG far *) &lDriverHandle);
    if (ErrCde != SUCCESS){
        strcpy(szErrMsg,"Device open error !");
        Application->MessageBoxA((LPCSTR)szErrMsg,"Device Open");
        return;
    }

    ptDevGetFeatures.buffer = (LPDEVFEATURES )&DevFeatures;
    ptDevGetFeatures.size   = sizeof(DEVFEATURES);
    ErrCde = DRV_DeviceGetFeatures(lDriverHandle, (PT_DeviceGetFeatures*)&ptDevGetFeatures);
    if (ErrCde != SUCCESS){
        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
        Application->MessageBoxA((LPCSTR)szErrMsg,"Driver Message");
        DRV_DeviceClose((LONG far *)&lDriverHandle);
        return;
    }
    if (0 == DevFeatures.usMaxTimerChl){
        Application->MessageBoxA((LPCSTR)"No Counter Channel","Driver Message");
        DRV_DeviceClose((LONG far *)&lDriverHandle);
        return;
    }

    //start Fout
    gwFoutSrc = cmbFoutSrc->ItemIndex;
    switch(gwFoutSrc){
        case 0: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_EXTER_CLK; break;
        case 1: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_20MHZ;     break;
        case 2: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_10MHZ; break;
        case 3: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_5MHZ; break;
        case 4: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_1MHZ;  break;
        case 5: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_100KHZ;break;
    }
    ptFreqOutStart.usChannel = cmbChannel->Text.ToInt();
    ptFreqOutStart.usDivider = txtDivider->Text.ToInt();
    ErrCde = DRV_FreqOutStart((LONG)lDriverHandle,(LPT_FreqOutStart)&ptFreqOutStart);
    if(ErrCde != SUCCESS){
        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
        Application->MessageBoxA((char*)szErrMsg, "Driver Message");
        DRV_DeviceClose((LONG far*)lDriverHandle);
        return;
    }

    grpDeviceSelection->Enabled = False;
    grpChannel->Enabled = False;
    grpFoutSrc->Enabled = False;
    grpDivider->Enabled = False;
    btnExit->Enabled = False;
    btnStart->Enabled = False;
    btnStop->Enabled = True;
    bRun = True;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFout::btnStopClick(TObject *Sender)
{
    //stop Fout
    ErrCde = DRV_FreqOutReset(lDriverHandle,cmbChannel->Text.ToInt());
    if(ErrCde != SUCCESS){
        DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
        Application->MessageBoxA((char*)szErrMsg, "Driver Message");
     }
     DRV_DeviceClose((LONG far *)&lDriverHandle);
     bRun = FALSE;
     grpDeviceSelection->Enabled = True;
     grpChannel->Enabled = True;
     grpFoutSrc->Enabled = True;
     grpDivider->Enabled = True;
     btnExit->Enabled = True;
     btnStart->Enabled = True;
     btnStop->Enabled = False;

}
//---------------------------------------------------------------------------
void __fastcall TfrmFout::btnExitClick(TObject *Sender)
{
    Application->Terminate();        
}
//---------------------------------------------------------------------------
void __fastcall TfrmFout::FormClose(TObject *Sender, TCloseAction &Action)
{
    if(True == bRun){
        btnStopClick(Sender);
    }        
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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