[fpc-pascal] USB Human Interface Devices

Stefan V. Pantazi svpantazi at gmail.com
Thu Aug 15 23:30:51 CEST 2019


Hi James,

I remember going through many similar difficulties with HID. A few years 
ago I was trying to connect to much simpler devices than yours (game 
controllers, weather station base, graphic tablet, etc). USB programming 
is confusing and many abstraction layers have been created aiming at 
simplifying it. Unfortunately this introduces dependencies. I remember 
trying to port hidapi headers to Pascal and tried to use the hidraw 
backend (in linux) with mixed results. Also tried the libhid 
cross-platform library. In the end I went with libusb 1.0 for which a 
Pascal header already existed 
(https://forum.lazarus.freepascal.org/index.php?topic=11435.0) and used 
it to implement on top of it a subset of the HID API calls that suited 
my needs and kept things simple. I just posted an example on github: 
https://github.com/svpantazi/libusbxhid
Hope it helps.

In theory you could use the Windows HID API but, as others have 
suggested, the solution would not be cross platform, or, to put it 
another way, Windows HID API would become your dependency. My suggestion 
is also to go the libusb 1.0 route and use a Pascal HID library that 
depends only on libusb 1.0. Your device appears to be HID-compliant so 
no additional drivers should be needed for it. As far as I know, the 
Zadig generic driver is necessary only for non-HID devices. I remember 
using it for a rtl-sdr USB device on Windows.

Hope you find your solution. Good luck.

On 8/15/19 9:11 AM, James Richters wrote:
> Yes, in device manager I see it listed as "HID-compliant vendor-defined device"  also Zadig identifies it as "USB Input Device" and it shows Driver: HidUsb (v10.1.17763.1)
> 
> Is there a way to use the windows system HID interface with FPC already in place as there is for other windows APIs?
> 
> James
> 
> -----Original Message-----
> From: fpc-pascal <fpc-pascal-bounces at lists.freepascal.org> On Behalf Of José Mejuto
> Sent: Thursday, August 15, 2019 8:34 AM
> To: fpc-pascal at lists.freepascal.org
> Subject: Re: [fpc-pascal] USB Human Interface Devices
> 
> El 14/08/2019 a las 16:29, James Richters escribió:
> 
>> I'll have a look at your project.. maybe it will give me some clues.
>> Can you tell me how to get hid.dll?  I  find it all very confusing, can I just download the dll somewhere or do I have to get this huge confusing package and built it myself?  The sample code that is able to access my device with python on Linux uses hid.dll  I would like to at least be able to try the hid.dll... if I can get hid.dll somewhere.
> 
> Hello,
> 
> hid.dll is the windows system HID interface, the API provided by Windows.
> 
>>> In the other hand, the hardware you are trying to manage is 10CE:EB93 ?
>> Yes, I got a listing of all devices, then I plugged in the new one, and that is the ID that was not there before.
>>> If the answer is yes, that device is *not* HID compatible so you can
>>> not use hid.dll for native access, you must use WinUSB API set, or
>>> the
>>> libusb-1.0 abstraction layer.
>> I'm curious how you can tell that by looking at the number of it?
> 
> No, I just look for the product and try to find its drivers, no one name the HID interface. Do you see the device in windows device manager under the HID section "Human Interface Devices (HID)" ?
> 
> 

-- 
_______________________________________________________


More information about the fpc-pascal mailing list