//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" #include "aiousb.h" #include "detect.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { TForm2 *DetectForm; unsigned char OutMask; int I; unsigned long Status; LowLevel = new Graphics::TBitmap; HighLevel = new Graphics::TBitmap; DeviceIndex = diOnly; OutMask = 0; DIOData = 0xFFFF; Status = DIO_Configure(DeviceIndex, false, &OutMask, &DIOData); if (Status != ERROR_SUCCESS) { DetectForm = new TForm2(NULL); if (DetectForm -> ShowModal() == mrOk) { DeviceIndex = DetectForm -> DeviceIndex; delete DetectForm; } else { delete DetectForm; exit(0); } DIO_Configure(DeviceIndex, false, &OutMask, &DIOData); } for (I = 0; I < 3; I++) { CTR_8254Mode(DeviceIndex, I, 1, 2); CTR_8254Mode(DeviceIndex, I, 2, 3); } LevelImage[ 0] = Image1; LevelImage[ 1] = Image2; LevelImage[ 2] = Image3; LevelImage[ 3] = Image4; LevelImage[ 4] = Image5; LevelImage[ 5] = Image6; LevelImage[ 6] = Image7; LevelImage[ 7] = Image8; LevelImage[ 8] = Image9; LevelImage[ 9] = Image10; LevelImage[10] = Image11; LevelImage[11] = Image12; LevelImage[12] = Image13; LevelImage[13] = Image14; LevelImage[14] = Image15; LevelImage[15] = Image16; OutButton[0] = OutButtonA; OutButton[1] = OutButtonB; LevelImages -> GetBitmap(0, LowLevel); LevelImages -> GetBitmap(1, HighLevel); DoUpdate = true; ReadTime -> Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::ReadTimeTimer(TObject *Sender) { int I; unsigned short oDIOData, Changes; oDIOData = DIOData; DIO_ReadAll(DeviceIndex, &DIOData); Changes = DIOData ^ oDIOData; if (DoUpdate == true) { Changes = 0xFFFF; DoUpdate = false; } for (I = 0; I < 16; I++) { if ((Changes & (1 << I)) != 0) { if ((DIOData & (1 << I)) !=0) LevelImage[I] -> Picture -> Assign(HighLevel); else LevelImage[I] -> Picture -> Assign(LowLevel); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::LevelImageClick(TObject *Sender) { int I; bool NewValue; I = ((TImage *) Sender) -> Tag; DIOData = DIOData ^ (1 << I); //Toggle bit NewValue = (DIOData & (1 << I)) != 0; //Get bit value DIO_Write1(DeviceIndex, I, NewValue); DoUpdate = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { delete LowLevel; delete HighLevel; } //--------------------------------------------------------------------------- void __fastcall TForm1::OutButtonClick(TObject *Sender) { int I; unsigned char OutMask; OutMask = 0; for (I=0; I < 2; I++) if (OutButton[I] -> Down == true) OutMask = OutMask | (1 << I); I = ((TSpeedButton *) Sender) -> Tag; DIOData = DIOData | (0xff << (I*8)); //Set new output byte high, in case user made a mistake. DIO_Configure(DeviceIndex, false, &OutMask, &DIOData); DoUpdate = true; } //---------------------------------------------------------------------------