… или не ходите дети в Австралию гулять.
Есть в далекой загранице такая компания – 4D Systems. Основной продукт – “интеллектуальные дисплеи”. По роду деятельности я с ними очень глубоко познакомился, так что устриц ел.
Задумка совершенно шикарная. Купив такую штуку, разработчик получает полностью готовый блок, где есть дисплей с тачскрином и в который можно загрузить программу, воткнуть микро-sd карточку и подцепить какие-то внешние датчики или устройства.
Причем последние версии дисплеев отличаются только разрешением или формой (да, у них есть круглые дисплеи) – все остальное у них одинаково.
Как заведено в “корпративном” мире, к этим дисплеям полагается софт для их программирования. Софт работает только под Windows и может загонять дисплеи в три режима работы.
1. Режим тупого usart терминала. Цепляем к дисплею любой внешний микроконтроллер через совершенно стандартный usart и отправляете в дисплей команды в духе “нарисуй точку”, “смонтируй флешку”, “покажи картинку с флешки”. Работает очень медленно.
2. Написание “визуальных программ”. Есть библиотечка страшненьких контролов, из которых делаются экраны, а потом в специально отведенные места записывается код. Что-то сложное написать невозможно.
3. “Полноценный”. Можно писать программы на 4DL – некой смеси паскаля и си.
Плюс прямо в IDE встроено немного утилиток типа калибровки экрана, разметки microsd карточек и терминалки. В принципе штуки полезные в плане “все свое ношу с собой”.
В общем, почти счастье любого программиста встраиваемых систем. Но как обычно, все портит реализация.
Начинается всё с редактора. Эта штука абсолютно не умеет форматировать код. Ни работы с блоками, ни нормального свертывания. Зато раздражающие комментарии – в полном объеме. Короче, этакий notepad с подсветкой. Результат – очень страшно выглядящий код.
Компилятор тоже доставляет немного удовольствия: иногда программа компилируется, но отказывается заливаться в дисплей. Добавляем где-нибудь в незначащем месте лишний пробел или что-нибудь типа i:=i; и все прекрасно компилируется и заливается. Еще больше доставляют ошибки, когда программа на дисплее просто падает на ровном месте, которое в прошлые разы не вызывало никаких нареканий. Лечится точно так же: либо лишние команды, либо просто поменять что-нибудь местами.
“Исполнятор” тоже не свободен от греха: например, если вы “примонтировали” с microsd файловую систему и с нее только читаете, то при падении программы вы с 50% вероятностью получите “убитую” флешку, которую надо снова форматировать.
Да, и большие microsd не поддерживаются. Если вам удалось найти карточку на 2Гб, то вам повезло. Если у вас больше – то будьте добры сделать раздел на 2Гб, а про остальное – забудьте.
Где еще проблемы? Перечислю кратко:
– Ошибки в документации. Неправильные аргументы, неправильные примеры, код скопипащен из примера для другой функции.
– Программисту не дают доступа ни к прерываниям, ни к какой-либо многозадачности. Вообще. Делай большой цикл на все и молись, что бы стек не переполнился.
– Сильно грузить порты ввода-вывода нельзя. Например, если включить проигрывание wav-ки с карточки и побежать исполнять код дальше, то вместо “чистого” звука услышишь его же с треском. Начнешь много и часто читать с карточки – получишь мешанину байт вместо ожидаемого. Рисуешь картинку – будь готов к потерям байт в последовательном порту.
– Отладчика нет. Вообще ни в каком виде. Отладочный вывод? Ну можно писать в usart, если он не занят. Но проще тупо на экран.
После всего этого проблемы вида “есть возможность загрузить шрифты, но нет ни описания формата, ни редактора для них” кажутся такими пустяками …
Но с другой стороны, если вы достаточно сильны духом, то за $185 долларов (сама дорогая модель) вы получите готовую уберштуку, в которой 7″ дисплей (800х480), маленький динамик и слот для карточек. Попутно будет доступно нцать выводов, на которые можно повесить всякие енкодеры, пзушки (внутри хоть и есть флеш, но писать не дают) и прочие штуковины. И после кучки оптимизаций все это будет крутиться довольно быстро и не раздражать пользователя.
В этой реальности я бы посоветовал найти отдельно 7″ дисплей и какой-нибудь контроллер. Будет и дешевле и быстрее и удобней.
Как-то так 🙂