Запись на 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);
1) Сброс PIN-кода
2) Установите скорость передачи данных
3) 8N1
Может ли кто-нибудь помочь мне описать, что я неправильно понимаю в отношении FTDI/USB, или объяснить эту ошибку о «значении, слишком большом для определенного типа данных», пожалуйста?
Подробнее здесь: https://stackoverflow.com/questions/273 ... -data-type