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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2015, 23:00   #51
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
lti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Народ, помогите с выдёргиванием инфы из
1E5 байта 5.
первые два
бита это показывает меню или нет и значение этого меню.
3 бит второе меню, 4 не используется, 5,6,7 значение второго меню.
Как в коде это воплотить?
Не могу не фига сообразить!
хотелось бы в виде
if (buf[5] >> 7 == 1)
без дополнительных переменных.
Как избавится от лишних данных в байте?
Не совсем понятно, что Вы имеете ввиду, может это:
if (bitRead(buf[5], 6) == 1)
lti1 вне форума   Ответить с цитированием
Старый 15.10.2015, 00:46   #52
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Цитата:
Сообщение от lti1 Посмотреть сообщение
Не совсем понятно, что Вы имеете ввиду, может это:
if (bitRead(buf[5], 6) == 1)
ВО СПАСИБО!
Именно это и имел в виду!

и тогда вопрос в догонку.
Это один бит считать, а считать скажем два или три и получить число?
Ну тоесть в моём случае вытащить значение меню.
Есть такой же простой способ?
T_r_D вне форума   Ответить с цитированием
Старый 15.10.2015, 10:14   #53
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
lti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
ВО СПАСИБО!
Именно это и имел в виду!

и тогда вопрос в догонку.
Это один бит считать, а считать скажем два или три и получить число?
Ну тоесть в моём случае вытащить значение меню.
Есть такой же простой способ?
Один из вариантов так:
PHP код:
int per;

bitWrite(per0bitRead(buf[5], 5));
bitWrite(per1bitRead(buf[5], 6));
bitWrite(per2bitRead(buf[5], 7)); 
lti1 вне форума   Ответить с цитированием
Старый 15.10.2015, 12:12   #54
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
По умолчанию

Есть способ проще. Любые биты или группу бит можно проверить битовой маской: if ((buf[5] & 0x70) >> 4 == 7) - проверяем 5,6,7 биты, если они все в 1, то условие срабатывает.

Для наглядности маску можно написать в битовом виде: if ((buf[5] & B01110000) >> 4 == 7)
xmetal вне форума   Ответить с цитированием
Старый 16.10.2015, 01:28   #55
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Вот так
if (bitRead(buf[5], 6) == 1)
и так
if (buf[5], 6 == 1)
Hе работает!

Хорошая была попытка.
Ещё есть идеи?

А, стоп! Заработало. Я не учёл что оно с право налево идёт.

За одно походу нашлась средняя скорость.

И в догонку.
Ардуина с шилдом тормозят.
Похоже что надо поставить апаратный фильтр в шилде, а то очень много сообщений сыпется.
Как это реализовать?

Последний раз редактировалось T_r_D; 16.10.2015 в 03:07.
T_r_D вне форума   Ответить с цитированием
Старый 17.10.2015, 01:25   #56
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Всё, с показаниями бортового компа полностью закончено.
Читаю все параметры что есть на экране!
Speed
RPM
Instant fuel consumption /100Km
Fuel consumption /100Km
Trip
Average Speed
Themperature
Odometr
Run on current fuel level

Средняя скорость была в 0B6 байт 0.
Целиком байт это скорость без каких либо конвертаций.

Что осталось:
ну раз уж сдублировали с основного дисплея одометр и скорость, то надо и всё сдублировать
А осталось там
1 Уровень топлива
2 Температура охлаждайки
3 Остаток пробега до ТО
4 Уровень масла
5 Ограничитель и круиз
6 Трип

Ну и доделать сообщения в меню настройки, докопать кнопки на магнитоле.
Время к сожалению очень мало на это всё.
И нужно какую нить программу анализа данных.
Я вижу это так:

в первом столбце все ID найденных сообщение
во втором сами посылки
если было какое изменение, то перенос старой посылки в третий столбец

Может кто знает такую готовую прогу или готов написать?
А то в ручную отлавливать каждое сообщение очень геморно.

Ну и желательно чтоб прога могла с логом работать.
Тоесть данные устаканились- снял лог экрана проги, потом его загрузил и сравнил с новыми данными.
Это актуально для таких затяжных параметров как прогрев двигателя и топливо.

Последний раз редактировалось T_r_D; 17.10.2015 в 02:50.
T_r_D вне форума   Ответить с цитированием
Старый 17.10.2015, 07:41   #57
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
lti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
И нужно какую нить программу анализа данных.
Я вижу это так:

в первом столбце все ID найденных сообщение
во втором сами посылки
если было какое изменение, то перенос старой посылки в третий столбец

Может кто знает такую готовую прогу или готов написать?
А то в ручную отлавливать каждое сообщение очень геморно.

Ну и желательно чтоб прога могла с логом работать.
Тоесть данные устаканились- снял лог экрана проги, потом его загрузил и сравнил с новыми данными.
Это актуально для таких затяжных параметров как прогрев двигателя и топливо.
http://techtinker.co.za/index.php/11...-software-free
Вложения
Тип файла: zip CAN-BUS-TOOL.zip (259.9 Кб, 1274 просмотров)

Последний раз редактировалось lti1; 17.10.2015 в 23:49.
lti1 вне форума   Ответить с цитированием
Старый 17.10.2015, 12:05   #58
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Цитата:
Сообщение от lti1 Посмотреть сообщение
Вот спасибо! А то уже заручился руками файлы логов перекапывать.
Так веселее пойдёт.
T_r_D вне форума   Ответить с цитированием
Старый 17.10.2015, 14:17   #59
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
lti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Вот спасибо! А то уже заручился руками файлы логов перекапывать.
Так веселее пойдёт.
Не за что!
Только мне родной скетч не понравился, я пользовался во этим:
PHP код:
#include <mcp_can.h>
#include <SPI.h>

long unsigned int rxId;
unsigned char len 0;
unsigned char rxBuf[8];

MCP_CAN CAN0(10);

void setup()
{
  
Serial.begin(38400);
  
CAN0.begin(CAN_125KBPS); // скорость CAN шины
  
pinMode(2INPUT); 
}

void loop()
{
    if(!
digitalRead(2))                         
    {
      
CAN0.readMsgBuf(&lenrxBuf);              
      
rxId CAN0.getCanId();                    

      {
      
Serial.print("<"); 
      
Serial.print(rxId);
       for(
int i 0i<leni++)
         {
          
Serial.print(", ");
          if(
rxBuf[i] < 0x10Serial.print("0");
          
Serial.print(rxBuf[i], HEX);
         }
          
Serial.print(">");
          
Serial.println();      
       }
    }

lti1 вне форума   Ответить с цитированием
Старый 18.10.2015, 01:53   #60
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Цитата:
Сообщение от lti1 Посмотреть сообщение
Не за что!
Только мне родной скетч не понравился, я пользовался во этим:
Да это не особо важно как писать скетч, главное чтоб прога обрабатывала.

Ну и сообщений там не очень много идёт, так что вид не важен- чисто эстетика.
T_r_D вне форума   Ответить с цитированием
Ответ


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

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

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



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


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