waveset.cpp
来自「16 relay output channels and 16 isolated」· C++ 代码 · 共 278 行
CPP
278 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "WaveSet.h"
#include <stdio.h>
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFrmWave *FrmWave;
char far szWaveform[5][15] = {"SINE","TRIANGLE","SQUARE","SINETRIANGLE","None"};
SWAVE sWaveCh0 = {0, // output waveform A index
2.00f, // the magnitude of output waveform A
2.00f, // the offset of output waveform A
2048}, // the points of one period
sWaveCh1 = {1, // output waveform B index
1.00f, // the magnitude of output waveform B
3.00f, // the offset of output waveform B
2048}, // the points of one period
sWaveCh2 = {2, // output waveform C index
2.00f, // the magnitude of output waveform C
2.00f, // the offset of output waveform C
2048}, // the points of one period
sWaveCh3 = {3, // output waveform D index
2.00f, // the magnitude of output waveform D
2.00f, // the offset of output waveform D
2048}; // the points of one period
USHORT usEnabledChannel = 0;
USHORT usChannelCount = 0;
//---------------------------------------------------------------------------
__fastcall TFrmWave::TFrmWave(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::FormCreate(TObject *Sender)
{
int i;
// Initialize Output Waveform's Selection
for (i = 0; i < 5; i ++)
{
WaveCH0->Items->Add(szWaveform[i]);
WaveCH1->Items->Add(szWaveform[i]);
WaveCH2->Items->Add(szWaveform[i]);
WaveCH3->Items->Add(szWaveform[i]);
}
WaveCH0->ItemIndex = sWaveCh0.wWaveform;
WaveCH1->ItemIndex = sWaveCh1.wWaveform;
WaveCH2->ItemIndex = sWaveCh2.wWaveform;
WaveCH3->ItemIndex = sWaveCh3.wWaveform;
// Initialize Magnitude
sprintf(szBuffer, "%6.2f", sWaveCh0.fMagnitude);
MagnitudeCH0->Text = szBuffer;
sprintf(szBuffer, "%6.2f", sWaveCh1.fMagnitude);
MagnitudeCH1->Text = szBuffer;
sprintf(szBuffer, "%6.2f", sWaveCh2.fMagnitude);
MagnitudeCH2->Text = szBuffer;
sprintf(szBuffer, "%6.2f", sWaveCh3.fMagnitude);
MagnitudeCH3->Text = szBuffer;
// Initialize Offset
sprintf(szBuffer, "%6.2f", sWaveCh0.fOffset);
OffsetCH0->Text = szBuffer;
sprintf(szBuffer, "%6.2f", sWaveCh1.fOffset);
OffsetCH1->Text = szBuffer;
sprintf(szBuffer, "%6.2f", sWaveCh2.fOffset);
OffsetCH2->Text = szBuffer;
sprintf(szBuffer, "%6.2f", sWaveCh3.fOffset);
OffsetCH3->Text = szBuffer;
// Initialize Period
itoa(sWaveCh0.wPeriod, szBuffer, 10);
PeriodCH0->Text = szBuffer;
itoa(sWaveCh1.wPeriod, szBuffer, 10);
PeriodCH1->Text = szBuffer;
itoa(sWaveCh2.wPeriod, szBuffer, 10);
PeriodCH2->Text = szBuffer;
itoa(sWaveCh3.wPeriod, szBuffer, 10);
PeriodCH3->Text = szBuffer;
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::OKClick(TObject *Sender)
{
int i;
if ( bRunTimer )
{
for(i=0; i<4; i++)
{
switch(i)
{
case 0 :
if(sWaveCh0.wWaveform != 4) // 4 --> No Waveform
{
usEnabledChannel |= ADV_CHANNEL0;
// set real voltage to hVoltageBuf
SetRealBuffer(lpVoltageBuf[0], gulConvNum, &sWaveCh0);
usChannelCount++;
}
else
continue;
break;
case 1 :
if(sWaveCh1.wWaveform != 4)
{
usEnabledChannel |= ADV_CHANNEL1;
SetRealBuffer(lpVoltageBuf[1], gulConvNum, &sWaveCh1);
usChannelCount++;
}
else
continue;
break;
case 2 :
if(sWaveCh2.wWaveform != 4)
{
usEnabledChannel |= ADV_CHANNEL2;
SetRealBuffer(lpVoltageBuf[2], gulConvNum, &sWaveCh2);
usChannelCount++;
}
else
continue;
break;
case 3 :
if(sWaveCh3.wWaveform != 4)
{
usEnabledChannel |= ADV_CHANNEL3;
SetRealBuffer(lpVoltageBuf[3], gulConvNum, &sWaveCh3);
usChannelCount++;
}
else
continue;
break;
}
// call FAOScale for transfer voltage to binary data
ptFAOScale.VoltArray = lpVoltageBuf[i];
ptFAOScale.BinArray = lpBuf[i];
ptFAOScale.chan = i;
ptFAOScale.count = gulConvNum;
if ((ErrCde = DRV_FAOScale(DriverHandle, (LPT_FAOScale)&ptFAOScale)) != 0)
{
DRV_GetErrorMessage(ErrCde, szErrMsg);
MessageBox(Handle, szErrMsg, "Driver Message", MB_OK);
MyFreeBuffer();
DRV_DeviceClose((LONG far *)&DriverHandle);
return;
}
}
SetMultiToOneBuffer(usEnabledChannel,gulConvNum);
}
Close();
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::WaveCH0Change(TObject *Sender)
{
sWaveCh0.wWaveform = WaveCH0->ItemIndex;
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::WaveCH1Change(TObject *Sender)
{
sWaveCh1.wWaveform = WaveCH1->ItemIndex;
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::WaveCH2Change(TObject *Sender)
{
sWaveCh2.wWaveform = WaveCH2->ItemIndex;
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::WaveCH3Change(TObject *Sender)
{
sWaveCh3.wWaveform = WaveCH3->ItemIndex;
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::MagnitudeCH0Change(TObject *Sender)
{
strcpy(szBuffer, MagnitudeCH0->Text.c_str());
sWaveCh0.fMagnitude = atof(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::MagnitudeCH1Change(TObject *Sender)
{
strcpy(szBuffer, MagnitudeCH1->Text.c_str());
sWaveCh1.fMagnitude = atof(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::MagnitudeCH2Change(TObject *Sender)
{
strcpy(szBuffer, MagnitudeCH2->Text.c_str());
sWaveCh2.fMagnitude = atof(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::MagnitudeCH3Change(TObject *Sender)
{
strcpy(szBuffer, MagnitudeCH3->Text.c_str());
sWaveCh3.fMagnitude = atof(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::OffsetCH0Change(TObject *Sender)
{
strcpy(szBuffer, OffsetCH0->Text.c_str());
sWaveCh0.fOffset = atof(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::OffsetCH1Change(TObject *Sender)
{
strcpy(szBuffer, OffsetCH1->Text.c_str());
sWaveCh1.fOffset = atof(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::OffsetCH2Change(TObject *Sender)
{
strcpy(szBuffer, OffsetCH2->Text.c_str());
sWaveCh2.fOffset = atof(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::OffsetCH3Change(TObject *Sender)
{
strcpy(szBuffer, OffsetCH3->Text.c_str());
sWaveCh3.fOffset = atof(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::PeriodCH0Change(TObject *Sender)
{
strcpy(szBuffer, PeriodCH0->Text.c_str());
sWaveCh0.wPeriod = atoi(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::PeriodCH1Change(TObject *Sender)
{
strcpy(szBuffer, PeriodCH1->Text.c_str());
sWaveCh1.wPeriod = atoi(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::PeriodCH2Change(TObject *Sender)
{
strcpy(szBuffer, PeriodCH2->Text.c_str());
sWaveCh2.wPeriod = atoi(szBuffer);
}
//---------------------------------------------------------------------------
void __fastcall TFrmWave::PeriodCH3Change(TObject *Sender)
{
strcpy(szBuffer, PeriodCH3->Text.c_str());
sWaveCh3.wPeriod = atoi(szBuffer);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?