[Fatal Error] JvHidControllerClass.pas(41): File not found: 'DBT.dcu'
uses
{$IFDEF UNITVERSIONING}
JclUnitVersioning,
{$ENDIF UNITVERSIONING}
Windows, Messages, Classes, SysUtils,
JvComponentBase,
DBT, JvSetupApi, Hid, JvTypes;
const
// a version string for the component
cHidControllerClassVersion = '1.0.35';
// strings from the registry for CheckOutByClass
cHidNoClass = 'HIDClass';
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms,
StdCtrls, Buttons, JvHidControllerClass, JvComponentBase;
type
TReportData = array [0..7] of Byte; // размер буфера репорта HID
TForm1 = class(TForm)
HidCtl: TJvHidDeviceController;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
CheckBox0: TCheckBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
procedure HidCtlArrival(HidDev: TJvHidDevice);
function HidCtlEnumerate(HidDev: TJvHidDevice;
const Idx: Integer): Boolean;
procedure HidCtlRemoval(HidDev: TJvHidDevice);
function WorkDevSetFeature(Buf: TReportData): Boolean;
procedure CheckBoxClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
WorkDev : TJvHidDevice;
end;
const
// Описание устройства
ProductName_ = 'LED USB Device';
VendorID_ = $16c0;
ProductID_ = $05df;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure TForm1.HidCtlArrival(HidDev: TJvHidDevice);
// Обработчик подключения нового устройства
// событие OnArrival от HidCtl
begin
// если устройство не определено, то вызываем энумерацию
If not Assigned(WorkDev) then HidCtl.Enumerate
end;
function TForm1.HidCtlEnumerate(HidDev: TJvHidDevice;
const Idx: Integer): Boolean;
// Поиск нужного устройства из всех подключенных
// событие OnEnumerate от HidCtl
begin
Result:= True; // продолжать поиск
If (Trim(HidDev.ProductName) = ProductName_)
then If (HidDev.Attributes.VendorID = VendorID_) and
(HidDev.Attributes.ProductID = ProductID_)
then begin // устройство найдено
HidCtl.CheckOutByIndex(WorkDev, Idx); // получаем устройство по индексу
Label2.Caption:= 'подключено';
Result:= False; // поиск закончен
end
end;
procedure TForm1.HidCtlRemoval(HidDev: TJvHidDevice);
// Обработчик физического отключения устройства
// событие OnRemoval от HidCtl
begin
If HidDev = WorkDev then
begin // устройство было отключено
WorkDev:= nil;
Label2.Caption:= ' отключено'
end
end;
function TForm1.WorkDevSetFeature(Buf: TReportData): Boolean;
// Передача данных устройству WorkDev
begin
If Assigned(WorkDev)
then Result:= WorkDev.SetFeature(Buf, WorkDev.Caps.FeatureReportByteLength)
else Result:= False
end;
procedure TForm1.CheckBoxClick(Sender: TObject);
// Опрос состояний CheckBox и передача данных устройству
var
LEDs : Byte;
ReportData: TReportData;
begin
// Опрос состояний CheckBox
LEDs:= 0;
If CheckBox0.Checked then LEDs:= LEDs+1;
If CheckBox1.Checked then LEDs:= LEDs+2;
If CheckBox2.Checked then LEDs:= LEDs+4;
If CheckBox3.Checked then LEDs:= LEDs+8;
If CheckBox4.Checked then LEDs:= LEDs+16;
If CheckBox5.Checked then LEDs:= LEDs+32;
If CheckBox6.Checked then LEDs:= LEDs+64;
If CheckBox7.Checked then LEDs:= LEDs+128;
Label3.Caption:= 'LEDs = ' + IntToStr(LEDs);
// Передача данных устройству WorkDev
FillChar(ReportData, SizeOf(ReportData), 0); // заполняем массив нулями
ReportData[0]:= 0; // номер репорта
ReportData[1]:= LEDs; // данные репорта
If WorkDevSetFeature(ReportData) // пытаемся передать данные
then Label4.Caption:= ' Ok! '
else Label4.Caption:= ' Ошибка передачи данных '
end;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.