Native HID for FireMonkey

Delphi and C++ Builder library for communicating with Human Interface Devices.
  • uses Windows HID API
  • supports Windows 32 and Windows 64
  • available for Delphi/C++ Builder XE2 - 10.4
  • source code included in registered version
  • royalty free distribution in applications

API

type
  EFHidError = class(Exception);

  TFHidDeviceArrivalEvent = procedure(Sender: TObject; const DeviceName: string) of object;
  TFHidDeviceRemovedEvent = procedure(Sender: TObject; const DeviceName: string) of object;

  TFHidDevice = class
    constructor Create;

    function Enumerate: TStringDynArray;
    procedure Open(const DeviceName: string; Read, Write: Boolean);
    procedure Close;
    procedure FlushInputQueue;

    // Size has to be InputReportLength; Timeout in milliseconds
    procedure Read(Data: PByte; Size: Integer; Timeout: Integer);
    function Read(Timeout: Integer): TByteDynArray;

    // First byte is report ID; Size has to be OutputReportLength; Timeout in milliseconds
    procedure Write(Data: PByte; Size: Integer; Timeout: Integer);
    procedure Write(ReportID: Byte; Data: TByteDynArray; Timeout: Integer);

    // First byte is report ID; Size has to be InputReportLength
    procedure GetInputReport(Data: PByte; Size: Integer);
    function GetInputReport(ReportID: Byte): TByteDynArray;

    // First byte is report ID; Size has to be OutputReportLength
    procedure SetOutputReport(Data: PByte; Size: Integer);
    procedure SetOutputReport(ReportID: Byte; Data: TByteDynArray);

    // First byte is report ID; Size has to be FeatureReportLength
    procedure GetFeatureReport(Data: PByte; Size: Integer);
    function GetFeatureReport(ReportID: Byte): TByteDynArray;

    // First byte is report ID; Size has to be FeatureReportLength
    procedure SetFeatureReport(Data: PByte; Size: Integer);
    procedure SetFeatureReport(ReportID: Byte; Data: TByteDynArray);

    procedure GetPhysicalDescriptor(Data: PByte; Size: Integer);

    property Active: Boolean read;
    property DeviceName: string read;
    property FeatureReportLength: Word read;
    property FeatureReportSupported: Boolean read;
    property Handle: THandle read;
    property InputBufferCount: Integer read write;
    property InputReportLength: Word read;
    property InputReportSupported: Boolean read;
    property Manufacturer: string read;
    property OutputReportLength: Word read;
    property OutputReportSupported: Boolean read;
    property Product: string read;
    property ProductID: Word read;
    property ReadSupported: Boolean read;
    property SerialNumber: string read;
    property Strings[Index: Integer]: string read;
    property HasString[Index: Integer]: Boolean read;
    property Usage: Word read;
    property UsagePage: Word read;
    property VendorID: Word read;
    property VersionNumber: Word read;
    property WriteSupported: Boolean read;
    property OnDeviceArrival: TFHidDeviceArrivalEvent read write;
    property OnDeviceRemoved: TFHidDeviceRemovedEvent read write;
  end;
							

Download and order

Related links