Я хочу читать данные длиной в несколько байтов сразу из UART1 / ttyO1 на BeagleBone Black (Debian) с помощью функции read(2)
(см. Мой прежний Q здесь ). Например:
uint32_t _integer32;
read(_fd_rx, &_integer32, 4u);
Но переменная назначения _integer32
будет хранить полученные байты данных в обратном порядке. Например, когда входящие байты идут в следующем порядке: 0x01
, 0x02
, 0x03
, 0x04
, тогда _integer32
будет содержать значение: 0x04030201
вместо 0x01020304
.
Почемуэто происходит?
Порядок входящих байтов, безусловно, правильный, поскольку
многократные однобайтовые чтения read(_fd_rx, &_integer8, 1u);
(и печати) показали, что входящий порядокправильно, и
Я тот, кто отправляет данные на BBB с помощью кабеля преобразователя USB-TTL.
Я могу представить, что ttyO1 представлен как FIFO, который заполнен правильно, только read()
не действует соответственно.
Моя цель состояла бы в том, чтобыбыть в состоянии прочитать, может быть, даже 4 КБ (иначе N_TTY_BUF_SIZE) байтов одновременно с read()
в предварительно выделенную область памяти. Требуемый размер неизвестен.