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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2016, 11:37   #251
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
По умолчанию

Кажется понял. Андроид сам берет из всего массива то, что ему в данный момент нужно. Например если вместо рдс текста находится мусор, он его не будет смотреть, так как нет команды обновлять рдс текст. Но этот мусор все равно передается. Правильно?
xmetal вне форума   Ответить с цитированием
Старый 29.03.2016, 13:03   #252
dmit
Новый Пользователь
 
Регистрация: 10.01.2007
Возраст: 49
Город: Ротсовкая обл г. Морозовск
Машина: ford Mondeo 3
Сообщений: 23
dmit is on a distinguished road
Smile

Цитата:
Сообщение от T_r_D Посмотреть сообщение
xmetal
Спасибо за пример сравнения.

По поводу данных.
Ведройд не сохраняет в себе ни каких значений, он тупо считает и выводит то, что на него приходит.

Ардуина кладёт в массив данные с интересующих меня ID, данные по шине идут естественно один пакет за раз, а мне иногда нужны данные из разных пакетов, так что дуина их складывает в массив, а потом все изменения выкидывает в порт.
Тоесть выдаёт всё за раз.

Вот что в итоге сотворил.
При каждом приходе интересующего меня ID данные складываются в массив и пишется флаг Compare = true;
Ну а дальше проверяется в основном цикле вышли ли 100мс и состояние флага.
И если вышли и флаг true, то сравниваются массивы и если не равны, то выдаём данные в порт и записываем данные из массива 1 в массив 2 (тоесть с тем, с которым в дальнейшем будем сравнивать).
PHP код:
if ((millis() - time0) > 100 && Compare){
arrcmp memcmp(DATA,DATA2,161);
  if (
arrcmp != 0)
  {
      
Serial.write(DATA161); //41 + 54 +64
      
memcpy(DATA2,DATA,161); //Присваиваем массиву DATA2 160 байт массива DATA
  
}
time0 millis();
Compare false;

Так по идеи должно работать ещё быстрее
Цитата:
Сообщение от T_r_D Посмотреть сообщение
xmetal Стоп- стоп!
У нас есть цикл, в нём есть определение приёма пакета и если приняли, то куча ифов.
На данный момент заменено на switch.
Задетектили приём пакета, пошли вниз по коду, если есть, то изменили что-то в массиве, если нет, то просто сделали пробежку сверху вниз, сравнили массивы и побежали на следующий круг.
В этом цикле как бы не может быть много пакетов.
Если приняли нужный нам пакет, то сравнив у нас естественно массивы не совпали и мы выдали весь пакет целиком в порт, не важно что записали всего один бит, передали всё равно 161 байт. Ну и в буферный масив перекинули данные основного массива чтоб потом сравнивать дальше.

Так что складывание данных только из одного пакета за цикл и сравнение тоже.

Сейчас оптимизировал это свитчем и сделал сравнение только если пришёл интересующий меня пакет. В порт лететь стало меньше. Проблема ушла с кашей.

То что не ловит переодически пакеты это уже где-то с железом косяк. Даже на минимальном скетче есть потери пакетов (просто когда пакеты в консоль выводятся). После пропайки TJA, укорочения хвоста витухи в машине стало полутчше,но всё равно теряет. Видимо вместо дисплея в разъём втыкать нужно чтоб лишних проводов и скруток не было.

На этой недели проверю.
Возможно глупости напишу. Но интересуюсь, т.к. сам хочу начать заниматься этой темой только для Ниссана Теаны !
- сообщения изначально фильтруются уже ?
- как часто опрашивается шина в секунду ? Судя по загруженности Ардуино, постоянно со скоростью шины ? Т.е. есть такие одинокие редкие сообщения, который нужно вылавливать с большой непрерывной скоростью опроса ?
-Нельзя фрагментами делать выборку ? Что например , номер трека как сообщение проскочил один раз и все ... пока не сменишь трек? Как часто повторяются такие данные ?
например, где-то в теории читал , что сообщение повторяется до тех пор пока ему не ответит устройство, которому оно предназначено. Или здесь что-то не так в этом плане ?
dmit вне форума   Ответить с цитированием
Старый 29.03.2016, 15:38   #253
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
По умолчанию

Цитата:
Сообщение от dmit Посмотреть сообщение
- сообщения изначально фильтруются уже ?
Нет, не фильтруются. Можно получать сообщения с любым ID который доступен в конкретной кан-шине. В автомобиле как правило несколько кан-шин.

Цитата:
Сообщение от dmit Посмотреть сообщение
- как часто опрашивается шина в секунду ? Судя по загруженности Ардуино, постоянно со скоростью шины ? Т.е. есть такие одинокие редкие сообщения, который нужно вылавливать с большой непрерывной скоростью опроса ?
Данные из кан-шины попадают в буфер (их там 2 вроде) MCP2515, ардуино должна их как можно быстрее считывать, иначе вновь поступающие сообщения будут игнорироваться. MCP2515 работает аппаратно вплоть до 1 Мегабита, так что слабое звено тут Ардуино.


Цитата:
Сообщение от dmit Посмотреть сообщение
-Нельзя фрагментами делать выборку ? Что например , номер трека как сообщение проскочил один раз и все ... пока не сменишь трек? Как часто повторяются такие данные ?
например, где-то в теории читал , что сообщение повторяется до тех пор пока ему не ответит устройство, которому оно предназначено. Или здесь что-то не так в этом плане ?
Все зависит от выдумки разработчиков. Все данные в сообщении и частота его повторения зависит от конкретного разработчика устройства.
xmetal вне форума   Ответить с цитированием
Старый 29.03.2016, 16:54   #254
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
По умолчанию

xmetal
Цитата:
MCP2515 работает аппаратно вплоть до 1 Мегабита, так что слабое звено тут Ардуино.
Вот тут ты абсолютно прав! Если не поможет подключение прям к разъёму машины без проводов то надо переходить на что-то более шустрое.
Скажем STM32F105. Вот только как мой код туда запихать? Я не такой гуру программирования контроллеров.

Вот кстати что с интерфейсом получилось. В итоге будет полноэкранка, а ща пока так. Место под климат разобрал. Хочу данные о нём и управление сделать с планшета.

Там где написано 104.2MHZ отображается RDS. Надписи меняются раз в 4 секунды.
Там же отображается номер и время CD\CD Changer.
А там где написано MEM 5 отображается в режиме CD общее количество треков на диске, а в режиме ченджера текущий диск и общее количество треков на нём.
Там где в режиме радио отображается POP M, тоесть сведения о PTY данной станции, в режиме CD отображается надпись CD ну и так далее
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot_2016-03-29-00-24-13.png
Просмотров: 522
Размер:	120.2 Кб
ID:	43241  
T_r_D вне форума   Ответить с цитированием
Старый 29.03.2016, 16:59   #255
devova
Новый Пользователь
 
Регистрация: 28.03.2016
Возраст: 36
Регион: Украина
Машина: Citroen C-Elysee
Сообщений: 6
devova is on a distinguished road
По умолчанию

Цитата:
Сообщение от xmetal Посмотреть сообщение
.
Данные из кан-шины попадают в буфер (их там 2 вроде) MCP2515, ардуино должна их как можно быстрее считывать, иначе вновь поступающие сообщения будут игнорироваться. MCP2515 работает аппаратно вплоть до 1 Мегабита, так что слабое звено тут Ардуино.
А может надо взять stm вместо atmega? Вот к примеру єсть ардуіно совмечтимая платка на STM32F103C8T6 http://www.aliexpress.com/item/1pcs-...583160323.html. Она бистреє и памяти больше, как ви думаєте ето можно би било использовать?
Здесь первиє шаги с stm http://2150692.ru/faq/112-quick-start-stm32f103c8t6
devova вне форума   Ответить с цитированием
Старый 29.03.2016, 17:04   #256
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
По умолчанию

dmit. Пока не воткнёшь что-то что может сканировать шину в свой автомобиль ни чего не узнаешь.

У тебя 100% сообщения идут не так как у меня.

Не гадай- подключи и посмотри, а потом уже ищи что тебе нужно. Большая часть сообщений тебе будет вообще не нужна. Я работаю всего с 21 ID, а в шине их у меня за сотню летает.

Вот сегодня займусь отловом сообщения SILENCE в режиме радио и PAUSE в режиме CD\CHANGER.
T_r_D вне форума   Ответить с цитированием
Старый 30.03.2016, 00:43   #257
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
По умолчанию

Цитата:
Сообщение от devova Посмотреть сообщение
А может надо взять stm вместо atmega? Вот к примеру єсть ардуіно совмечтимая платка на STM32F103C8T6[/url]
Надо смотреть какие библиотеки для нее есть, для работы с CAN. Характеристики конечно впечатляют.

UPD. Имеет CAN встроенный, значит либы есть.

Последний раз редактировалось xmetal; 30.03.2016 в 10:37.
xmetal вне форума   Ответить с цитированием
Старый 30.03.2016, 12:30   #258
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
По умолчанию

xmetal там встроенный кан, только трансивер внешний нужен (tja).
И подходят только 105 и 107. Только они умеют одновременно CAN и USB.
Характеристики у них конечно на несколько порядков круче атмеги.
T_r_D вне форума   Ответить с цитированием
Старый 30.03.2016, 15:55   #259
devova
Новый Пользователь
 
Регистрация: 28.03.2016
Возраст: 36
Регион: Украина
Машина: Citroen C-Elysee
Сообщений: 6
devova is on a distinguished road
По умолчанию

@T_r_D
Мне через два дня придут CAN модуль и я смогу залить товй скетч, stm мне уже литит из китая, так што как только он прйдет я тоже напишу какиє результати.
Итак у меня возник вопрос/идея: T_r_D у тебя уже много написано кода, как для ардуини так и для андроида, почему би тебе не виложить ето все на GitHub, сделать 2 репозитория(1 для ардуино, 2й для андроида), там би ми могли иметь версии и делать свои изминения. Ето хорошая практика, если нужна помошь с git, я помогу разобратса.
devova вне форума   Ответить с цитированием
Старый 30.03.2016, 17:56   #260
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
По умолчанию

devova потому что мне это не надо.
T_r_D вне форума   Ответить с цитированием
Ответ


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

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

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



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


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