Einzelnen Beitrag anzeigen

wschrabi

Registriert seit: 16. Jan 2005
382 Beiträge
 
#52

AW: HID Komponente - Komme nicht zurecht

  Alt 23. Mär 2016, 07:13
Hallo,
leider ist dieser Thread schon lange her.
Aber ich habe auch ein Problem. Habe ein HID Device, ohne Interrupt. Also genau so wie eine Maus.
WIe kann ich ohne die hid.dll funktion GetINputReport zu verwenden (da diese nicht auf der Android API verfügbar ist) mit der Jvcl Library einen GetInputReport realisieren.

Kann man da ein ReadFile verwenden? Doch wie wird der USB Request Get_report dann gesendet?
Wäre schön wenn mir einer helfen könnte.
danke
Walter

PS: I have not found an equivalent routine for HidD_GetFeature in Android API.
All I have found is:

Code:
//
// Generated by JavaToPas v1.5 20140918 - 093132
////////////////////////////////////////////////////////////////////////////////
unit android.hardware.usb.UsbDeviceConnection;

interface

uses
  AndroidAPI.JNIBridge,
  Androidapi.JNI.JavaTypes,
  android.hardware.usb.UsbInterface,
  android.hardware.usb.UsbEndpoint;

type
  JUsbRequest = interface; // merged
  JUsbDeviceConnection = interface;

  JUsbDeviceConnectionClass = interface(JObjectClass)
    ['{74BC41F4-07BC-431C-BC50-22DE40E287A9}']
    function bulkTransfer(endpoint : JUsbEndpoint; buffer : TJavaArray<Byte>; length : Integer; timeout : Integer) : Integer; cdecl; overload;// (Landroid/hardware/usb/UsbEndpoint;[BII)I A: $1
    function bulkTransfer(endpoint : JUsbEndpoint; buffer : TJavaArray<Byte>; offset : Integer; length : Integer; timeout : Integer) : Integer; cdecl; overload;// (Landroid/hardware/usb/UsbEndpoint;[BIII)I A: $1
    function claimInterface(intf : JUsbInterface; force : boolean) : boolean; cdecl;// (Landroid/hardware/usb/UsbInterface;Z)Z A: $1
    function controlTransfer(requestType : Integer; request : Integer; value : Integer; &index : Integer; buffer : TJavaArray<Byte>; length : Integer; timeout : Integer) : Integer; cdecl; overload;// (IIII[BII)I A: $1
    function controlTransfer(requestType : Integer; request : Integer; value : Integer; &index : Integer; buffer : TJavaArray<Byte>; offset : Integer; length : Integer; timeout : Integer) : Integer; cdecl; overload;// (IIII[BIII)I A: $1
    function getFileDescriptor : Integer; cdecl;                               // ()I A: $1
    function getRawDescriptors : TJavaArray<Byte>; cdecl;                      // ()[B A: $1
    function getSerial : JString; cdecl;                                       // ()Ljava/lang/String; A: $1
    function releaseInterface(intf : JUsbInterface) : boolean; cdecl;          // (Landroid/hardware/usb/UsbInterface;)Z A: $1
    function requestWait : JUsbRequest; cdecl;                                 // ()Landroid/hardware/usb/UsbRequest; A: $1
    procedure close ; cdecl;                                                   // ()V A: $1
  end;

  [JavaSignature('android/hardware/usb/UsbDeviceConnection')]
  JUsbDeviceConnection = interface(JObject)
    ['{8E5EFAEF-10A2-482F-8862-F8056786D1B9}']
    function bulkTransfer(endpoint : JUsbEndpoint; buffer : TJavaArray<Byte>; length : Integer; timeout : Integer) : Integer; cdecl; overload;// (Landroid/hardware/usb/UsbEndpoint;[BII)I A: $1
    function bulkTransfer(endpoint : JUsbEndpoint; buffer : TJavaArray<Byte>; offset : Integer; length : Integer; timeout : Integer) : Integer; cdecl; overload;// (Landroid/hardware/usb/UsbEndpoint;[BIII)I A: $1
    function claimInterface(intf : JUsbInterface; force : boolean) : boolean; cdecl;// (Landroid/hardware/usb/UsbInterface;Z)Z A: $1
    function controlTransfer(requestType : Integer; request : Integer; value : Integer; &index : Integer; buffer : TJavaArray<Byte>; length : Integer; timeout : Integer) : Integer; cdecl; overload;// (IIII[BII)I A: $1
    function controlTransfer(requestType : Integer; request : Integer; value : Integer; &index : Integer; buffer : TJavaArray<Byte>; offset : Integer; length : Integer; timeout : Integer) : Integer; cdecl; overload;// (IIII[BIII)I A: $1
    function getFileDescriptor : Integer; cdecl;                               // ()I A: $1
    function getRawDescriptors : TJavaArray<Byte>; cdecl;                      // ()[B A: $1
    function getSerial : JString; cdecl;                                       // ()Ljava/lang/String; A: $1
    function releaseInterface(intf : JUsbInterface) : boolean; cdecl;          // (Landroid/hardware/usb/UsbInterface;)Z A: $1
    function requestWait : JUsbRequest; cdecl;                                 // ()Landroid/hardware/usb/UsbRequest; A: $1
    procedure close ; cdecl;                                                   // ()V A: $1
  end;

  TJUsbDeviceConnection = class(TJavaGenericImport<JUsbDeviceConnectionClass, JUsbDeviceConnection>)
  end;

  // Merged from: .\android-19\android.hardware.usb.UsbRequest.pas
  JUsbRequestClass = interface(JObjectClass)
    ['{2D0D4B19-E476-417D-B7E1-C209650DD3BB}']
    function cancel : boolean; cdecl;                                          // ()Z A: $1
    function getClientData : JObject; cdecl;                                   // ()Ljava/lang/Object; A: $1
    function getEndpoint : JUsbEndpoint; cdecl;                                // ()Landroid/hardware/usb/UsbEndpoint; A: $1
    function init : JUsbRequest; cdecl;                                        // ()V A: $1
    function initialize(connection : JUsbDeviceConnection; endpoint : JUsbEndpoint) : boolean; cdecl;// (Landroid/hardware/usb/UsbDeviceConnection;Landroid/hardware/usb/UsbEndpoint;)Z A: $1
    function queue(buffer : JByteBuffer; length : Integer) : boolean; cdecl;   // (Ljava/nio/ByteBuffer;I)Z A: $1
    procedure close ; cdecl;                                                   // ()V A: $1
    procedure setClientData(data : JObject) ; cdecl;                           // (Ljava/lang/Object;)V A: $1
  end;

  [JavaSignature('android/hardware/usb/UsbRequest')]
  JUsbRequest = interface(JObject)
    ['{BBCFD8A0-6F88-48AE-B012-B4EB489C2E4A}']
    function cancel : boolean; cdecl;                                          // ()Z A: $1
    function getClientData : JObject; cdecl;                                   // ()Ljava/lang/Object; A: $1
    function getEndpoint : JUsbEndpoint; cdecl;                                // ()Landroid/hardware/usb/UsbEndpoint; A: $1
    function initialize(connection : JUsbDeviceConnection; endpoint : JUsbEndpoint) : boolean; cdecl;// (Landroid/hardware/usb/UsbDeviceConnection;Landroid/hardware/usb/UsbEndpoint;)Z A: $1
    function queue(buffer : JByteBuffer; length : Integer) : boolean; cdecl;   // (Ljava/nio/ByteBuffer;I)Z A: $1
    procedure close ; cdecl;                                                   // ()V A: $1
    procedure setClientData(data : JObject) ; cdecl;                           // (Ljava/lang/Object;)V A: $1
  end;

  TJUsbRequest = class(TJavaGenericImport<JUsbRequestClass, JUsbRequest>)
  end;


implementation

end.
Can I realize the Get_Report with a Control Transfer (here there would be the function:
Code:
   function controlTransfer(requestType : Integer; request : Integer; value : Integer; &index : Integer; buffer : TJavaArray<Byte>; length : Integer; timeout : Integer) : Integer; cdecl; overload;
)

Any advices are very welcome!
Thanks
Walter

Geändert von wschrabi (23. Mär 2016 um 08:08 Uhr)
  Mit Zitat antworten Zitat