Почему идентификатор кадра CAN-шины переворачивается при чтении из сокета?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему идентификатор кадра CAN-шины переворачивается при чтении из сокета?

Сообщение Anonymous »

У меня есть Raspberry Pi, считывающий данные CAN с автомобиля. Если я использую программу candump, входящую в состав can-utils, я получаю кучу данных. Пример выглядит так:

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

can0 1C4 [8]  03 F3 26 08 00 00 7F 70
Затем я написал простое приложение на C++, открывающее сокет шины can0 и считывающее некоторые данные в символьный буфер. Если я перебираю каждый символ буфера после чтения и преобразую каждый символ в целое число в шестнадцатеричном формате (и помещаю канал между каждым символом), я получаю следующее:

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

c4|1|0|0|8|0|0|0|3|f3|26|8|0|0|7f|70|
Почему байт идентификатора переворачивается, когда я читаю данные с помощью сокета и буфера символов? Такое поведение совместимо со всеми CAN ID. Код длины данных и данные указаны в правильном формате/порядке, но идентификатор наоборот.


Подробнее здесь: https://stackoverflow.com/questions/464 ... m-a-socket
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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