//--------------------------------------------------------------------------- #include #pragma hdrstop #include "MainUnit.h" #include "DetectUnit.h" #include "AIOUSB.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" unsigned long DeviceIndex; TSpeedButton *OutButton[4]; TTrackBar *FreqOutTrack[5]; TSpeedButton *FreqOutButton[5]; TPanel *counterPanels[15]; bool DoUpdate; TMainForm *MainForm; //--------------------------------------------------------------------------- __fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- AnsiString FormatFreq(double Freq) { if (Freq >= 1000000) return Format("%.2f", ARRAYOFCONST((Freq / 1000000))) + "MHz"; else if (Freq >= 10000) return Format("%.1f", ARRAYOFCONST((Freq / 1000))) + "KHz"; else if (Freq >= 1000) return Format("%.2f", ARRAYOFCONST((Freq / 1000))) + "KHz"; else if (Freq >= 10) return Format("%.1f", ARRAYOFCONST((Freq))) + "Hz"; else if (Freq >= 1) return Format("%.2f", ARRAYOFCONST((Freq))) + "Hz"; else return Format("%f", ARRAYOFCONST((Freq))) + "Hz"; } void __fastcall TMainForm::FormCreate(TObject *Sender) { TDetectForm *DetectForm = new TDetectForm(this); BYTE OutMask; int I; unsigned long Status; unsigned long DIOData; DeviceIndex = diOnly; OutMask = 0x00; DIOData = 0xFFFFFFFF; Status = DIO_Configure(DeviceIndex, False, &OutMask, &DIOData); if (Status != ERROR_SUCCESS) { if (DetectForm->ShowModal() == mrOk) { DeviceIndex = DetectForm->DeviceIndex; DetectForm->Free(); } else { DetectForm->Free(); Application->Terminate(); exit(0); } } FreqOutTrack[0] = FreqOutTrackA; FreqOutTrack[1] = FreqOutTrackB; FreqOutTrack[2] = FreqOutTrackC; FreqOutTrack[3] = FreqOutTrackD; FreqOutTrack[4] = FreqOutTrackE; FreqOutButton[0] = FreqOutButtonA; FreqOutButton[1] = FreqOutButtonB; FreqOutButton[2] = FreqOutButtonC; FreqOutButton[3] = FreqOutButtonD; FreqOutButton[4] = FreqOutButtonE; counterPanels[0] = counterPanel0; counterPanels[1] = counterPanel1; counterPanels[2] = counterPanel2; counterPanels[3] = counterPanel3; counterPanels[4] = counterPanel4; counterPanels[5] = counterPanel5; counterPanels[6] = counterPanel6; counterPanels[7] = counterPanel7; counterPanels[8] = counterPanel8; counterPanels[9] = counterPanel9; counterPanels[10] = counterPanel10; counterPanels[11] = counterPanel11; counterPanels[12] = counterPanel12; counterPanels[13] = counterPanel13; counterPanels[14] = counterPanel14; DoUpdate = True; readTimer->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TMainForm::FreqOutTrackChange(TObject *Sender) { int I; double CounterValue; AnsiString TempString; I = ((TTrackBar *)(Sender))->Tag; CounterValue = (0xFFFF - FreqOutTrack[I]->Position); TempString = FormatFreq(10000000 / (CounterValue * CounterValue)); FreqOutButton[I]->Caption = "Output " + TempString; if (FreqOutButton[I]->Down) { CTR_8254ModeLoad(DeviceIndex, I, 1, 2, CounterValue); CTR_8254ModeLoad(DeviceIndex, I, 2, 3, CounterValue); } } //--------------------------------------------------------------------------- void __fastcall TMainForm::FreqOutButtonClick(TObject *Sender) { int I; unsigned long CounterValue; I = ((TSpeedButton *)(Sender))->Tag; if (FreqOutButton[I]->Down) { CounterValue = unsigned(0xFFFF - FreqOutTrack[I]->Position); CTR_8254ModeLoad(DeviceIndex, I, 1, 2, CounterValue); CTR_8254ModeLoad(DeviceIndex, I, 2, 3, CounterValue); } else { CTR_8254Mode(DeviceIndex, I, 1, 2); CTR_8254Mode(DeviceIndex, I, 2, 3); } } //--------------------------------------------------------------------------- void __fastcall TMainForm::readTimerTimer(TObject *Sender) { unsigned short value[15]; CTR_8254ReadAll(DeviceIndex, value); for (int count = 0; count < 15; count++) { counterPanels[count] -> Caption = IntToHex(value[count], 4); } } //--------------------------------------------------------------------------- void __fastcall TMainForm::Button1Click(TObject *Sender) { for ( int I = 0; I <= 4; ++I ) { CTR_8254ModeLoad(DeviceIndex, I, 0, 2, 0); CTR_8254ModeLoad(DeviceIndex, I, 1, 2, 0); CTR_8254ModeLoad(DeviceIndex, I, 2, 3, 0); } } //---------------------------------------------------------------------------