У меня следующая проблема - Настраиваю соединение по USB между терминалом и устройством android, соединение устанавливается если его настраивать через endPoints, однако так как у терминала только 1 EndPoint приходится использовать UsbSerial и вот с ним у меня возникает проблема.
UsbSerialProber.getDefaultProber().findAllDrivers()
возвращает -1, почему это происходит и что делать если не находится ни один драйвер?
// этот метод не находит драйверов
List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(usbManager);
if (availableDrivers.isEmpty()) {
return;
}
UsbSerialDriver driver = availableDrivers.get(0);
final UsbDeviceConnection connection2 = usbManager.openDevice(driver.getDevice());
if (connection == null) {
// add UsbManager.requestPermission(driver.getDevice(), ..) handling here
return;
}
Буду очень признателен если кто-то напишет или скинет ссылку на пример использования только 1 EndPoint для реализации обмена данными без UsbSerial
Эндпоинты это основа обмена по USB. Дальше обмен осуществляется либо через драйвер, который подключается к эндпоинтам и выдает устройство в диспечере устройств / devfs. Либо напрямую через libusb
. При подключении через последний драйвер выгружается.
USBserial это простейший драйвер, который создает виртуальный ком порт и связывает его с усб устройством. Драйверу нужно знать какие устройства поддерживаются и если устройства нет в списке - подключиться к нему через ком порт можно только насильно. Но и если всё хорошо, то libusb также может отнять устройство у драйвера.
USBserial помогает с контролем потока данных, на нем можно гонять прямую передачу файлов через ядро. Также удобен для работы с консольными программами или с теми, где в настройках указывается устройство вручную пользователем.
Работа через эндпоинт проще в програмном режиме. Не стоит пинать устройство ннасильно, если оно не поддерживается потому как это требует привелегий и не надежно при переносе на другую систему или другое устройство.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Столкнулся с такой проблемой, что в БД записываются "????" вместо кириллицыИзменил настройки проекта на кодировку UTF-8, поменял БД MySQL тоже...
Если попытаться вызвать iteratorremove() до вызова next(), то мы получим исключение IllegalStateException
Как добавить в конец строки символ " ' " не вызывая два раза builderreplace?