fsdb Опубликовано 5 декабря, 2017 Поделиться Опубликовано 5 декабря, 2017 Ребята, подскажите каким образом отправляются данные в USB. нужен пример рабочий. может где есть? Цитата Ссылка на комментарий
0 Андрей Рулин Опубликовано 7 октября, 2019 Поделиться Опубликовано 7 октября, 2019 Вот например есть https://github.com/LongDirtyAnimAlf/Delphi-Android-USB-HID . К сожалению библиотека старая , не использует возможности последний версий API . И, подозреваю, глючная. Ingalime 1 Цитата Ссылка на комментарий
0 Андрей Рулин Опубликовано 7 ноября, 2019 Поделиться Опубликовано 7 ноября, 2019 (изменено) Я вот кстати пробовал реализовать более простой пример подключения , чем в этой библиотеке. //NewUSB:=TUSB.Create; FEpOut:=nil; Memo1.Lines.Append('Begin'); if UsbManager=nil then UsbManager:= TJvHidDeviceController.Create(Self); //usbManager = context.getSystemService(Context.USB_SERVICE) as UsbManager DeviceList := UsbManager.FUsbManager.getDeviceList; iter := DeviceList.values.iterator; while iter.hasNext do begin LocalUSBDevice := TJUSBDevice.Wrap((iter.next as ILocalObject).GetObjectID); if (LocalUSBDevice.getVendorId <> VENDOR) or (LocalUSBDevice.getproductId <> PRODUCT) then continue;//continue; Memo1.Lines.Append('Stage 1'); for i:=0 to LocalUsbDevice.getInterfaceCount-1 do begin Memo1.Lines.Append('Stage 2'); LocalUsbInterface := LocalUsbDevice.getInterface(0); if LocalUsbInterface.getInterfaceClass=3 then break; end; //Open end; if NOT UsbManager.UsbManager.hasPermission(LocalUSBDevice) then begin PermissionIntent:=TJPendingIntent.JavaClass.getBroadcast(SharedActivityContext, 0, TJIntent.JavaClass.init(StringToJString(ACTION_USB_PERMISSION)), 0); Filter := TJIntentFilter.JavaClass.init; Filter.addAction(StringToJString(ACTION_USB_PERMISSION)); FBroadcastReceiverListener := TBroadcastReceiverListener.Create(UsbManager); FReceiver := TJFMXBroadcastReceiver.JavaClass.init(FBroadcastReceiverListener); SharedActivityContext.getApplicationContext.registerReceiver( FReceiver, Filter); UsbManager.UsbManager.requestPermission(LocalUSBDevice,PermissionIntent); exit; end; if LocalUsbInterface=nil then exit else Memo1.Lines.Append('Stage 3'); for I := 0 to LocalUsbInterface.getEndpointCount-1 do begin FUsbEP := LocalUsbInterface.getEndpoint(i); if FUsbEP.getType=3 then begin if FUsbEP.getDirection = TJUsbConstantsUSB_DIR_OUT then begin if FEpOut=nil then FEpOut := FUsbEP; end else if FUsbEP.getDirection = TJUsbConstantsUSB_DIR_IN then begin if FEpIn=nil then FEpIn := FUsbEP; end; end; end; if {(EpIn=nil) AND} (FEpOut=nil) then exit; Memo1.Lines.Append('Stage 4'); // Open device FUsbDeviceConnection := UsbManager.UsbManager.openDevice(LocalUSBDevice); if not assigned( FUsbDeviceConnection) then exit; Memo1.Lines.Append('Stage 5'); if not FUsbDeviceConnection.claimInterface(LocalUsbInterface, True) then exit; Memo1.Lines.Append('Stage 6'); btnHIDEnable.Enabled := True; btnGetSerial.Enabled := True; //FUsbDeviceConnection. Соотвественно, передача делается через S:=IntToStr(FUsbDeviceConnection.bulkTransfer(FEpOut, Buffer, {Buffer.Length}3, 0)); //можно 0 Memo1.Lines.Append('Retval = '+S); Он кстати при подключении пишет, что всё нормально. Но при попытке отправки данных увы, ничего не передаёт. Даже более того, другие программы на Java , запущенные параллельно тоже после моей не могут ничего передать. Изменено 7 ноября, 2019 пользователем Андрей Рулин Цитата Ссылка на комментарий
0 Андрей Рулин Опубликовано 13 ноября, 2019 Поделиться Опубликовано 13 ноября, 2019 bytes_written := FUsbDeviceConnection.bulkTransfer({FUsbEPBO}FUsbEPII, Buffer, Size, 100); Что характерно, если так вот записать, то есть пытаться передать данные в не ту EndPoint всё равно выдаёт,что передано 3 байта. Истина, похоже где-то рядом... Цитата Ссылка на комментарий
0 Андрей Рулин Опубликовано 26 ноября, 2019 Поделиться Опубликовано 26 ноября, 2019 Пример который я выше привёл, всё-таки рабочий(на запись). Но в Delphi XE7 и ниже неправильно компилируется. В Delphi 10 нормально компилируется. Цитата Ссылка на комментарий
Вопрос
fsdb
Ребята, подскажите каким образом отправляются данные в USB. нужен пример рабочий. может где есть?
Ссылка на комментарий
4 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.