Дисплей высокого разрешения за четыре доллара

step962
Offline
Зарегистрирован: 23.05.2011

Наигравшись за осень и зиму с разными TFT-дисплеями, я решил подойти к дачному сезону с более удобным вариантом. Естественным образом выбор пал на Android-смартфон (в связке с ESP):

  • за редким исключением смартфоны находятся под рукой и у меня, и у жены, так пусть послужат;
  • у смартфона (не говоря уж о планшете) достаточно большой по размеру и оставляющий далеко позади все дисплейчики в плане разрешения и яркости красок экран;
  • индуктивный сенсорный экран, опять же, позволяет управлять пальцем;
  • WIFI-канал обеспечивает устойчивую связь по всему участку.

Из обширного ассортимента ESP-шек выбор пал на Witti Cloud – недорогой и удобный в программировании (за счет USB-TTL-переходника и разведенных линий Reset/Flash на отдельной платке) модуль. Еще один достойный кандидат – модуль Lua, но он побольше в размерах.

ESP-модуль работает в режиме точки доступа и постоянно готов к общению. Поэтому жрет достаточно много и запитываться должен от сети или от емкого аккумулятора. Соответственно, смартфон общается с ним в режиме клиента, все, что необходимо сделать для сеанса связи – подключиться к соответствующей точке доступа.

На смартфоне реализован тонкий клиент (демо-приложение можно сгрузить здесь). То есть, вся логика работы программируется в ESP-модуле и - возможно - присоединенных к нему Ардуинах. Смартфон лишь отрисовывает поступающие на него графические команды, а при нажатии на расположенные внизу экрана кнопки отправляет ESP-модулю восемь фиксированных ответов:

 fun1   fun4   drw
 fun2   fun5   redrw 
 fun3   fun6   

Нажатие на девятую кнопку “SnSht” позволяет сделать снимок экрана.

 

Сейчас реализовано несколько простейших команд:

FG Задание цвета точек/прямых (выбор между 16 стандартными цветами)
FD Задание цвета переднего и заднего фона дисплея
FZ Задание цвета для вывода текста (шрифт и фон)
GD Рисование прямой по двум точкам
GR Рисование прямоугольника по двум противоположным вершинам
GW Рисование прямой из текущей точки в точку с указанными координатами
ZL Вывод текста с выравниванием влево
ZC Вывод текста с выравниванием по центру
ZR Вывод текста с выравниванием вправо
DL Заливка графической области дисплея цветом заднего фона
DS Заливка графической области дисплея цветом переднего фона
RF Заливка прямоугольной области
RL Стирание прямоугольной области (заливка цветом заднего фона)
RS Заливка прямоугольной области цветом переднего фона

В планах стоит расширение списка команд, управление ресурсами (изображения, шрифты, структуры данных), а также создание стандартных инструментов типа балочных и стрелочных индикаторов. Но уже существующего набора достаточно, чтобы создать информативную статичную картинку с динамичным реагированием на команды пользователя.

a

Результат работы команд FG, GD, GR, RF - выбор цвета, отрисовка отрезка, заполненного и незаполненного квадратика а здесь добавлено рисование параболы с помощью отрезков (команда GD) по рассчитанным в цикле координатам

 

http
Offline
Зарегистрирован: 23.06.2017

step962 пишет:
индуктивный сенсорный экран
емкостный или очень редко резистивный

step962
Offline
Зарегистрирован: 23.05.2011

Ну да, емкостный...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Чет я не понял, а где, собственно, дисплей за $4? Или Вы оцениваете смартфон в $4? Или название служит исключительно для привлечения внимания, ничего не имея общего с проектом?

step962
Offline
Зарегистрирован: 23.05.2011

Так написано же в самом начале - смартфоны лежат в карманах. И у меня, и у жены и у сына. Планшет тоже вопиет о том, чтобы испльзовать его более интенсивно. Вложение трех-четырех долларов в покупку esp8266-модуля позволяет превратить смартфон/планшет во вполне себе функциональный терминал для микроконтроллера.

При этом подключение дисплея и блока кнопок не стоит ничего (в смысле пинов), если характеристик самого модуля (десять цифровых входов/выходов и один аналоговый вход) будет достаточно для приложения. Либо оно произойдет ценой двух цифровых входов/выходов, если модуль, подключенный к основному микроконтроллеру по UART-каналу, будет работать в качестве посредника между смартфоном и микроконтроллером.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

step962, вы бы хоть какой действующий пример выложили. С вашей колокольни оно наверное всё выглядит иначе, но глазами стороннего пользователя ПОКА виден просто художественный абстракционизм. Я конечно понимаю, что нетерпится поделится задумкой, но всё таки рановато :) Так же технические детали не ясны, например по какому протоколу всё это работает, порты, и прочее..

step962
Offline
Зарегистрирован: 23.05.2011

Ваша правда - исправляюсь. Вот тот скетч, с помощью которого генерятся вышеприведенные изображения:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <stdio.h>
#include <string.h>

// Имя точки доступа и пароль:
const char *ssid = "espTestAP";
const char *password = "smartDisplay";
String sResponse;
int curLineColor;

ESP8266WebServer server(80);

void drwTest() {
  char s[30];
  int i,j;
    sResponse += "#RL1,1,-1,-1;"; // заливка дисплея цветом фона    
    for(i=1;i<=16;i++) {
// Выбор цвета для рисования прямых в диапазоне 1...16 (стандартные цвета)
      sprintf(s,"#FG%d,1;",i);
      sResponse += s;
      for(j=0;j<4;j++) {
        sprintf(s,"#GD%d,%d,%d,%d;",i*16+j,40,i*16+j,-40);
        sResponse += s;
      }
      j = i-1;
      sprintf(s,"#GR%d,%d,%d,%d;",-((j/4)*40+20),(j%4)*40+20,-((j/4)*40+50),(j%4)*40+50);
      sResponse += s;
      sprintf(s,"#RF%d,%d,%d,%d,%d;",-((j/4)*40+220),(j%4)*40+20,-((j/4)*40+250),(j%4)*40+50,i);
      sResponse += s;
    }
}

void redrwTest() {
  int i;
  char s[30];
// Выбор цвета для рисования прямых в диапазоне 1...16 (стандартные цвета)
  curLineColor++; if(curLineColor>16) curLineColor=1;
  sprintf(s,"#FG%d,1;\0",curLineColor);
  sResponse += s;
// рисуем косой крест
  sprintf(s,"#GD%d,%d,%d,%d;",-10,-10,-500,-500);
  sResponse += s;
  sprintf(s,"#GD%d,%d,%d,%d;",-10,-500,-500,-10);
  sResponse += s;
// а теперь строим семейство прямых с огибающей параболой
  for(i=5;i<500;i+=10) {
    sprintf(s,"#GD%d,%d,%d,%d;",-10,-500+i,-i,-10);
    sResponse += s;
  }
}

void handleRoot() {
  sResponse = "";
// В зависимости от полученной от клиента (смартфона) команды выполним
// ту или иную функцию, генерирующую ответ с командами рисования
  if(server.arg(0).equals("drw")) drwTest();
  if(server.arg(0).equals("redrw")) redrwTest();
// отправляем сгенерированную строку клиенту:
  server.send(200, "text/html", sResponse);
}

void startServer() {
  server.on("/", handleRoot);
  server.begin();
  Serial.println("== HTTP server started");
}

void startAsAccessPoint() {
  delay(1000);
  Serial.println("-- Configuring access point...");
  WiFi.disconnect();
  WiFi.softAPdisconnect();
  
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password);

  Serial.println("-- WiFi-Module started in AP-Mode");
}

void setup() {
  curLineColor = 1;
  Serial.begin(115200);
  Serial.println("");
  Serial.println("================ Script esp8266_MobileDisplay_0 ================");
  startAsAccessPoint();
  startServer();
}

void loop() {
  server.handleClient();
}

В нем используется только часть упомянутых ранее (и уже реализованных) команд. Как можно уяснить из скетча, формат каждой отправляемой команды:

<стартовый символ><команда><параметры><стоповый символ>

В качестве стартового символа используется решетка ("#"), в качестве стопового - точка с запятой (";"). Команда всегда представляет комбинацию двух латинских букв в верхнем регистре, наличие и размер блока параметров зависит от команды, параметры отделяются друг от друга запятыми.

Например:

#RL1,1,-1,-1; - заливка всего дисплея фоновым цветом с помощью команды заливки фоновым цветом (RL) прямоугольной области с координатами (1,1)-(-1,-1). С левым верхним углом все понятно: начало координат в верхнем левом углу экрана, значения абсцисс увеличиваются вправо, значения ординат - вниз. Ну а правый нижний угол здесь задан парой (-1,-1), поскольку в Android-приложении отрицательные координаты интерпретируются как откладываемые от правой стороны экрана влево и от нижней стороны - вверх. Такая схема позволяет без особых ухищрений более-менее равномерно заполнять экран на устройствах с различным разрешением.

dimax пишет:

...

Я конечно понимаю, что нетерпится поделится задумкой, но всё таки рановато :) Так же технические детали не ясны, например по какому протоколу всё это работает, порты, и прочее..

Можно, конечно, сразу расписать простыню на полдюжины экранов, но ведь все равно те или иные вопросы останутся неосвещенными. И при наличии интереса уточняющие вопросы будут. Так пусть их будет чуть побольше...

Протокол - HTTP, порт - 80.

Прочее... А что именно? Привести кодировку цветов, или расписать, как загружаются Android-приложения из сторонних источников? Опять же, вопрос вывода текстовой информации может для кого-нибудь иметь первостепенное значение...

Logik
Offline
Зарегистрирован: 05.08.2014

КГ/АМ

Все это делается в броузере. И работает на любой платформе, хоть на холодильнике, а не только в смартфоне с спецсофтом. И число кнопок и вобще контролы получаются произвольные. И обмен по WebSocket быстрый и простой в реализации. А уж протокол какой захочется - примитивы на канву или высокоуровневые команды -  ну как душе угодно, канва все стерпит.

Автору разобратся не только с типами тачскринов, но и с ESP, какие они бывают.

xvovanx
xvovanx аватар
Offline
Зарегистрирован: 02.07.2017

Да уж, заголовок статьи абсолютно не соотверствует содержанию... Каждый, как и я, надеялся увидеть здесь подключение большого дисплея к Ардуино, а не связь мобильника по вайфаю, "лежащего в кармане"...а жаль

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

step962 пишет:

Так написано же в самом начале - смартфоны лежат в карманах...

А почему Вы не написали: "Дисплей высокого разрешения + процессор 1.5 ГГц + 16 Гбайт бесплатно"?

Ведь это все уже лежит в кармане. И пользоваться можно без каких либо дополнительных затрат (ну при условии, что сим-карта тоже в кармане).

step962
Offline
Зарегистрирован: 23.05.2011

andriano пишет:

А почему Вы не написали: "Дисплей высокого разрешения + процессор 1.5 ГГц + 16 Гбайт бесплатно"?

Ведь это все уже лежит в кармане. И пользоваться можно без каких либо дополнительных затрат (ну при условии, что сим-карта тоже в кармане).

Не совсем так - у ответной части (МК) бедновато по части организации интерфейса "человек-машина" (ЧМИ)Если задача требует постоянного или даже спорадического общения с микропрограммой, к микроконтроллеру придется подключить модуль, дающий возможность связываться с внешним миром - а он, как правило, не лежит в кармане. Приходится либо простейший LCD-дисплейчик подключать с какой-никакой клавиатурой, либо к графических дисплеям с сенсорной панелью. Каждый из этих вариантов может занять достатояно много выводов мк, уж во всяком случае больше, чем самый расточительный вариант при работе с ESP-модулем - "ESP+Arduino" - два вывода (RX и TX).

И таки да - при условии, что и ЕСПшка лежит в кармане, ЧМИ можно будет получить забесплатно.

step962
Offline
Зарегистрирован: 23.05.2011

xvovanx пишет:

Да уж, заголовок статьи абсолютно не соотверствует содержанию... Каждый, как и я, надеялся увидеть здесь подключение большого дисплея к Ардуино, а не связь мобильника по вайфаю, "лежащего в кармане"...а жаль

Это приложение и на 10-дюймовом планшете работает без проблем. Кстати, в первом посте представлены скриншоты с 7-дюймового дисплея. Система их урезала по размеру, поэтому тонкие линии утратили свою яркость.

А вы верите в то, что Arduino сможет более или менее оперативно управлять большим экраном непосредственно?

step962
Offline
Зарегистрирован: 23.05.2011

Logik пишет:

КГ/АМ

Все это делается в броузере. И работает на любой платформе, хоть на холодильнике, а не только в смартфоне с спецсофтом. И число кнопок и вобще контролы получаются произвольные. И обмен по WebSocket быстрый и простой в реализации. А уж протокол какой захочется - примитивы на канву или высокоуровневые команды -  ну как душе угодно, канва все стерпит.

95% форумчан с вами абсолютно согласны. Раздел "Программирование" тому порукой.

Цитата:

Автору разобратся не только с типами тачскринов, но и с ESP, какие они бывают.

А вы надеялись увидеть обзор ESP-модулей? Вынужден вас разочаровать - в мои задачи это не входило. Для этого есть специализированные форумы.
 

 

b707
Offline
Зарегистрирован: 26.05.2017

 

> 95% форумчан с вами абсолютно согласны. Раздел "Программирование" тому порукой.

 

step962 - я вас много почитал в архивах, уж у вас-то не должно быть никаких иллюзий, что для "95% форумчан" ваш код  - это китайская грамота. Даже если вы распишите все пошагово на 20 страницах, начиная с установки АрдуиноIDE и АндроидSDK - все равно ведь будут просить готовый скетч и спрашивать что-то на уровне "а что означает i++"?

раз вы не пошли путем динамического HTTP-кода - хотя вроде это было очевидно с учетом использования либы Webserver.h - не вполне понятно, зачем тогда вообще ESP и WiFi, Почему не взять Блютуз - он компактнее и сильно дешевле, а в смысле коммуникаций со смартофоном ничуть не хуже.

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

andriano пишет:

А почему Вы не написали: "Дисплей высокого разрешения + процессор 1.5 ГГц + 16 Гбайт бесплатно"?

излишки процессорных мощностей и памяти будут изыматься в пользу Народной Республики Суберии.

arduinec
Offline
Зарегистрирован: 01.09.2015

step962 пишет:

А вы верите в то, что Arduino сможет более или менее оперативно управлять большим экраном непосредственно?

Arduino Due (http://arduino.ru/Hardware/ArduinoDue) сможет.

step962
Offline
Зарегистрирован: 23.05.2011

Выложена обновленная версия Android-клиента - (ссылка для скачивания).

Теперь связь с Arduino поддерживается не только по WIFI, но и по Bluetooth. Для переключения между режимами связи необходимо вызвать меню приложения, выбрать пункт "Settings" и в открывшемся окне в группе "Channel" выбрать нужный режим.

Для тех кому трудно "вручную" генерировать управляющие последовательности - можно воспользоваться библиотекой MD_Scout (ссылка для скачивания). Библиотека в стадии разработки - пока не все реализованные в клиенте команды поддерживаются, но необходимый минимум для тестирования обеспечен.

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

Меня как-то тоже такая идея посещала http://arduino.ru/forum/apparatnye-voprosy/android-smartfrn-vmesto-gsm-m...
Насколько я знаю подобие таких проектов уже существует. Топик стартеру удачии!
Вот ещё инфа может на какие мысли наведет http://azjio.narod.ru/autoit3_docs/guiref/GUIRef.htm
Мне кажется кроме примитивов необходимо заложить какие-то стандартные элементы визуализации (шкалы, кнопки, чек боксы, стрелочные индикаторы).
С ардуино передавать команду на отрисовку шкалы (drawBar(координаты, минимум, максимум, текущее значение), также можно добавить к свойствам возвращаемое значение при тапе на объект (для кнопки например или чекбокса).

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Имхо, проект мертворожденный. Ясно, что моё мнение никому не впилось, но поясню, почему такое имхо: передавать с ардуины всякие команды на отрисовку примитивов на смартфоне - чистой воды идиотизм, кроме идиотии - за такой идеей ничего не стоит. Раз уж упёрлись в экран смартфона, то более правильным представляется вариант приложения с уже оформленными GUI-примитивами, типа кнопки, чекбоксы, графики и т.п. - раз уж юзать возможности смартфона - то юзать. Но таких векторов применения - уже есть, тот же Blynk. Именно поэтому считаю, что проект - мертворожденный.

step962
Offline
Зарегистрирован: 23.05.2011

DIYMan пишет:

Имхо, проект мертворожденный.

...

Ну, раз доктор сказал в морг...

step962
Offline
Зарегистрирован: 23.05.2011

yul-i-an пишет:

...

Мне кажется кроме примитивов необходимо заложить какие-то стандартные элементы визуализации

...

 

На все требуется время. Сначала появились графические примитивы, затем стали понемногу появляться и элементы, поднимающие градус интерактивности. Часть из них я собрал на прилагаемом экране:

Это кнопка, слайдер, крутилка, стрелочный индикатор, 7-сегментный "дисплей", "дисплей" 16х2, возможность вывода текстов с использованием ttf- и otf-шрифтов.

Кнопка уже может задаваться на уровне команд Arduino, работает в двух режимах - без фиксации ("звонок") и с фиксацией ("переключатель") состояния. В соответствующие моменты на Arduino отправляются строковые сообщения с кодами нажатия/отпускания той или иной кнопки (или с кодом переключения в соответствующее положение в случае кнопки с фиксацией).

Остальные упомянутые элементы создаются в отладочном окне планшета и ждут того момента, когда для них появится набор команд, необходимых для задания/настройки со стороны Arduino.

Ну а в планах - еще дюжиина-другая элементов управления и идеи по использованию ресурсов. Надеюсь, что за зиму удастся реализовать основную часть задуманного.

PS: Опаньки, а слайдер-то на 7-дюймовом экране и не виден. Ну да ладно - в следующем окне отображу.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ну то есть как я и сказал - от баловства с рисованием примитивов таки пошли по правильному пути ;) Теперь надо отказаться от самописных контролов там, где это возможно, и юзать встроенные в андроид GUI-элементы - это будет правильно, т.к. промышленный стандарт, время велосипедов уже давно прошло. А где будет не хватать GUI-элементов - тогда уже решать по факту.

И да, как показывает практика - баловство со шрифтами нужно только в типографии. Это я к тому, что лучше на первом этапе просто на это подзабить, т.к. это, по сути - рюшечки, сиречь развлекуха кота, когда ему делать нечего. Кучей шрифтов пользователя не купишь, единственное, что может привлечь пользователя - это решение его проблемы.

Поэтому задам вам простой вопрос: какую проблему пользователя решает ваш проект? Без абстракций, пожалуйста, типа "кучу GUI-элементов, лёгкая отрисовка примитивов" и пр. Пока я вижу, что название проекта не соответствует его содержанию, это скорее ваша игрушка, чем решение конкретной проблемы - именно поэтому и задаю вопрос. 

Без обид, говорю предельно жёстко - сознательно.

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Подпишусь на тему...

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

DIYMan пишет:

... единственное, что может привлечь пользователя - это решение его проблемы.

Поэтому задам вам простой вопрос: какую проблему пользователя решает ваш проект? Без абстракций, пожалуйста, типа "кучу GUI-элементов, лёгкая отрисовка примитивов" и пр. Пока я вижу, что название проекта не соответствует его содержанию, это скорее ваша игрушка, чем решение конкретной проблемы - именно поэтому и задаю вопрос. 

Без обид, говорю предельно жёстко - сознательно.

Ну есили добавить сигнализацию по смс или мылу при какихто заданных значениях и прием смс команд как в Virtuino например...

Вот только дизаина в одном стиле как в Blink не хватает.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

yul-i-an пишет:

 

Ну есили добавить сигнализацию по смс или мылу при какихто заданных значениях и прием смс команд как в Virtuino например...

Вот только дизаина в одном стиле как в Blink не хватает.

А как тем виртуино пользоваться? а то честно говоря - не соображу как наваять на экран иконок и привязать к рабочему проекту.

slider
Offline
Зарегистрирован: 17.06.2014

подпишусь на тему, интересненько. И ссылочки интересные здесь публикуются.

Как понимаю , если слать графические команды типа UTFT  , Adafruit - это будет очень медленно.

! хотелось бы увидеть видео тест adafruit или UTFT . мож будут хотябы как OLED на I2C , по скорости.

?   А что если излишние мощности планшетника использовать как это делают NEXTION дисплеи (дисплей+ stm32 , управление по Rx Tx готовой вами написанной графики на stm32) ?   

?   есть такие проекты которые повторяют точь в точь NEXTION дисплей ? 

Rx Tx как раз можно было организовать по Wi-Fi или блютуз .

step962
Offline
Зарегистрирован: 23.05.2011

DIYMan пишет:

И да, как показывает практика - баловство со шрифтами нужно только в типографии. Это я к тому, что лучше на первом этапе просто на это подзабить, т.к. это, по сути - рюшечки, сиречь развлекуха кота, когда ему делать нечего. Кучей шрифтов пользователя не купишь, единственное, что может привлечь пользователя - это решение его проблемы.

Монитор компьютера - не типография, тем не менее в любой форме можно насчитать 2-3 разных шрифта.

При этом в плане программирования под Android задача решается достаточно просто. Так что почему бы и нет?

DIYMan пишет:

Поэтому задам вам простой вопрос: какую проблему пользователя решает ваш проект? Без абстракций, пожалуйста, типа "кучу GUI-элементов, лёгкая отрисовка примитивов" и пр. 

Какую проблему решает прикрученный к Arduino дисплейчик от нокии? Какой особый смысл в нем без дополнительных кнопочек? Посмотреть на отображаемую на таком дисплее информацию - маловато будет, иногда требуется и настройки программы подкорректировать. Дисплейчик прикрутили, кнопочки... глядишь, и пины у микроконтроллера почти закончились. В варианте с дисплеем Android-устройства требуется пожертвовать всего двумя пинами, чтобы на выходе получить средство отображения гораздо большего объема информации, а также устройство ввода.

step962
Offline
Зарегистрирован: 23.05.2011

yul-i-an пишет:

Ну есили добавить сигнализацию по смс или мылу при какихто заданных значениях и прием смс команд как в Virtuino например...

Это пока в повестке дня не стоит.

yul-i-an пишет:

Вот только дизаина в одном стиле как в Blink не хватает.

Набор элементов одного стиля - дело наживное. Или даже дело дизайнера. Пока то я основное внимание уделяю отладке имеющихся объектов и на рюшечки времени не трачу. Маловато его - времени-то свободного...

slider пишет:

Как понимаю , если слать графические команды типа UTFT  , Adafruit - это будет очень медленно.

Что в вашем понятии быстро/медленно? Отрисовка статичной формы за полсекунды (Bluetooth, управляемый через SoftwareSerial на жалких 9600 бит/с) или за одну десятую секунды (WiFi) - это медленно или быстро? Как по мне, так для задач контроля/управления большее высокая динамичность мало когда требуется.

step962
Offline
Зарегистрирован: 23.05.2011

За прошедшие полтора месяца разработан механизм создания органов управления на экране Android-устройства, взаимодействующих по Bluetooth- или WIFi-каналу со скриптом. Библиотека MD_Scout также расширилась и теперь все команды из скетча можно отправлять, оперируя не создаваемыми вручную символьными последовательностями, а вызывая соответствующие библиотеченые функции.

Что, кроме команд прямого рисования, доступно на данный момент:

Определение простой кнопки (без фиксации нажатого положения) - символьная команда "AT" или функция defineTouchButton().

Определение кнопки-переключателя (два фиксированных положения) - символьная команда "AK" или функция defineCheckButton().

Для задания ручки-крутилки необходимо вызвать функцию defineRotaryButton() или символьной команды "A00".

Слайдеры - горизонтальный и вертикальный - декларируютс с помощью функции defineSlider() или символьной команды "A01".

Поле ввода - функция defineEditText() или команда "".

Ну и терминал: декларация в функции defineTerminal() (команда "TW0") и вывод строки текста в него - writeTerminal() (команда "TWS") . Я использую терминал прежде всего для вывода отладочной информации, естественно, эти его применение не ограничивается.

На картинке представлены перечисленные элементы:

Так выглядит блок кода, создающие представленные на картинке элементы:

    addCmdString(mdScout.defineTouchButton(80,50,250,130,101,102,"Touch button"));
    addCmdString(mdScout.defineCheckButton(80,150,250,230,103,104,"Check button"));
    addCmdString(mdScout.defineRotaryButton(0,150,270,180,45,135,0,100));
    addCmdString(mdScout.defineRotaryButton(1,370,270,220,135,45,0,100));
    addCmdString(mdScout.defineSlider(0,100,600,500,60,0,100,10,150));
    addCmdString(mdScout.defineSlider(1,10,100,60,550,0,100,10,250));
    addCmdString(mdScout.setTextColors(C_YELLOW,C_BLUE));
    addCmdString(mdScout.setTextSize(22));
    addCmdString(mdScout.defineTerminal(0,280,10,580,250));
    addCmdString(mdScout.defineEditText(0,100,500,250,50));

И так происходит вывод в терминал:

  addCmdString(mdScout.writeTerminal(0,"13:45:07  HSlider 45"));
  addCmdString(mdScout.writeTerminal(0,"13:45:10  VSlider 80"));
  addCmdString(mdScout.writeTerminal(0,"13:45:21  Поворот - проверка"));

Ссылка для скачивания Android-программы.

Ссылка для скачивания библиотеки MD_Scout.