10.10.2015, 16:09 | #41 |
Пользователь
Регистрация: 29.07.2015
Регион: 64
Машина: VW Tiguan
Сообщений: 89
|
я бы так записал ((bite3<<8) + byte4) / 20 + 50. По одометру идей пока нет.
|
10.10.2015, 16:52 | #42 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
По одометру скатаюсь на работу сегодня и обратно и посмотрим что покажет.
Там впереди самое сложное останется. Найти расход на 100км (моментальный уже есть), передачу RDS сообщений от магнитолы и второй трип счётчик который на бортовике отображается. В принципе мне больше ни чего и не надо. Это позволит перенести все показания которые отображаются ща на бортовике в планшет не прибегая к загрузке основной шины ELM327. |
10.10.2015, 17:27 | #43 |
Пользователь
Регистрация: 29.07.2015
Регион: 64
Машина: VW Tiguan
Сообщений: 89
|
Появились мысли по одометру. Это 3 байтное число. Показания округляются отбрасывая последнюю цифру, на самом деле там:
17 36 70 - 1123398 17 36 71 - 1123399 17 36 72 - 1123400 17 36 73 - 1123401 17 36 74 - 1123402 и тд |
11.10.2015, 12:38 | #44 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
Прокатился.
Вот что стало 17 38 174 112401 xmetal так я изначально 3 байта давал имея в виду что это только одометр Как это преобразование написать в коде-то? |
11.10.2015, 13:57 | #45 | |
Старший Пользователь
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
|
Цитата:
000100010010011010101110 в Dec 1124014 То есть, что бы получить фактический пробег нужно считать так: ((bite2<<16) + (bite1<<8) + byte0) / 10 |
|
11.10.2015, 14:20 | #46 |
Пользователь
Регистрация: 29.07.2015
Регион: 64
Машина: VW Tiguan
Сообщений: 89
|
Не забываем про приведение типов
unsigned long result = (((unsigned long)data[0] << 16) + ((unsigned int)data[1] << 8) + data[2])/10; Код:
byte data[3] = {17,38,174}; void setup() { Serial.begin(115200); } void loop() { unsigned long result = (((unsigned long)data[0] << 16) + ((unsigned int)data[1] << 8) + data[2])/10; Serial.println(result); delay(1000); } |
11.10.2015, 14:48 | #47 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
(unsigned long)data[0] << 16)
Вот оно что! я писал (int)buf[2] << 16 | (int)buf[3] << 8| buf[4] и у меня выходила охинея Просто данные не входили! Во блин! Зато пока искал причину- нашёл где расход на 100км не моментальный. 2A1 байты 3 и 4 Почти всё отискал Осталось найти где данные от кнопок стрелочек магнитолы в режиме отличного от меню и данные которые передаются текстом о названии радиостанции и данные которые она передаёт |
11.10.2015, 14:52 | #48 |
Старший Пользователь
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
|
xmetal, собственно так и есть, как Вы выше писали.
T_r_D, int занимает 2 байта, а unsigned long 4 байта. У Вас получается 3, по этому и получалась охинея. |
11.10.2015, 15:16 | #49 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
Я уже осознал свою ошибку.
Народ- сильно не бейте! Я программированием занимался последний раз лет так 15 назад. А по существу. Я уже имею почти все данные кроме трипа который отображается на бортовике (не знаю нафига он мне) и нету текстовой инфы с магнитолы. На остальное описание вроде есть, добавлю в скетч и посмотрю что получается (читать данные о CD и CD Changer), а так же вывод данных настроек (Menu). Ещё там всякие Loud, TA, RDS и прочая шняга буковками выводится, но на это тоже вроде есть описание. Ну и надо найти где прячут нажатие на стрелочки не в режиме Menu, а так же кнопки с 1 по 6. Тоесть по сути я чисто для себя уже заменил TORQE. Нужно ещё сделать вольтметр или поискать передаётся ли эта инфа по шине. Пока сидел в машине, то пришла в голову идея выкинуть нафиг блок климата, а кондеем управлять с планшета. И тут кстати я подхожу к моменту когда нужно будет писать оболочку под это всё под андройд, а в этом я уж точно чайник! весь список того что ща уже можно читать Speed RPM Instant fuel consumption /100Km Fuel consumption /100Km Run on current fuel level Odometr Themperature (not water temp) Steering while Scroll value Steering while key Radio key (частично) Radio ON/OFF Radio source Radio band and frequency Volume (выводится на секунду, нужно найти где всегда инфа есть) Нашёл где трип прячется 2A1 байты 1 и 2 Пытался там же найти среднею скорость, но толи она не так же как всё выглядит, толи она просто не там. Последний раз редактировалось T_r_D; 12.10.2015 в 19:02. |
13.10.2015, 22:37 | #50 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
Народ, помогите с выдёргиванием инфы из
1E5 байта 5. первые два бита это показывает меню или нет и значение этого меню. 3 бит второе меню, 4 не используется, 5,6,7 значение второго меню. Как в коде это воплотить? Не могу не фига сообразить! хотелось бы в виде if (buf[5] >> 7 == 1) без дополнительных переменных. Как избавится от лишних данных в байте? |
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3) | |
|
|