📄 formmain.cpp
字号:
PT_DeviceGetParam ptDevGetPar;
LPAOSET lpAosetting;
ULONG size;
char errmsg1720[100] = "for PCI-1720, the precondition of current out\nis that voltage range is set to 0 ~ 5V";
char errtitle1720[20];
int i;
bool s;
if (optVoltageOut->Checked)
{
OutputValue[0] = 0.0;
OutputValue[1] = 1.25;
OutputValue[2] = 2.5;
OutputValue[3] = 5.0;
}
if (optCurrentOut0->Checked)
{
OutputValue[0] = 1.0;
OutputValue[1] = 5.0;
OutputValue[2] = 10.0;
OutputValue[3] = 20.0;
}
if (optCurrentOut4->Checked)
{
OutputValue[0] = 4.0;
OutputValue[1] = 10.0;
OutputValue[2] = 15.0;
OutputValue[3] = 20.0;
}
lErrCde = DRV_DeviceOpen( lDeviceNum, &lDeviceHandle);
if ( DoesErr(lErrCde))
return;
// for PCI-1720, the precondition of current out is voltage range
// is set to 0 ~ 5V
if (!(optVoltageOut->Checked) &&
(strstr(labDeviceName->Caption.c_str(), "PCI-1720") != NULL))
{
// get device AO settings
size = ptDevFeatures.usMaxAOChl * sizeof (AOSET);
ptDevGetPar.nID = AO_RANGE_SETTING;
ptDevGetPar.pData = malloc(size);
ptDevGetPar.Length = & size;
lErrCde = DRV_DeviceGetParam(lDeviceHandle, &ptDevGetPar);
if ( DoesErr(lErrCde))
{
DRV_DeviceClose(&lDeviceHandle);
free(ptDevGetPar.pData);
return;
}
// check device AO settings
lpAosetting = (LPAOSET) ptDevGetPar.pData;
if(chkSyncAOEnable->Checked)
{
for(i = 0; i < ptDevFeatures.usMaxAOChl; i++)
{
if ((lpAosetting[i].fAOMaxVol != 5) || (lpAosetting[i].fAOMinVol != 0))
{
s = False;
switch (i)
{
case 0 :
if (chkSyncEnable0->Checked) s = True; break;
case 1 :
if (chkSyncEnable1->Checked) s = True; break;
case 2 :
if (chkSyncEnable2->Checked) s = True; break;
case 3 :
if (chkSyncEnable3->Checked) s = True; break;
case 4 :
if (chkSyncEnable4->Checked) s = True; break;
case 5 :
if (chkSyncEnable5->Checked) s = True; break;
case 6 :
if (chkSyncEnable6->Checked) s = True; break;
case 7 :
if (chkSyncEnable7->Checked) s = True; break;
}
if (s)
{
sprintf(errtitle1720, "Error: Channel %d", i);
Application->MessageBox(errmsg1720, errtitle1720, MB_OK);
DRV_DeviceClose(&lDeviceHandle);
free(ptDevGetPar.pData);
return;
}
}
}
}
else
{
for(i = 0; i < ptDevFeatures.usMaxAOChl; i++)
{
if ((lpAosetting[i].fAOMaxVol != 5) || (lpAosetting[i].fAOMinVol != 0))
{
s = False;
switch (i)
{
case 0 :
if (optAsyncEnable0->Checked) s = True; break;
case 1 :
if (optAsyncEnable1->Checked) s = True; break;
case 2 :
if (optAsyncEnable2->Checked) s = True; break;
case 3 :
if (optAsyncEnable3->Checked) s = True; break;
case 4 :
if (optAsyncEnable4->Checked) s = True; break;
case 5 :
if (optAsyncEnable5->Checked) s = True; break;
case 6 :
if (optAsyncEnable6->Checked) s = True; break;
case 7 :
if (optAsyncEnable7->Checked) s = True; break;
}
if (s)
{
sprintf(errtitle1720, "Error: Channel %d", i);
Application->MessageBox(errmsg1720, errtitle1720, MB_OK);
DRV_DeviceClose(&lDeviceHandle);
free(ptDevGetPar.pData);
return;
}
}
}
}
free(ptDevGetPar.pData);
}
// Enable Sync. output feature
if (chkSyncAOEnable->Checked)
lErrCde = DRV_EnableSyncAO(lDeviceHandle, 1);
else
lErrCde = DRV_EnableSyncAO(lDeviceHandle, 0);
if ( DoesErr(lErrCde))
{
DRV_DeviceClose(&lDeviceHandle);
return;
}
OutputIndex = 0;
cmdStart->Enabled = False;
cmdStop->Enabled = True;
btnClose->Enabled = False;
ScanTimer->Enabled = True;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::cmdStopClick(TObject *Sender)
{
ScanTimer->Enabled = False;
lErrCde = DRV_DeviceClose(&lDeviceHandle);
if ( DoesErr(lErrCde))
return;
cmdStart->Enabled = True;
cmdStop->Enabled = False;
btnClose->Enabled = True;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::txtScanTimeChange(TObject *Sender)
{
ScanTimer->Interval = StrToInt(txtScanTime->Text);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::chkSyncAOEnableClick(TObject *Sender)
{
int i;
if (chkSyncAOEnable->Checked)
{
optAsyncEnable0->Enabled = False;
optAsyncEnable1->Enabled = False;
optAsyncEnable2->Enabled = False;
optAsyncEnable3->Enabled = False;
optAsyncEnable4->Enabled = False;
optAsyncEnable5->Enabled = False;
optAsyncEnable6->Enabled = False;
optAsyncEnable7->Enabled = False;
for (i = 0; i < 8; i++)
{
if (i < MaxAOChannel)
{
switch (i)
{
case 0 : chkSyncEnable0->Enabled = True;
case 1 : chkSyncEnable1->Enabled = True;
case 2 : chkSyncEnable2->Enabled = True;
case 3 : chkSyncEnable3->Enabled = True;
case 4 : chkSyncEnable4->Enabled = True;
case 5 : chkSyncEnable5->Enabled = True;
case 6 : chkSyncEnable6->Enabled = True;
case 7 : chkSyncEnable7->Enabled = True;
}
}
else
{
switch (i)
{
case 0 : chkSyncEnable0->Enabled = False;
case 1 : chkSyncEnable1->Enabled = False;
case 2 : chkSyncEnable2->Enabled = False;
case 3 : chkSyncEnable3->Enabled = False;
case 4 : chkSyncEnable4->Enabled = False;
case 5 : chkSyncEnable5->Enabled = False;
case 6 : chkSyncEnable6->Enabled = False;
case 7 : chkSyncEnable7->Enabled = False;
}
}
}
}
else
{
chkSyncEnable0->Enabled = False;
chkSyncEnable1->Enabled = False;
chkSyncEnable2->Enabled = False;
chkSyncEnable3->Enabled = False;
chkSyncEnable4->Enabled = False;
chkSyncEnable5->Enabled = False;
chkSyncEnable6->Enabled = False;
chkSyncEnable7->Enabled = False;
for (i = 0; i < 8; i++)
{
if (i < MaxAOChannel)
{
switch (i)
{
case 0 : optAsyncEnable0->Enabled = True;
case 1 : optAsyncEnable1->Enabled = True;
case 2 : optAsyncEnable2->Enabled = True;
case 3 : optAsyncEnable3->Enabled = True;
case 4 : optAsyncEnable4->Enabled = True;
case 5 : optAsyncEnable5->Enabled = True;
case 6 : optAsyncEnable6->Enabled = True;
case 7 : optAsyncEnable7->Enabled = True;
}
}
else
{
switch (i)
{
case 0 : optAsyncEnable0->Enabled = False;
case 1 : optAsyncEnable1->Enabled = False;
case 2 : optAsyncEnable2->Enabled = False;
case 3 : optAsyncEnable3->Enabled = False;
case 4 : optAsyncEnable4->Enabled = False;
case 5 : optAsyncEnable5->Enabled = False;
case 6 : optAsyncEnable6->Enabled = False;
case 7 : optAsyncEnable7->Enabled = False;
}
}
}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -