📄 foutform.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;
usMaxFreqOutNum = DevFeatures.usMaxTimerChl;
//if (dwBoardID != BD_PCM3780){
// usMaxFreqOutNum = 4;
//}else{
// usMaxFreqOutNum = 2;
//}
//Init the UI
cmbChannel->Clear();
if (usMaxFreqOutNum > 0)
{
for (int i=0; i<usMaxFreqOutNum; i++){
cmbChannel->Items->Add(AnsiString(i));
}
cmbChannel->Enabled = True;
}
else
{
cmbChannel->Enabled = False;
}
cmbChannel->ItemIndex = 0;
cmbFoutSrc->Clear();
//cmbFoutSrc->Items->Add("CLK N");
//cmbFoutSrc->Items->Add("FOUT N-1");
cmbFoutSrc->Items->Add("10MHZ");
//cmbFoutSrc->Items->Add("1MHZ");
//cmbFoutSrc->Items->Add("100KHZ");
//cmbFoutSrc->Items->Add("10KHZ");
//cmbFoutSrc->Items->Add("1KHZ");
labDeviceName->Caption = AnsiString(szDescription);
cmbFoutSrc->ItemIndex = 0; //initial 10MHZ
bRun = 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;
if (BD_PCM3780 == dwBoardID){
gwFoutSrc++;
}
switch(gwFoutSrc){
case 0: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_EXTER_CLK; break;
case 1: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_N; break;
case 2: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_FOUT_N_M1; break;
case 3: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_10MHZ; break;
case 4: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_1MHZ; break;
case 5: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_100KHZ;break;
case 6: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_10KHZ; break;
case 7: ptFreqOutStart.usFoutSrc = PA_FOUT_SRC_CLK_1KHZ; break;
}
ptFreqOutStart.usChannel = cmbChannel->Text.ToInt();
ptFreqOutStart.usDivider = EditDivider->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 + -