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 + -
显示快捷键?