unit DetectUnit; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TDetectForm = class(TForm) Panel1: TPanel; DeviceList: TListBox; GoButton: TButton; DetectButton: TButton; StatusMemo: TMemo; procedure DetectButtonClick(Sender: TObject); procedure GoButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); public DeviceIndex: LongWord; end; implementation {$R *.DFM} uses AIOUSB; var DeviceOK: array[0..7] of Boolean; procedure TDetectForm.FormCreate(Sender: TObject); begin DetectButton.Click; DeviceList.ItemIndex := 0; end; procedure TDetectForm.DetectButtonClick(Sender: TObject); var DeviceMask: LongWord; PID: LongWord; I: Integer; Found: Boolean; Nom: String; begin DeviceList.Items.Clear; Found := False; DeviceMask := GetDevices; for I := 0 to 7 do begin DeviceOK[I] := False; if (DeviceMask and (1 shl I)) <> 0 then begin QueryDeviceInfo(I, @PID, nil, nil, nil, nil); case PID of $4001: begin Nom := 'USB-DA12-8A'; DeviceOK[I] := True; Found := True; end; $4002: begin Nom := 'USB-DA12-8A'; DeviceOK[I] := True; Found := True; end; else Nom := IntToHex(PID, 4) + ' '; end; end else Nom := '' ; DeviceList.Items.Add(IntToStr(I) + ': ' + Nom); end; if Found then StatusMemo.Lines.Text := 'Select the device you want to work with and click Go.' else StatusMemo.Lines.Text := 'No compatible devices found; your device may not be installed, or may not be installed properly. Click Redetect to check again.' ; end; procedure TDetectForm.GoButtonClick(Sender: TObject); var I: Integer; begin I := DeviceList.ItemIndex; if (I = -1) //No device index selected or (not DeviceOK[I]) //Invalid device index selected then begin Beep; Exit; end; DeviceIndex := I; ModalResult := mrOK; end; end.