Elm
Содержание:
- Дополнительный, но важный инструментарий
- Топ 5 программ для Андроида
- Характеристики и возможности автосканера ELM327
- Что такое ELM327 и зачем он нужен?
- Программы для ELM327
- Паттерн Model-Update-View и зависимые типы
- Программы для Windows
- Управление кодом на Elm с помощью Brunch
- MVC без C: Что изменит SwiftUI в архитектуре приложений?
- Для непосвящённых
- Программное обеспечение
- Подключение
- Установка дополнительных пакетов Elm
- Основы разработки на языке Elm (руководство по инструментарию для начинающих)
- Есть ли официальные представители ElmElectronics в России?
- Инструкция ELM327
- Опрос
Дополнительный, но важный инструментарий
Пожалуй самый важный инструмент из дополнительных это elm-format. С помощью этой утилиты можно приводить внешний вид программы к стандартному (общепринятому) виду. Установим его:
Также установим соответствующее дополнение для Atom elm-format:
Благодаря этому дополнению, каждый раз, как мы будем сохранять наш код, elm-format будет его форматировать. Если в коде будет синтаксическая ошибка, то утилита её обнаружит, и мы об этом узнаем, хотя, для выяснения наличия ошибок всё же лучше использовать компилятор. А в этом нам будет помогать дополнение для Atom linter-elm-make.
Поставим его:
Не забудьте также зайти в настройки этих дополнений и задать все необходимые параметры.
Дополнение elm-lens показывает прямо в коде для функций и типов экспонируются ли они или являются локальными, а также сколько раз на них ссылаются. Для установки дополнения просто вызовите:
Для поддержки REPL в Atom можно установить дополнение elm-instant:
Если вы хотите работать с терминалом прямо в Atom, рекомендую установить дополнение platformio-ide-terminal:
Топ 5 программ для Андроида
MotorData OBD
Одна из самых популярных и бесплатных диагностических программ для смартфонов на ОС Android и адаптеров ELM327. С ее помощью можно считывать ошибки и удалять их из памяти ЭБУ, снимать показания в реальном времени, контролировать более 70 показателей. Интерфейс программы на русском языке. Для профессионального анализа полученной информации, все же, необходимо купить дополнительные расширения.
Из плюсов: интеграция с большинством адаптеров (включая дешевые китайские модели), стоп-кадрами и графическими изображениями параметров, возможность получения полной паспортной информации, включая версию прошивки и VIN. Минусы — ограничения для бесплатной версии (для большинства пользователей их достаточно).
OBD Car Doctor
Еще одна русифицированная программа для ОС Android, поддерживающая практически любые беспроводные адаптеры. Способна определять состояния Check Engine, удалять коды ошибок, рассчитывать мгновенное и среднее потребление топлива, вести журнал заправок и техобслуживания, отображать показания датчиков в реальном времени.
Среди плюсов: русскоязычный интерфейс и широкий функционал, легкая интеграция с ЭБУ для изменения настроек работы мотора. Минусы: сложные настройки для начинающих пользователей. Неопытному водителю изменять настройки самостоятельно не рекомендуется.
ScanMaster
Мобильное диагностическое приложение, превращающее смартфон на Андроид в многофункциональный автомобильный сканер. Имеет мощную бесплатную версию Lite, с помощью которой считывает и стирает ошибки, строит графики по полученным данным и контролирует состояние топливной системы. Еще больше возможностей предлагает платная версия ScanMaster Pro.
Из плюсов ПО: поддержка любых моделей адаптеров, получение информации по Bluetooth и WiFi. Удобно применяется для диагностики автомобилей американского производства, выпущенных с 1996 года, и европейских моделей с 2001-2004 года. Недостатки: сложные настройки, высокая стоимость платной версии приложения.
Torque
Приложение Torque позволяет получать информацию об техническом состоянии автомобиля в реальном времени, сохранять логи поездки и устанавливать собственные рабочие экраны с показаниями выбранных датчиков. Программа может определить время разгона до 100 км/ч и стереть ошибки из ЭБУ. При добавлении плагинов сторонних разработчиков возможности программы можно существенно расширить.
Плюсы ПО: функциональность и поддержка большинства адаптеров. Минусы: наличие некоторых диагностических функций только в платной версии.
InCarDoc
Приложение тестирует большинство технических параметров автомобиля в реальном времени (в том числе, скорость, углы поворота, давление в системе, температуру и характеристики двигателя), удаляет ошибки, способно отправлять диагностические отчеты на электронную почту, поддерживает несколько языков, включая русский.
Из плюсов: определение скорости и местонахождения авто с помощью GPS, наличие консольного режима для опытных пользователей, ведение журналов и выгрузка информации в Интернет, установка пользовательских настроек для работы с широким спектром параметров. Минусы: нестабильное соединение с дешевыми адаптерами.
Характеристики и возможности автосканера ELM327
В комплекте поставки Вы найдете сам автосканер elm327 bluetooth, для диагностики автомобиля, а также специальный диск с базовым программным обеспечением а также elm327 инструкция. Как правило диском никто не пользуется(так как он на английском языке). Все сразу идут в интернет, и скачивают наиболее подходящую программу, о них мы поговорим ниже. Принцип работы сканера предельно прост — Вы подключаете адаптер к блоку управления двигателем, затем находите его по bluetooth при помощи любого поддерживаемого устройства(смартфон, планшет, ноутбук), открываете заранее установленную программу и все данные уже у Вас перед глазами.
Теперь более подробно о задачах, которые данное устройство сможет помочь Вам выполнить:
- Мониторинг показателей датчиков установленных на Вашем автомобиле;
- Выявление вышедших из строя датчиков и проверка правильности показателей датчиков;
- Мониторинг и считывание показателей кодов ошибок(разъяснение значения каждого кода);
- Возможность самостоятельного сброса ошибок в режиме реального времени;
Вообще, возможности автосканера EML327 Bluetooth, напрямую зависят от программного обеспечения которое у Вас установлено.
Как говорилось выше, конструкция автосканера довольно компактна, основную ее часть занимает разъем, при помощи которого он подключается специальное диагностическое гнездо на Вашем блоке управления двигателем. Остальную часть устройства занимает модуль bluetooth и чип с микросхемой для обработки данных.
Если Вы не знаете где находится диагностический разъем блока управления двигателем, попробуйте посмотреть в следующих местах:
- Под крышкой блока предохранителей;
- В бардачке(Например это машина марки Renault);
- Под панелью приборов.
Что такое ELM327 и зачем он нужен?
ELM327 – Это сканер или адаптер, который подключается к бортовому компьютеру машины через разъём OBD-II и считывает показания с электронных блоков управления. Этот чудо прибор поможет Вам:
- Диагностировать неисправность;
- Посмотреть показания датчиков в режиме онлайн;
- Вывести графики работы различных систем автомобиля;
- Сбросить ошибок ЭБУ и других блоков.
ELM327 Bluetooth
Многие сканеры открывают и больше возможности, так же многое зависит и от автомобиля. Цвет корпуса и форма могут отличаться.
Сканер чаще всего представлен в виде:
- Bluetooth адаптера. Самый распространенный и дешевый, работает с Android (сегодня рассмотрим именно её);
- USB ELM327, который работает в паре с компьютером;
- Wi-Fi адаптер. Если у Вас Iphone, то это Ваш выбор.
Автосканер стоит покупать только с версией прошивки 1.5 !!!Никакие заманчивые 2.1 или 2,2 брать не стоит! Вы только разочаруетесь. То есть Автосканер ELM327 версии 1.5 – Ваш выбор.
Стоимость данного девайса начинается обычно от 300 ₽. Все что дешевле брать не советую. Ориентироваться надо на стоимость 300-600 рублей. Дорогой сканер OBD-II покупать нет смысла.
Так-же крайне не рекомендую пользоваться диском который идет в комплекте со сканером. Скорее всего полезного там ничего нет и нередко бывало что там оказывались вирусы.
Программы для ELM327
Есть три вида программного обеспечения в зависимости от того, с помощью какого устройства вы будете подключать ELM327 к автомобилю. Программы бывают для персонального компьютера или ноутбука (ПО для WINDOWS), для смартфонов на ANDROID и для смартфонов на IOS.
При работе на компьютере в основном используется программа ScanMaster_ELM_v.2.1_Rus. Она самая простая в использовании и универсальная для всех автомобилей. Также есть и другие универсальные программы: PCMScan, ScanTool, ProScan, но они сложнее. Кроме универсальных программ есть также программы разработанные для конкретных марок автомобилей, например: FORScan для Ford, ELM-FF2 для Ford Focus, FiatEcuScan для Fiat, OpenDiag для ВАЗ, VauxCheck для OPEL и Vaux, TiggoDiag для Chery и Great Wall… От универсальных они отличаются большим количеством считываемых параметров, и имеют больше дополнительных функций чем универсальные, но только для тех марок автомобилей для которых они разработанные.
При работе со смартфонами на ANDROID обычно используют программу Torque. Она несложная в применении и обладает довольно мощным функционалом.
По сути сканер ELM327 является как и мощным диагностическим прибором в руках умелого мастера, так и средством считывания разной информации для простых владельцев автомобилей. Именно поэтому сканер ELM327 называется универсальным.
Предыдущая запись OBD DROIDSCAN PRO, версия: 2.0 от 10.09.2014
Следующая запись Список автомобилей, совместимых с ELM327
Паттерн Model-Update-View и зависимые типы
Model-Updater-View — функциональный паттерн, успешно применяемый в языке Elm в основном для разработки пользовательских интерфейсов. Что бы им воспользоваться надо создать тип Model, представляющий полное состояние программы, тип Message, описывающий события внешней среды, на которые программа должна реагировать, меняя свое состояние, функцию updater, которая из старого состояния и сообщения создает новое состояние прораммы и функции view, которая вычисляет по состоянию программы требуемые воздействия на внешнюю среду, которые порождают события типа Message. Паттерн очень удобный, но у него есть маленький недостаток — он не позволяет описать какие события имеют смысл для конкретных состояний программы.
Схожая проблема возникает (и решается) и при использовании ОО-паттерна State.
Язык Elm простой, но очень строгий — он проверяет, что функция updater хоть как-то обрабатывает все возможные сочетания модели-состояние и сообщения-события. По этому приходится писать лишний, пусть и тривиальный — как правило оставляющий модель без изменений, код. Я хочу продемонстрировать, как этого можно избежать в более сложных языках — Idris, Scala, C++ и Haskell.
Программы для Windows
Кроме мобильных приложений для телефонов на ОС «Андроид», для автодиагностики можно использовать программные приложения для ОС Windows.
- Утилита ScanMaster-ELM, работающая с любыми видами адаптеров ELM327. Возможности этого ПО достаточно широкие: удобный и понятный интерфейс, мониторинг работы мотора в реальном времени, построение графиков, просмотр, расшифровку и удаление ошибок. Минусы таких приложений: необходимость покупки лицензии для использования ряда функций и требование русификации для упрощения работы.
- Диагностическая утилита – PCMScan, которая легко определяет неисправности европейских, американских и азиатских машин, получает данные со стоп-кадра и удаляет ошибки в ЭБУ. Для расширения функционала можно добавлять сторонние плагины. Из плюсов: многофункциональность, бесплатная демо-версия. Минусы: необходимость покупки платного ПО для подключения некоторых опций и русификации.
- Мультифункциональная программа автодиагностики для ОС Windows – FORScan. Обрабатывает данные датчиков в реальном времени, считывает основные параметры и сбрасывает коды ошибок. Плюсы: Возможность получения данных практически обо всех функциональных узлах и основных системах авто. Минус: рассчитана на диагностику только 4 марок авто – Ford, Mazda, Lincoln и Mercury.
Управление кодом на Elm с помощью Brunch
Одним из удобнейших средств управления кодом на Elm представляется Brunch. Устанавливается Brunch как пакет NPM:
Проверим версию только что установленного Brunch:
Вызовем Brunch для генерации кода нашего примера проекта на Elm:
После генерации кода Brunch также сразу загрузит все необходимые NPM- и Elm-пакеты.
Рассмотрим сгенерированное дерево каталогов:
-
: исходные тексты приложения
- : минимальный документ HTML5, который будет контейнером для нашего приложения
- : стили для примера приложения
- : исходные тексты на Elm
- : главный модуль приложения на Elm
- : код на JavaScript
- : пример кода, работающего отдельно от кода на Elm
- : загруженные пакеты на Elm
- : загруженные NPM-пакеты
- : настройки для Brunch с учётом поддержки Elm
- : настройки для Elm, в том числе список используемых пакетов
- : список зависимостей NPM (сгенерирован NPM автоматически)
- : настройки для NPM
Уже сейчас мы можем собрать наш проект:
После сборки проекта появится также папка , в которой разместятся все части нашего веб-приложения.
Давайте запустим приложение в режиме отладки:
Откроем в браузере ссылку и полюбуемся на прекрасное веб-приложение:
В правом нижнем углу находится интерфейс инспектора состояния приложения. Щёлкнем на нём. Сейчас счётчик имеет значение :
Пощёлкаем на кнопках и и понаблюдаем как меняется состояние:
Мы можем вернуться к любому предыдущему состоянию:
И даже вернуться к последнему, просто нажав на кнопку .
Неискушённому зрителю читателю наверное будет интересно также узнать, как устроено приложение на Elm, но сначала давайте настроим редактор, чтобы изучать исходный код приложения было приятней и удобней.
MVC без C: Что изменит SwiftUI в архитектуре приложений?
Перевод
MVC был давним стандартом в паттернах проектирования, используемых для написания iOS приложений. Структура iOS приложений, которые создавались ранее, была основана на одном базовом компоненте, который присутствует везде, и называется он — Controller. На WWDC19 был представлен SwiftUI, который не имеет такого компонента.
Проблема с так называемыми massive view-controllers должна быть решена в SwiftUI. Так, необходимо найти новый способ правильной декомпозиции кода. Давайте посмотрим на текущее состояние платформы и подумаем, какие парадигмы мы можем использовать при разработке для iOS13 и более поздних версий.
Для непосвящённых
Как и обещал, немного расскажу, как устроен код приложения на Elm. Давайте взглянем на тот исходный код, который нам сгенерировал Brunch:
Приложение на Elm оформляется как модуль , экспонирующий функцию . Это мы видим в первой строке кода. Далее идёт импорт модулей. Некоторые модули импортируются по умолчанию, но модули , и нужно импортировать. Здесь они импортируются с экспонированием отдельных функций и типов. Это делается, чтобы не квалифицировать имя модуля, например, вместо будем писать просто .
Ниже объявляется и определяется функция . В объявлении задаётся её тип. Тип функции указывается после символа , определение происходит после знака . Как увидим ниже, указание имён параметров и их типов осуществляется раздельно. Elm поддерживает вывод типов, однако для функций верхнего уровня хорошим тоном считается ручное указание типа.
В нашем случае функция вызывает функцию , которая получает на вход структуру с тремя полями: , , . Эта функция запустит цикл обработки сообщений. Параметр получает начальное состояние приложения, которое задано в функции . Функция вызывается всякий раз, когда происходит какое-то событие и передаётся соответствующее сообщение. После обработки сообщения вызывается функция , занимающаяся формированием нового дерева DOM.
Далее определяется тип , точнее синоним типа структуры, состоящей из поля типа . Тип , как нетрудно догадаться, представляет целые числа.
Как уже было сказано, функция возвращает начальное значение состояния, которое содержит одно поле со значением . Типом состояния может быть любой тип, не только структура.
Далее определяется тип сообщения . Это тип-перечисление с двумя возможными значениями: и .
Функция получает на вход сообщение и состояние приложения. Обычно код этой функции включает в себя оператор сопоставления с образцом . Здесь происходит изменение состояния в зависимости от пришедшего сообщения: значение поля либо увеличивается на , либо уменьшается на .
Наконец, функция принимает состояние приложения и формирует с помощью функций модулей , и требуемое дерево DOM.
Программное обеспечение
ПО дается в комплекте со сканером. Если его нет, вы сможете легко скачать нужную программу в интернете или в Google Play.
Программа Torque
Имеются платная и бесплатная версии данной программы. В бесплатной версии можно проверить исправность работы сканера, его совместимость с авто, узнать многие функции обнуления ошибок.
Функции Torque:
- Расшифровка ошибок Check-Engine.
- Выведение параметров на приборную панель.
- Оповещение о критичных показателях.
- Учет расхода бензина и стоимости поездок.
- Возможность видеорегистрации (необходим плагин TrackRecorder).
Главный минус — не полная поддержка русского языка. Но программа все равно пользуется большой популярностью.
OBD Авто Доктор
Приложение считывает числовые показатели из узла двигателя, диагностирует и русские, и зарубежные автомобили.
Функции OBD Авто Доктор:
- Сканирование ошибок, расшифровка, а также их сброс.
- Чтение параметров online.
- Определение VIN-номера кузова.
OpenDiag Mobile
Приложение определяет детали инжекторных русских авто с помощью сканера ELM327. Данная версия полностью бесплатна.
Главное преимущество OpenDiag Mobile – поддержка USB протокола. В наше время софт с такими возможностями не сильно распространен.
Но, чтобы ELM327 через USB подключить к смартфону или iPhone нужно иметь USB to MicroUSB Adapter.
Второстепенные задачи ELM 327:
- Вывод информации, расшифровка значений датчиков.
- При необходимости возможность устранения ошибок.
- Точное установление скорости авто.
- Определение температуры двигателя.
Обратите внимание, вначале нужно завести машину, и уже затем подключать ELM 327. В противном случае вам высветится ошибка
Автосканер ELM 327 – незаменимое устройство для автовладельца. Особенно он нужен тем, кому частенько приходится исправлять ошибки двигателя. Это дешевле, чем в автосервисе.
Подключение
Сканер ELM327 подходит для машин из США, выпускаемых с 1996 года, из Европы — с 2001 года, дизельные – с 2004 года. Но некоторые автомобили, произведенные в 2003 году, не поддерживают работу с данным девайсом.
Работа ELM327 производится со считывающим устройством. На него необходимо установить диагностическое ПО. Для этого подойдет гаджет на андроиде, компьютер или ноутбук. Устройство подсоединяется по Bluetooth, Wi-Fi или USB.
Хотелось бы подробнее остановиться на первых двух подключениях. Некоторые модели авто не поддерживают работу ELM327 через Bluetooth, Wi-Fi. Т.е. передача данных на смартфон или ноутбук по данным протоколам осуществляется не будет.
И дело не в установленной программе, а в блоке управления, который установлен в машине. К примеру, ЭБУ Микас 10.3 (М103), который устанавливается на Ланосе 1.4i, Славуте 1.2i/1.3i и может (быть установлен в других авто) работает только через протокол USB
Этот момент важно учитывать при выборе устройства
Подробный обзор автосканеров ELM327 и OBD2 читайте в статье https://elm327-obd2.ru/sovmestimost/elm-327-spisok-avto-kak-ispolzovat-elm327.html. Там вы узнаете о совместимости устройства с различными моделями авто, какие виды сканеров бывают, отличия в разъемах, виды протоколов, какие бывают переходники для OBD2 и много другой информации.
Установка дополнительных пакетов Elm
И последнее, но не менее важное: чтобы установить дополнительные пакеты Elm, нужно вызвать команду. Например, установим пакет :
Обратите внимание, что идентификатор пакета состоит из двух частей, то есть не просто , а. С этой командой связан файл проекта
В него записываются названия и версии устанавливаемых пакетов в разделе. Например, сгенерированный Brunch файл выглядит так:
С этой командой связан файл проекта . В него записываются названия и версии устанавливаемых пакетов в разделе . Например, сгенерированный Brunch файл выглядит так:
Репозиторий пакетов можно просматривать здесь.
Основы разработки на языке Elm (руководство по инструментарию для начинающих)
Tutorial
От автора: вместо этой статьи рекомендую прочитать более актуальную Инструменты разработчика на языке Elm.
Elm это функциональный язык программирования для разработки веб-приложений, работающих в браузере. Elm строгий, статически типизированный. Elm похож на Haskell, однако это лишь поверхностное сходство, ведь Elm изначально заточен для быстрой разработки веб-приложений.
Эта статья представляет из себя шпаргалку для начинающих по основам разработки на языке Elm, а именно, здесь рассматривается организация проекта, инструментарий Elm и среда разработки Light Table.
Есть ли официальные представители ElmElectronics в России?
Важно отметить, что оригинальная микросхема – только Канадская. Занимается их производством фирма ElmElectronics
Больше никто и нигде не имеет права ее выпускать! У этой фирмы нет никаких региональных представительств. Вот цитата с сайта
Таким образом, все самозваные «Официальные представители и дистрибьюторы» ElmElectronics просто напросто мошенники или, в лучшем случае, вводящие людей в заблуждение продавцы.
Примечателен и тот факт, что фирма ElmElectronics, которая выпускает эти самые знаменитые чипы, не занимается выпуском готовых сканеров ELM327. Их сборкой занимаются все кому не лень!
Оригинальный чип ELM327 с доставкой из Канады стоит 29 американских рублей или 1100руб на наши деньги. И это только чип! Без преобразователей интерфейса, без корпуса, светодиодов и т.д.
Инструкция ELM327
Итак у нас есть адаптер ELM327 Bluetooth версии 1.5, телефон на базе Android с установленной программой InCarDoc free, Автомобиль с разъемом OBD-II. Теперь можно приступить непосредственно к диагностике:
- При выключенном зажигании (обязательно) вставить адаптер ELM327 в разъём OBD-II, при этом он подаст признаки жизни (загорится светодиодный индикатор) ;
- Включить Bluetooth на телефоне и найти устройство под названием OBDII (название может отличаться), затем при сопряжении устройств потребуется ввести пароль: как правило это 1234 или 0000.
- Если все получилось тогда переходим в приложение InCarDoc free и нажимаем зелененькую кнопку “Подключить” (фото слева). Если всё выполнили правильно, то неактивные разделы меню станут активными (фото справа).
Подключение к авто в программе InCarDoc free
4. Как только Вы успешно подключились к автомобилю его следует завести.5. Диагностика автомобиля. Следуйте инструкции на картинке ниже. Что бы продиагностировать автомобиль перейдите во вкладку “Диагностика”, после нескольких секунд на экране появиться список ошибок которые есть в Вашем автомобиле. Сделайте скриншот экрана с ошибками, это необходимо для их дальнейшего изучения и поиска причины их возникновения. Теперь можете смело очистить их. Следуйте инструкции ниже:
сброс ошибок авто в программе InCarDoc free
6. Эта программа имеет функции вывода динамических параметров на экран телефона в режиме реального времени. Для примера я вывел на экран Обороты двигателя на холостом ходу (можно наблюдать как они у меня плавают) и температуру охлаждающей жидкости (автомобиль только прогревался). В этой программе достаточно широкий выбор вывода динамических параметров, поэтому я использую именно её.
Вывод на экран динамических параметров авто в программе InCarDoc free
7. Что бы закончить работу со сканером ELM327 просто нажмите кнопку “Отключить” в программе InCarDoc free. Заглушите двигатель автомобиля и извлеките сам сканер из диагностического разъёма OBD-II.
Опрос
Как и в прошлый раз проведу опрос, но немного его переориентирую, если можно так сказать. Ведь в прошлый раз автор приглашал к опросу только тех, кто уже программирует на функциональных языках, теперь же аудитория расширяется до всех, кто разрабатывает веб-приложения.
Подведу также итоги прошлого опроса. Итак, на вопрос «Если Вы программируете на функциональных языках, то каково Ваше мнение об Elm» расклад был получен такой:
- 28.2%: первый раз слышу, но выглядит годным
- 21.1%: не нужен
- 20.5%: годный, я на нём уже программирую
- 15.8%: сыроват для продакшн
- 14.1%: годный, но писать на нём не собираюсь
Проголосовало 170, воздержалось 147. Прочитало статью 13,9k, добавило в закладки 51.
Интересно, наверное, будет сравнить с результатами голосования, зафиксированными автором через неделю после публикации той статьи:
- 31%: не нужен
- 18%: первый раз слышу, но выглядит годным
- 18%: сыроват для продакшн
- 18%: годный, но писать на нём не собираюсь
- 15%: годный, я на нём уже программирую
Проголосовало 99, воздержалось 76. Прочитало статью 5,5k, добавило в закладки 41.
Заметен рост благосклонности к Elm, существенно уменьшилось число тех, кто считал, что Elm не нужен, также заметно выросло число тех, кто на нём уже программирует. При этом также увеличилось число тех, кто считает язык годным, но писать на нём не собирается.