Компонент поставил. Все компилится, примеры тоже. Только вот с использованием пока не выходит. Смотрел примеры. Что-то понятно, а что-то нет. Можно простой пример как вывести перечень подключенных устройств? Ну или подсказку какую.
Код
//********************************************************************************
********
// процедура обновляет данные о всех HID устройствах, подключенных к шине USB
void __fastcall TForm1::JvHidDeviceController1DeviceChange(TObject *Sender)
{
if (DevList == NULL){
// создать список устройств
DevList = new TList();
}
else{
// освободить список устройств от всех записей указателей на устройства
for (int i = 0; i < DevList->Count; i++)
((TJvHidDevice *)DevList->Items[i])->Free();
// очистка списка устройств
DevList->Clear();
}
// очистка компонента ListBox от старых записей названий или идентификаторов устройств
ListBox1->Clear();
Form1->Caption = "";
// перечисление всех HID устройств, подключенных к шине USB
JvHidDeviceController1->Enumerate();
Label1->Font->Color = clPurple;
Label1->Caption = "USB устройство обмена данными не подключено";
Label2->Visible = false;
}
//********************************************************************************
********
// процедура получает данные о всех HID устройствах, подключенных к шине USB
bool __fastcall TForm1::JvHidDeviceController1Enumerate(
TJvHidDevice *HidDev, const int Idx)
{
AnsiString S;
// добавление названия или идентификаторов устройства в компонент ListBox
if (HidDev->ProductName != NULL)
ListBox1->Items->Add("Подключено устройство: "
+ HidDev->ProductName);
else
ListBox1->Items->Add(S.sprintf("Device VID=%04X PID=%04X",
HidDev->Attributes.VendorID, HidDev->Attributes.ProductID));
// получение указателя на устройство
JvHidDeviceController1->CheckOutByIndex(Dev, Idx);
// добавление указателя на устройство в список устройств
DevList->Add(Dev);
// инкремент индекса записи
ListBox1->ItemIndex ++;
// получение указателя на устройство из списка устройств
TJvHidDevice *Dev = (TJvHidDevice *)DevList->Items[ListBox1->ItemIndex];
S = "USB устройство обмена данными";
if (HidDev->ProductName == S){
CurrentDevice = Dev; // активное HID устройство
// число байтов для записи в HID устройство
ToWrite = CurrentDevice->Caps.OutputReportByteLength;
Form1->Caption = HidDev->ProductName; // название устройства
if(CurrentDevice != NULL)
CurrentDevice->OnData = NULL;
if(CurrentDevice->HasReadWriteAccess)
CurrentDevice->OnData = ShowRead;
else
CurrentDevice->OnData = NULL;
}
return(true);
}
//********************************************************************************
********
void __fastcall TForm1::JvHidDeviceController1DeviceDataError(
TJvHidDevice *HidDev, DWORD Error)
{
MessageDlg("ОШИБКА чтения из HID. GetLastError=" +
IntToStr(GetLastError), mtError, TMsgDlgButtons() << mbOK, 0);
}
//********************************************************************************
********
Вот такое есть в примере. Как вызываются эти процедуры? Взято оттуда:
USB_HID_Wind.rar ( 232.89 килобайт )
Кол-во скачиваний: 495Спасибо.
Живи днем так, чтобы ночью ты спал спокойно.