![]() |
AW: Komponente Android Daten USB senden/empfangen
Zitat:
But generally, it could be implementated with Android API to make REPORTs, right? If so, I need someone how makes it. :oops: Moreover, I have done the firmware for my device. Its like a mouse. Maybe it is easier to change the mouse firmware (which is not interruped) into a HID with interupes. Do you know what I have generally to change ? The mouse firmware I have done step by step according a how-to manual. It transfers only 12 BYTES when I hit one DIP switch. In My WIN Prg I poll by getting reports the device and get the 12 Bytes which are interpreted than. If it would be done by interuppes, I just could use the OnData Handler and it would be quite easy with the JVCL Lib. Thanks for help Walter |
AW: Komponente Android Daten USB senden/empfangen
Zitat:
I would be thankful if I can ask you (many) more. thanks PS: One more question: Would this be a way to make the prg debugable? My Device is connected to the ANdroid usb OTG. So I can not debug via Delphi and the device is connected. So My idea: Wo make the same way with WIN API with the control transfer, as my device can be connected to WINDOWS and so I can debug the prg too. When It works on win I copy it to my Android program. Would this a way to start the investigation? I tried: But I do not get an aquivalent function in the WIN API (Hid.dll) for
Code:
.
FUsbDeviceConnection.controlTransfer
How can I make a controltransfer with win api wihtout using the ready made GEt_Report. Any ideas? Thanks |
AW: Komponente Android Daten USB senden/empfangen
Ok.
I have added a quick and dirty feature report (see GitHub). Not tested. Just use it as a start. Adapt for your needs. Now I have to go back to normal business. |
AW: Komponente Android Daten USB senden/empfangen
Liste der Anhänge anzeigen (Anzahl: 1)
I have tried it this way.
Code:
Accoring to my sniffer snappshot of my working windows prg.
function TJvHidDevice.GetFeatureReport: string;
const STD_USB_REQUEST_RECIPIENT = $01; // Interface STD_USB_REQUEST_GET_REPORT = $01; //HID GET_REPORT STD_USB_REQUEST_SET_REPORT = $09; //HID SET_REPORT LIBUSB_FEATURE_REPORT = $0301; //Feature report ($0300), ID = 1 ($01) LIBUSB_FEATURE_REPORT_LENGTH = $FF; (* my try //STD_USB_REQUEST_GET_DESCRIPTOR = $06; STD_USB_REQUEST_GET_REPORT = $01; STD_USB_REQUEST_TYPE_GET_REPORT = $A1; STD_USB_REQUEST_VALUE_GET_REPORT = $100; LIBUSB_DT_STRING = $03; *) var i,rdo:integer; buffer : TJavaArray<Byte>; S : String; begin if Openfile then begin buffer := TJavaArray<Byte>.Create(255); rdo := FUsbDeviceConnection.controlTransfer( (TJUsbConstantsUSB_DIR_IN OR TJUsbConstantsUSB_TYPE_CLASS OR STD_USB_REQUEST_RECIPIENT), STD_USB_REQUEST_GET_REPORT, LIBUSB_FEATURE_REPORT, 0, buffer, LIBUSB_FEATURE_REPORT_LENGTH, 2000); (* my try rdo := FUsbDeviceConnection.controlTransfer( STD_USB_REQUEST_TYPE_GET_REPORT, STD_USB_REQUEST_GET_REPORT, STD_USB_REQUEST_VALUE_GET_REPORT, 0, buffer, $0B, 0); *) if rdo<0 then begin buffer.Free; result:=''; exit; end; if rdo>255 then rdo:=255; S:=''; for i:=0 to rdo do begin S:=S+Char(buffer.Items[i]); end; result:=S; buffer.Free; end else result:=''; end; (See attached screeshoot) |
AW: Komponente Android Daten USB senden/empfangen
Zitat:
The ShardeActivity... is not recognized in your file. In the new Github file, you forgot this file in the uses clauses.
Code:
FMX.Helpers.Android
|
AW: Komponente Android Daten USB senden/empfangen
Dear Don,
one furhter question: My Firmware has no Serial Number. COuld this be a problem, that I can not open a file. As If OpenFile is always false. I can re_flash my firmware with a serial number, but how can I enumerate the usb device without one. Thanks walter |
AW: Komponente Android Daten USB senden/empfangen
I think you are referring to usb.pas ?!
If so, this usb.pas is tailor made for my application. It is a measurement system with sometimes over 25 mcu's. All connected by USB. All mcu's have a serial, so that the app can distinguisch them. On initial connect, a serial is generated by the main system, and stored in firmware of the mcu. If you do not connect multiple identical USB HID devices onto a single system, then you do not need the whole serial selection protocol. Just use:
Code:
Also adjust
HidCtl.OnArrival:= DeviceArrival;
HidCtl.OnRemoval:= DeviceRemoval;
Code:
TReport = packed record
ReportID: byte; Data: array [0..15] of byte; // adjust 15 to fit your datapacket lenghth (often 64 bits so 63 is a good guess!!) end; |
AW: Komponente Android Daten USB senden/empfangen
Zitat:
I have only one IN EP, like a mouse. BTW: For what is that: {.$define WITHPERMISSION} I see that you use this here:
Code:
Do I need that on my Tablet?
...
{$ifdef WITHPERMISSION} FPermissionIntent : JPendingIntent; {$endif} ... {$ifdef WITHPERMISSION} FMyController.UsbManager.requestPermission(FUsbDevice,FMyController.PermissionIntent); {$endif} One more I think to change: I have a NON INterupted HID Device and in your code there is:
Code:
I think the TJUsbConstantsUSB_ENDPOINT_XFER_INT must also change. RIght?
// Get HID endpoint 1
if FUsbInterface.getEndpointCount>1 then begin FUsbEP := FUsbInterface.getEndpoint(1); if FUsbEP.getType=TJUsbConstantsUSB_ENDPOINT_XFER_INT then begin if FUsbEP.getDirection = TJUsbConstantsUSB_DIR_OUT then begin FEpOut := FUsbEP; end else if FUsbEP.getDirection = TJUsbConstantsUSB_DIR_IN then begin FEpIn := FUsbEP; end; end; end; Thank you very much! |
AW: Komponente Android Daten USB senden/empfangen
I think you do not need the permission part.
As long as you apply the device filter (device_filter.xml ; with your values). AFAIK, you do not use the interrupt endpoints, so they are not important for your programme. |
AW: Komponente Android Daten USB senden/empfangen
Alfred, yes that was an issue, I need the permission define.
Now I can get my 12 Bytes from the Device by GET_REPORT Request. Thank you very very much for your help. Best regards :-D Walter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz