unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
DLLNAME = 'SLABHIDDevice.dll';
// Return Codes
HID_DEVICE_SUCCESS = $00;
HID_DEVICE_NOT_FOUND = $01;
HID_DEVICE_NOT_OPENED = $02;
HID_DEVICE_ALREADY_OPENED = $03;
HID_DEVICE_TRANSFER_TIMEOUT = $04;
HID_DEVICE_TRANSFER_FAILED = $05;
HID_DEVICE_CANNOT_GET_HID_INFO = $06;
HID_DEVICE_HANDLE_ERROR = $07;
HID_DEVICE_INVALID_BUFFER_SIZE = $08;
HID_DEVICE_SYSTEM_CODE = $09;
HID_DEVICE_UNSUPPORTED_FUNCTION = $0A;
HID_DEVICE_UNKNOWN_ERROR = $FF;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure ShowRead(ReportID: Byte; Data: Pointer; Size: Word);
end;
HID_DEVICE = Pointer;
TBuffer = record
inhalt: string[14];
end;
var
Form1: TForm1;
function HidDevice_GetNumHidDevices(VID: Word; PID: Word): integer; stdcall; external DLLNAME ;
function HidDevice_Open(var device: HID_DEVICE; DevNum: Integer; VID: Word; PID: Word): BYTE; stdcall; external DLLNAME ;
function HidDevice_GetInputReport_Control (device: HID_DEVICE;
var buffer: Pointer; // urspr ist hier var buffer: BYTE gestanden
bufferSize: LongInt):BYTE; stdcall; external DLLNAME ;
function HidDevice_GetInputReport_Interrupt(device: HID_DEVICE;
var buffer: array of Char; // urspr ist hier var buffer: BYTE gestanden
bufferSize: LongInt;
numReports: LongInt;
var bytesReturned: LongInt):BYTE; stdcall; external DLLNAME ;
function HidDevice_GetInputReportBufferLength(device: HID_DEVICE): Integer; stdcall; external DLLNAME ;
function HidDevice_Close(device: HID_DEVICE):BYTE stdcall; external DLLNAME ;
implementation
{$R *.dfm}
const
VID = $152A;
PID = $8261;
var
devNum: integer;
m_hid: HID_DEVICE;
line : String;
Stop: Boolean = False;
//InputEnableBuffer: ;
bufferPtr : Pointer;
procedure TForm1.ShowRead( ReportID: Byte; Data: Pointer; Size: Word);
var
I: Integer;
Str: string;
begin
Str := Format('RD %.2x ', [ReportID]);
for I := 0 to Size - 1 do
Str := Str + Format('%.2x ', [Cardinal(PChar(Data)[I])]);
Memo1.Lines.Add(Str);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
status: Byte;
len1: LongInt;
i,BytesRead: LongInt;
begin
devNum := HidDevice_GetNumHidDevices(VID, PID);
ShowMessage('DeviceID = '+IntToStr(devNum));
if devNum <> 0 then
begin
status := HidDevice_Open(m_hid, devNum-1,VID, PID);
if (status = HID_DEVICE_SUCCESS) then ShowMessage('OK!');
repeat
begin
len1 := HidDevice_GetInputReportBufferLength(m_hid);
//InputEnableBufferPtr.inhalt[1] := $00;
if len1 <> 0 then
begin
//HidDevice_GetInputReport_Interrupt(m_hid, InputEnableBuffer,len1-1,1, BytesRead);
HidDevice_GetInputReport_Control(m_hid, BufferPtr,len1-1);
//ShowRead( ReportID: Byte; const Data: Pointer; Size: Word);
ShowRead( 00, BufferPtr, len1-1);
end;
end;
until Stop;
end;
HidDevice_Close(m_hid);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Stop:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
GetMem(BufferPtr, 15 * SizeOf(Byte));
';
end;
end.