Дисплеи 4D …

… или не ходите дети в Австралию гулять.

Есть в далекой загранице такая компания – 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″ дисплей и какой-нибудь контроллер. Будет и дешевле и быстрее и удобней.

Как-то так 🙂