PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Общение с машиной

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2015, 18:51   #1
heilwood
Новый Пользователь
 
Регистрация: 06.08.2015
Возраст: 35
Регион: 43
Сообщений: 12
heilwood is on a distinguished road
По умолчанию идентичное "CAN" сообщение при нажатие разных кнопок

Ребята может кто сталкивался, имеется volvo s80 2008 год, при нажатии любой кнопки на руле связанной с управлением магнитолой (например переключить следующую песню или включить предыдущую ) выводится одно и тоже сообщение. Если нажимаю кнопку на магнитоле, то последнии два значения в CAN сообщение меняются, т.е сообщение для каждой кнопки уникально. Пользуюсь can-bus shield от elekfreks и arduino, кнопки ловлю самопальным снифером.

Последний раз редактировалось heilwood; 06.08.2015 в 21:10.
heilwood вне форума   Ответить с цитированием
Старый 06.08.2015, 20:48   #2
olegik_ah
Новый Пользователь
 
Аватар для olegik_ah
 
Регистрация: 05.08.2015
Возраст: 42
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5
Сообщений: 29
olegik_ah is a jewel in the rougholegik_ah is a jewel in the rougholegik_ah is a jewel in the rough
По умолчанию

Привет! Что-то слабо верится. Походу либо библиотека для ардуины дурит, либо сам сниффер, либо не тот ID смотришь
olegik_ah вне форума   Ответить с цитированием
Старый 06.08.2015, 21:08   #3
heilwood
Новый Пользователь
 
Регистрация: 06.08.2015
Возраст: 35
Регион: 43
Сообщений: 12
heilwood is on a distinguished road
По умолчанию

Остальные кнопки на руле с уникальном ID, проверял на круиз контроле. На arduino в serial monitor выдается тоже самое, что и в мой сниффер, проверял. Сообщение фильтруется по CAN-ID и появляется исключительно при нажатии кнопки, это тоже точно, тогда вопрос, может ли быть на одну кнопку два сообщения? И второй вопрос кто бы мог посмотреть мой arduino sketch, может проблема в нём?

Цитата:
#include <SPI.h>
#include "mcp_can.h"

const int SPI_CS_PIN = 10;

MCP_CAN CAN(SPI_CS_PIN); // Set CS pin

void setup()
{
Serial.begin(115200);

START_INIT:

if(CAN_OK == CAN.begin(CAN_125KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
}


void loop()
{
unsigned char len = 0;
unsigned char buf[8];

if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf

unsigned char canId = CAN.getCanId();

Serial.print(canId);
Serial.print(",")

for(int i = 0; i<len; i++) // print the data
{
Serial.print(buf[i]);
Serial.print("\t");
}
Serial.println();
}
}
heilwood вне форума   Ответить с цитированием
Старый 06.08.2015, 22:33   #4
olegik_ah
Новый Пользователь
 
Аватар для olegik_ah
 
Регистрация: 05.08.2015
Возраст: 42
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5
Сообщений: 29
olegik_ah is a jewel in the rougholegik_ah is a jewel in the rougholegik_ah is a jewel in the rough
По умолчанию

Все похоже на рабочий экземпляр. Может при нажатии кнопки на руле генериться несколько сообщений с разными ID? Одно, которое ты поймал и еще одно - в котором от нажатия кнопки что-то меняется?

А по скетчу - с CAN удобнее работать в шестнадцатиричном или в двоичном виде. Мне кажется нагляднее... Но дело вкуса... мой вариант примерно такой:

unsigned char canId = 0;

if(CAN_MSGAVAIL == CAN.checkReceive())
{
canId = CAN.getCanId();
CAN.readMsgBuf(&len, rxBuf);

Serial.print(canId, HEX); Serial.print("#"); // CAN ID

for(int i = 0; i<len; i++)
{
if(rxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
{
Serial.print("0");
}
Serial.print(rxBuf[i], HEX);
Serial.print("#");
}

Serial.println();
}
olegik_ah вне форума   Ответить с цитированием
Старый 06.08.2015, 23:12   #5
xmetal
Пользователь
 
Регистрация: 29.07.2015
Регион: 64
Машина: VW Tiguan
Сообщений: 89
xmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant futurexmetal has a brilliant future
По умолчанию

heilwood, тип canId в коде принимает значения максимум 255, в принципе криминала нет в данном случае, просто будет криво отображать ID с номером выше 0xFF. А вот если надо отфильтровать по ID, то будет косяк, все что выше 0xFF не поймаешь. Сделай его unsigned long.
xmetal вне форума   Ответить с цитированием
Старый 06.08.2015, 23:32   #6
olegik_ah
Новый Пользователь
 
Аватар для olegik_ah
 
Регистрация: 05.08.2015
Возраст: 42
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5
Сообщений: 29
olegik_ah is a jewel in the rougholegik_ah is a jewel in the rougholegik_ah is a jewel in the rough
По умолчанию

Точно, точно! не char, а long! Копи-пейст, блин!
olegik_ah вне форума   Ответить с цитированием
Старый 07.08.2015, 01:48   #7
heilwood
Новый Пользователь
 
Регистрация: 06.08.2015
Возраст: 35
Регион: 43
Сообщений: 12
heilwood is on a distinguished road
По умолчанию

спасибо ребята, завтра попробую
heilwood вне форума   Ответить с цитированием
Старый 08.08.2015, 00:32   #8
heilwood
Новый Пользователь
 
Регистрация: 06.08.2015
Возраст: 35
Регион: 43
Сообщений: 12
heilwood is on a distinguished road
По умолчанию

не помогло к сожалению
heilwood вне форума   Ответить с цитированием
Старый 08.08.2015, 07:00   #9
(vS)
Гуру
 
Аватар для (vS)
 
Регистрация: 13.10.2006
Возраст: 46
Город: Санкт-Петербург
Регион: 54
Машина: '98 PRIUS NHW10
Сообщений: 1,991
(vS) will become famous soon enough(vS) will become famous soon enough
По умолчанию

снифери всю сеть, наверняка не тот iD
__________________
маст{ер} c[лов]а и стил<ус>а

мои детки: сивик и геша + а у него названья нет + примус +
грандесла
(vS) вне форума   Ответить с цитированием
Старый 08.08.2015, 16:37   #10
heilwood
Новый Пользователь
 
Регистрация: 06.08.2015
Возраст: 35
Регион: 43
Сообщений: 12
heilwood is on a distinguished road
По умолчанию

ID тот, но скорее всего два сообщения приходит с разными айди, так например на некоторых машинах вроде как VIN код приходит. Всем спасибо, буду мучать дальше
heilwood вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 09:56.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot