Candump показывает 29-битные идентификаторы вместо 11-битных - не может воспроизводить коды

Попытка воспроизвести коды CAN для Dodge Promaster 2018 года с помощью can-utils. Из того, что я я прочитал, они используют 11-битный идентификатор CAN. Однако, когда я использую:

candump -L can0 > can.log

Журнал показывает 29-битные идентификаторы

(1519238827.107818) can0 04394100#00000000F0006000
(1519238827.122395) can0 063D4000#4652000080FE0000
(1519238827.126761) can0 04394000#000000AB
(1519238827.147822) can0 03029000#0000000000000000
(1519238827.152676) can0 06254000#00FFFF00FFFFFF00
(1519238827.157823) can0 03029100#0000000000000000
(1519238827.207842) can0 04394100#00000000F0006000
(1519238827.222727) can0 06314000#0000000000000000
(1519238827.226953) can0 04394000#000000AB
(1519238827.244633) can0 0E094000#001A00000409
(1519238827.247843) can0 03029000#0000000000000000
(1519238827.249614) can0 0E094003#001A
(1519238827.251375) can0 0E094020#000A
(1519238827.253121) can0 0E09400A#001A
(1519238827.254935) can0 0621400A#0000
(1519238827.257940) can0 03029100#0000000000000000
(1519238827.262128) can0 06314020#100000BC

Я думаю, именно поэтому воспроизведение с помощью canplayer не работает. Кто-нибудь знает, как я могу заставить candump использовать 11-битные идентификаторы?


person physiii    schedule 21.02.2018    source источник


Ответы (2)


Вы не можете заставить candump использовать 11-битные идентификаторы, поскольку формат кадра определяется битом в поле арбитража (см. Википедия - CAN-шина, подраздел "Фрейм данных"). После быстрого просмотра статьи, на которую вы ссылаетесь, я увидел, что модель автомобиля 2000-х годов, а ваша машина 2018 года. За это время, вероятно, было внесено много изменений.

В заключение: ваша проблема не одна, это ваша статья, которая слишком старая и не подходит к вашей машине.

person Benoît    schedule 18.06.2019

Вы можете использовать команду candump с параметром фильтра, как показано ниже:

  Up to 16 CAN interfaces with optional filter sets can be specified
    on the commandline in the form: <ifname>[,filter]*

    Comma separated filters can be specified for each given CAN interface:
     <can_id>:<can_mask> (matches when <received_can_id> & mask == can_id & mask)
     <can_id>~<can_mask> (matches when <received_can_id> & mask != can_id & mask)
     #<error_mask>       (set error frame filter, see include/linux/can/error.h)
     [j|J]               (join the given CAN filters - logical AND semantic)

    CAN IDs, masks and data content are given and expected in hexadecimal values.
    When can_id and can_mask are both 8 digits, they are assumed to be 29 bit EFF.
    Without any given filter all data frames are received ('0:0' default filter).

    Use interface name 'any' to receive from all CAN interfaces.

    Examples:
    candump -c -c -ta can0,123:7FF,400:700,#000000FF can2,400~7F0 can3 can8
    candump -l any,0~0,#FFFFFFFF    (log only error frames but no(!) data frames)
    candump -l any,0:0,#FFFFFFFF    (log error frames and also all data frames)
    candump vcan2,92345678:DFFFFFFF (match only for extended CAN ID 12345678)
    candump vcan2,123:7FF (matches CAN ID 123 - including EFF and RTR frames)
    candump vcan2,123:C00007FF (matches CAN ID 123 - only SFF and non-RTR frames)
person krnk    schedule 29.08.2019