Чтение USB с помощью ioctl завершается неудачей, поскольку «значение слишком велико для определенного типа данных»Android

Форум для тех, кто программирует под Android
Anonymous
Чтение USB с помощью ioctl завершается неудачей, поскольку «значение слишком велико для определенного типа данных»

Сообщение Anonymous »

Я пытаюсь прочитать USB-накопитель с помощью ioctl и USBDEVFS_BULK (встроенно на Android). USB-кабель, который я использую, содержит чип FTDI и передает данные с Arduino UNO, который записывает последовательный порт.

Запись на Android, кажется, всегда успешна, но и чтение тоже всегда терпит неудачу или завершается успешно для нескольких записей, а затем постоянно терпит неудачу с сообщением «Значение слишком велико для определенного типа данных» (75). Я использую эту настройку для простого пинг-теста: записываю один байт, порядковый номер на Android; Arduino читает байт и отвечает с тем же порядковым номером.

Я не совсем понимаю, о чем говорит эта ошибка. Насколько я понял, устройство отправило больше данных, чем может вместить буфер, который я передаю в ioctl. Я убедился, что мой Arduino отправляет обратно только 1 байт, и я ожидаю увидеть еще 2 для FTDI, всего 3 байта. Даже увеличение размера буфера, похоже, не решает проблему.

Код: Выделить всё

char mReadData[3];
struct usbdevfs_bulktransfer bulkTransferRead = {
mReadEndpoint,  // Endpoint
3,              // Length in bytes
0,              // Timeout (ms)
mReadData,     // Data
};

ret = ioctl(mFd, USBDEVFS_BULK, &bulkTransferRead);
Это код, который я использую изначально. Если я попытаюсь использовать код Android/Java для чтения и записи (используя BulkTransfer()), я наблюдаю ту же периодически возникающую проблему с чтением. В Java на Android перед записью/чтением я обязательно выполнил следующие действия:

1) Сброс PIN-кода
2) Установите скорость передачи данных
3) 8N1

Может ли кто-нибудь помочь мне описать, что я неправильно понимаю в отношении FTDI/USB, или объяснить эту ошибку о «значении, слишком большом для определенного типа данных», пожалуйста?

Подробнее здесь: https://stackoverflow.com/questions/273 ... -data-type

Вернуться в «Android»