Virtuino HMI на Андроид

Блок для работы с программой визуализации Virtuino

Пользовательские блоки для коммкникации и связи GSM, GPRS, IR, Bluetooth и другие
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Fuji1604
Сержант
Сообщения: 282
Зарегистрирован: 19.01.2016{, 06:09}
Репутация: 40
Откуда: Березники
Имя: Сергей

Virtuino HMI на Андроид

#1

Сообщение Fuji1604 » 12.10.2017{, 09:10}

Блок пользователя, для работы с программой визуализации Virtuino на андроид.
Описание и блокиПоказать
Подключение к андроиду через WiFi или БТ, выбирается соответствующим блоком.
Добавил блоки приема и отправки текста.
Изменил блоки передачи переменных, теперь с блока DV можно сразу получать переменные разных типов.

Входами и выходами virtuino управляет напрямую, переделывать библиотеку не вижу смысла (все переменные программа пересылает в виде integer или float), т.к. придется это делать при каждом обновлении библиотеки. Для передачи сигнала с кнопки или регулятора используйте в программе virtuino виртуальный вывод DV. В программе используйте блок приема DV в котором укажите индекс переменной (сделал отдельным входом, так схема платы становится более читабельной)

Для увеличения количества переменных (по умолчанию их 32 DV и 32 V)необходимо:
1. открыть файл VirtuinoEsp8266_WebServer.h или VirtuinoBluetooth.h библиотеки Virtuino, найти следующие строки:
#define wf_virtualDigitalMemorySize 32 // DV virtual memory size
#define wf_virtualAnalogMemorySize 32 // V virtual memory size
2. Установить необходимое количество переменных, точно такое же количество установить в приложении на андроиде (вкладка "Больше настроек").
3. После этого производить компиляцию проекта.
VIRTUINO.ubl
(980.09 КБ) 631 скачивание
v2 - разделил блок ESP на блок подключения к вайфай и блок создающий точку доступа
VIRTUINO2.ubl
(1.38 МБ) 682 скачивания

Блоки для подключения через ESP с прошивкой ESP-LINK

ESP-LINK2

Настройка приложения
СкриншотыПоказать
Безымянный1.jpg
Безымянный.jpg
Безымянный11.jpg
Безымянный11d.jpg
Обсуждение программы на старом сайте
Последний раз редактировалось Fuji1604 04.06.2019{, 08:27}, всего редактировалось 9 раз.

vsvv
Рядовой
Сообщения: 31
Зарегистрирован: 06.10.2018{, 09:48}
Репутация: 0
Откуда: Украина
Имя: Владимир

Virtuino HMI на Андроид

#221

Сообщение vsvv » 24.02.2019{, 09:04}

Здравствуйте уважаемые форумчане!
Тоже пробывал приложение Virtuino, удалось подключиться и по модбасу, включать и выключать светодиоды или реле все ок, но как только использую шим, сразу пропадает связь с ESP8266, не могу разобраться в чем проблема?
Кто в курсе подскажите, пожалуйста!

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

Virtuino HMI на Андроид

#222

Сообщение ingener » 27.02.2019{, 14:38}

Подскажите, как правильно собрать программу для NodeMCU v.3?
В FLprog слева раскрываются настройки самого контроллера (имя сети, клиент или точка, IP и прочее)
Это нужно заполнять? Или нужно заполнять эти данные в блоке Virtuino? :smile37:

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

Virtuino HMI на Андроид

#223

Сообщение fsergei70 » 28.02.2019{, 03:53}

Не для кого не секрет что кроме virtuino, есть ещё и virtuino modbus и virtuino MQTT. Я тут прикупил обычную версию и написал автору по поводу того что в простой версии виджетов меньше чем в версии с modbus и MQTT. В общем в марте выйдет новая версия которая будет поддерживать и modbus и MQTT и обычную работу через esp. В новой версии не будет только bluetooth . Новое приложение не будет совместимо с старыми, будут новые библиотеки. Так что если кто решил покупать есть смысл немного подождать. Кстати и каскада должна обновиться. Это связано с новыми требованием googl. Так что ждемс.

Аватара пользователя
Kotafey
Лейтенант
Сообщения: 311
Зарегистрирован: 18.07.2018{, 15:03}
Репутация: 21
Откуда: Геленджик
Имя: Константин

Virtuino HMI на Андроид

#224

Сообщение Kotafey » 28.02.2019{, 14:16}

ingener писал(а):
27.02.2019{, 14:38}
Подскажите, как правильно собрать программу для NodeMCU v.3?
В FLprog слева раскрываются настройки самого контроллера (имя сети, клиент или точка, IP и прочее)
Это нужно заполнять? Или нужно заполнять эти данные в блоке Virtuino? :smile37:
Я не заполняю. Только в блоке.

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

Virtuino HMI на Андроид

#225

Сообщение ingener » 28.02.2019{, 21:13}

Пытаюсь настроить Nano + ESP-01 для работы с Виртуино по Hardware serial.
Может, будет более надежно и быстро работать. Надоело, что постоянно отваливается и подвисает.
Сделал все как указано в блоках и скетче (отключить строки Software, в библиотеке строку #define ESP8266_USE_SOFTWARE_SERIAL)
НО при компиляции ругается.
Неужели правда для Nano и UNO в принципе нельзя использовать Hardware serial?
Вложения
nn.JPG

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

Virtuino HMI на Андроид

#226

Сообщение ingener » 28.02.2019{, 21:36}

Все, понятно. Надо в скетче везде где слово "Serial1" убрать единицу и все скомпилировалось и работает

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

Virtuino HMI на Андроид

#227

Сообщение ingener » 01.03.2019{, 10:38}

Kotafey писал(а):
28.02.2019{, 14:16}
Я не заполняю. Только в блоке.
А как наcтраиваете в блоке? По software или hardware serial?
Не сложно скинуть ваш проект или только блок virtuino ESP, настроенный под Node mCU?

Аватара пользователя
Kotafey
Лейтенант
Сообщения: 311
Зарегистрирован: 18.07.2018{, 15:03}
Репутация: 21
Откуда: Геленджик
Имя: Константин

Virtuino HMI на Андроид

#228

Сообщение Kotafey » 03.03.2019{, 17:24}

ingener писал(а):
01.03.2019{, 10:38}
Kotafey писал(а):
28.02.2019{, 14:16}
Я не заполняю. Только в блоке.
А как наcтраиваете в блоке? По software или hardware serial?
Не сложно скинуть ваш проект или только блок virtuino ESP, настроенный под Node mCU?
под видео есть ссылка

Andropa
Рядовой
Сообщения: 54
Зарегистрирован: 13.12.2018{, 14:22}
Репутация: 0
Имя: Andron

Virtuino HMI на Андроид

#229

Сообщение Andropa » 05.03.2019{, 13:08}

fsergei70 писал(а):
28.02.2019{, 03:53}
Не для кого не секрет что кроме virtuino, есть ещё и virtuino modbus и virtuino MQTT. Я тут прикупил обычную версию и написал автору по поводу того что в простой версии виджетов меньше чем в версии с modbus и MQTT. В общем в марте выйдет новая версия которая будет поддерживать и modbus и MQTT и обычную работу через esp. В новой версии не будет только bluetooth . Новое приложение не будет совместимо с старыми, будут новые библиотеки. Так что если кто решил покупать есть смысл немного подождать. Кстати и каскада должна обновиться. Это связано с новыми требованием googl. Так что ждемс.
Se версия вышла поддерживающая все вместе .пытаюсь сделать пользовательский блок для нее пока все печально ошибки компиляции нужно чтобы кто то более просвещенный тыкнул носом где я косо еду блоки прилагаю
Вложения
se_Windows.zip
(5.16 КБ) 95 скачиваний
Приём_V_SE_(CODE).ubi
(15.25 КБ) 93 скачивания
Отправить_V_SE_(CODE).ubi
(15.59 КБ) 94 скачивания
VIRTUINO_SE_WeMos_Client_(CODE).ubi
(7.34 КБ) 91 скачивание

Аватара пользователя
Fuji1604
Сержант
Сообщения: 282
Зарегистрирован: 19.01.2016{, 06:09}
Репутация: 40
Откуда: Березники
Имя: Сергей

Virtuino HMI на Андроид

#230

Сообщение Fuji1604 » 05.03.2019{, 14:59}

вечером попробую сделать
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню

Andropa
Рядовой
Сообщения: 54
Зарегистрирован: 13.12.2018{, 14:22}
Репутация: 0
Имя: Andron

Virtuino HMI на Андроид

#231

Сообщение Andropa » 05.03.2019{, 16:54}

По примеру создания блока компаса пытался разобраться , но толком ничего чего путного не получалилось , не компилируется сыплет ошибки тоннами , пробовал про примеру блока коннекта с есп для виртуино ( обычной версии ) , такая же история , видимо не да но )

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

Virtuino HMI на Андроид

#232

Сообщение fsergei70 » 05.03.2019{, 19:52}

Посмотрел я эту virtuino se версию, в общем виджетов новых нет. MQTT и modbus из коробки не работают. Если кто не покупал старую версию имеет смысл попробовать новую. В общей сложности в 4 вкладках бесплатной версии можно использовать 19 виджетов. Из плюшек понравилось только то что можно из готового проекта заказать apk файл, правда это опять за отдельную плату. Написал автору по поводу обновления ранее выпущеных версий программы, но скорей всего старые обновлять уже не будет. Надо же чтоб новую покупали.

Отправлено спустя 15 минут 35 секунд:
Для себя решил с покупкой новой версии не спешить. Купленная ранее virtuino пока устраивает. Присматриваюсь сейчас к easy builder. Отличная бесплатная прога для сенсорных панелей, есть эмулятор.

Аватара пользователя
KaScada
Лейтенант
Сообщения: 388
Зарегистрирован: 23.04.2016{, 12:33}
Репутация: 13
Контактная информация:

Virtuino HMI на Андроид

#233

Сообщение KaScada » 05.03.2019{, 21:49}

fsergei70 писал(а):
05.03.2019{, 20:07}
Присматриваюсь сейчас к easy builder.
Эмулятор работает ограниченное время, если правильно помню, то минут 30, потом автоматом закрывается.
Но это только для ПК ведь. Панели weintek тоже планируете закупать?
ПО КаСкада на базе смартфона/планшета с ОС Андроид

Подробнее здесь: http://www.hmi-kascada.ru/

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

Virtuino HMI на Андроид

#234

Сообщение fsergei70 » 06.03.2019{, 05:17}

KaScada писал(а):
05.03.2019{, 21:49}
fsergei70 писал(а):
05.03.2019{, 20:07}
Присматриваюсь сейчас к easy builder.
Эмулятор работает ограниченное время, если правильно помню, то минут 30, потом автоматом закрывается.
Но это только для ПК ведь. Панели weintek тоже планируете закупать?
Нет, закупать не планирую для дома дорого а для работы не надо, есть уже скада от dep. Да программа эта работает толькко на компе, но ведь скада и должна быть на компе чтоб все помещалось на большом экране. Кстати к этой проге, прям у них на сайте есть огромная библиотека графических элементов. Кнопки, переключатели всякие задвижки. Перетащили бы вы в свою каскаду десяток другой этих компонентов. Выглядела бы она гораздо красивей.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Virtuino HMI на Андроид

#235

Сообщение Rovki » 06.03.2019{, 07:41}

fsergei70 писал(а):
06.03.2019{, 05:17}
KaScada писал(а):
05.03.2019{, 21:49}

Эмулятор работает ограниченное время, если правильно помню, то минут 30, потом автоматом закрывается.
Но это только для ПК ведь. Панели weintek тоже планируете закупать?
Нет, закупать не планирую для дома дорого а для работы не надо, есть уже скада от dep. Да программа эта работает толькко на компе, но ведь скада и должна быть на компе чтоб все помещалось на большом экране. Кстати к этой проге, прям у них на сайте есть огромная библиотека графических элементов. Кнопки, переключатели всякие задвижки. Перетащили бы вы в свою каскаду десяток другой этих компонентов. Выглядела бы она гораздо красивей.
Красота понятие субьективное - что хорошо для УД ,не всегда хорошо для промышленного применения ...Каждый пользователь сам может установить ту картинку кнопки ,которая лично ему нравиться ...имхо.- это принципиальный подход в универсальном приложении . :smile225:
Но что бы не было вопросов ,что я влез в тему аналога ,скажу - вертуино мне понравился :yes:
Электронщик до мозга костей и не только

Andropa
Рядовой
Сообщения: 54
Зарегистрирован: 13.12.2018{, 14:22}
Репутация: 0
Имя: Andron

Virtuino HMI на Андроид

#236

Сообщение Andropa » 06.03.2019{, 08:16}

Помогите пожалуйста собрать блок для инициализации virtuino se
СпойлерПоказать
/* VirtuinoSE example: Turn On-Off the onboard led
* Supported boards: ESP8266 & ESP32
* Created by Ilias Lamprou
* Updated Oct 27 2018
* More examples: http://virtuino.com/index.php/virtuino- ... e-examples
*/
// ------ VirtuinoSE V Memory Table
// V1 memory -> PIN = LED_BUILTIN onboard led

#ifdef ESP8266
#include <ESP8266WiFi.h>
#else
#include <WiFi.h>
#endif


//------------------- USER SETTINGS ---------------------------------
const char* ssid = "WIFI NETWORK"; // WIFI network SSID
const char* password = "PASSWORD"; // WIFI network PASSWORD

WiFiServer wifiServer(8000); // Server port

#define VIRTUINO_KEY "1234" // Virtuino KEY, only the requests that include this key will be acceptable

//============================================================== connectToWiFiNetwork
void connectToWiFiNetwork(){
Serial.println("Connecting to "+String(ssid));

// If you don't want to config IP manually disable the next four lines
IPAddress ip(192, 168, 1, 150); // where 150 is the desired IP Address
IPAddress gateway(192, 168, 1, 1); // set gateway to match your network
IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your network
WiFi.config(ip, gateway, subnet); // If you don't want to config IP manually disable this line

WiFi.mode(WIFI_STA); // Configure the module as station only.
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
}

//============================================================== setup
//==============================================================
void setup() {
Serial.begin(9600);
while (!Serial) {;}

connectToWiFiNetwork(); //enable this line to connect the module your wifi network

wifiServer.begin();

pinMode(LED_BUILTIN, OUTPUT);
}

//============================================================== по команде получено
//==============================================================
/ * Эта функция вызывается каждый раз, когда приложение Virtuino отправляет запрос на сервер
 * «VariableIndex» - это V-память приложения Virtuino
 * 'ValueAsText' - это значение, отправленное из приложения.
 * Если 'valueAsText' равен?, Вы должны вернуть значение, которое вы хотите отобразить на панели Virtuino.
 * /

String onCommandReceived(int variableIndex, String valueAsText){
Serial.println("=== onCommandReceived variableIndex="+String(variableIndex)+" valueAsText="+valueAsText);

// --- код для включения или выключения встроенного светодиода
if (variableIndex==1){ // Virtuino V1 memory -> бортовой свет
if (valueAsText=="?") return String(digitalRead(LED_BUILTIN)); // вернуть состояние LED_BUILTIN как текст
int v=valueAsText.toInt();
if (v==1) digitalWrite(LED_BUILTIN,HIGH); // change the state of pin LED_BUILTIN
else if (v==0) digitalWrite(LED_BUILTIN,LOW);
}


return "";ф
}


//============================================================== loop
//==============================================================
void loop() {

virtuinoRun();

}














//================== Virtuino Library (included) ===============
//==============================================================
//==============================================================
/* Для связи с Virtuino необходимы только следующие две функции * Избегайте внесения изменений в приведенный ниже код
*/


#define WRONG_KEY_MESSAGE "Wrong Key"
#define WELLCOME_MESSAGE "Hello Virtuino"
boolean debug=true;
//============================================================== virtuinoRun
//==============================================================

void virtuinoRun(){
WiFiClient client = wifiServer.available(); // Check if a client has connected
if (client) {
if (debug) Serial.println("New client");
while(!client.available())delay(1); // Wait until the client sends some data
String req = client.readStringUntil('\r'); // Read the first line of the request
if (debug) Serial.println(req);
//-- check request
int pos = req.indexOf("GET /");
if (pos!=-1){ // We have a GET message
req.remove(0,pos+5); // Clear the characters GET /
int k= req.indexOf(" HTTP/");
if (k>0) req.remove(k); // Clear the tail of the line

//---the variable req contains the Virtuino command string.
String commandResponse = prepareResponse(&req); //Prepare the text that the server has to return to app

String responseHttp= "HTTP/1.1 200 OK\r\n Content-Type: text/html\r\nConnection: close\r\n\r\n";
responseHttp+=commandResponse; // add the commandResponse to request response
responseHttp+="\r\n\r\n";
if (debug) Serial.println("ResponseHttp="+responseHttp);
client.print(responseHttp);
client.print("status:0");
delay(1);
if (debug) Serial.println("Client disonnected");
client.flush();
}
else {
Serial.println("invalid request");
client.stop();
}
}
}

//============================================================== prepareResponse
//==============================================================
String prepareResponse(String* commands){

//---check the KEY
#ifdef VIRTUINO_KEY
String virtuinoKey="";
int keyPosStart = commands->indexOf("&KEY=");
if (keyPosStart!=-1) {
int keyPosEnd = commands->indexOf('&',keyPosStart+5);
if (keyPosEnd!=-1) virtuinoKey= commands->substring(keyPosStart+5,keyPosEnd);
else virtuinoKey= commands->substring(keyPosStart);
}
if (!virtuinoKey.equals(VIRTUINO_KEY)) return WRONG_KEY_MESSAGE;
#endif

//--- read all virtuino commands from request
String commandResponse="";
boolean checkNext=true;
int cStart=-1;
while (checkNext){
cStart=commands->indexOf('&',cStart+1);
if (cStart!=-1) {
int cEnd=commands->indexOf('&',cStart+1);
String oneCommand="";
if (cEnd<0) oneCommand=commands->substring(cStart+1);
else oneCommand=commands->substring(cStart+1,cEnd);
if (debug) Serial.println("cmd: "+oneCommand);
char commandType = oneCommand.charAt(0);
if (commandType=='C') return "&CNT="+String(WELLCOME_MESSAGE); // Virtuino sends the command &C=? to check the connection status
if ((commandType=='V') || (commandType=='T')) {
int equalCharPosition = oneCommand.indexOf('=');
int variableIndex = oneCommand.substring(1,equalCharPosition).toInt();
String valueString = oneCommand.substring(equalCharPosition+1);
String returnedValue = onCommandReceived(variableIndex,valueString);
if (returnedValue.length()>0) {
commandResponse+='&';
commandResponse+=commandType;
commandResponse+=String(variableIndex);
commandResponse+='=';
commandResponse+=returnedValue;
}
}
}
else checkNext=false; // the last command has checked
}
if (debug) Serial.println("Response="+commandResponse );
if (commandResponse.length()==0) commandResponse="OK";
return commandResponse;
}

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

Virtuino HMI на Андроид

#237

Сообщение fsergei70 » 06.03.2019{, 08:18}

Rovki писал(а):
06.03.2019{, 07:41}
вертуино мне понравился

Простая viruino работает нормально а вот с modbus версией нестыковочки выходят типы данных в flprog не соответствуют тем что в программе. Отправляешь с flprog long integer а в программу оно приходит как Integer 32.
Почему я выбрал virtuino? да это пожалуй единственное приложение которое может работать локально без интернета. Есть конечно еще blynk с его локальным сервером ну и ваша программа конечно. Но без обид, пока вы будете продавать ключи на каждое устройство я ей пользоваться не буду, потому что у меня три устройства телефон планшет и эмулятор, и платить три раза за одну и туже программу я чего то не хочу. Да и что из себя представляет сейчас ваша прога я если честно не знаю, быть может она мне не понравится а может наоборот. Конечно я пробовал пару лет назад древнюю демо версию, но с тех пор много воды утекло.

Отправлено спустя 37 минут 35 секунд:
Andropa писал(а):
06.03.2019{, 08:16}
Помогите пожалуйста собрать блок для инициализации virtuino se

Сделал пробный блок из пример, все вроде компилируется. Это просто весь исходный код в блоке. для своих нужд надо копать функцию String onCommandReceived(int variableIndex, String valueAsText) . Примеры в основном отличаются содержимым именно этой функции
Вложения
virtuinoSE_ESP_example3_turn_on_off_LED_BUILTIN.zip
Исходный пример
(2.87 КБ) 100 скачиваний
Virtuino SE.flp
Блок из примера
(31.37 КБ) 104 скачивания
Последний раз редактировалось fsergei70 06.03.2019{, 13:09}, всего редактировалось 2 раза.

Andropa
Рядовой
Сообщения: 54
Зарегистрирован: 13.12.2018{, 14:22}
Репутация: 0
Имя: Andron

Virtuino HMI на Андроид

#238

Сообщение Andropa » 06.03.2019{, 09:19}

Ооо щас опробую да посмотрю что там куда вставлять

Аватара пользователя
KaScada
Лейтенант
Сообщения: 388
Зарегистрирован: 23.04.2016{, 12:33}
Репутация: 13
Контактная информация:

Virtuino HMI на Андроид

#239

Сообщение KaScada » 06.03.2019{, 10:11}

fsergei70 писал(а):
06.03.2019{, 05:17}
Перетащили бы вы в свою каскаду десяток другой этих компонентов. Выглядела бы она гораздо красивей.
Они там как то закодированы, просто вытащить изображение не получится.
ПО КаСкада на базе смартфона/планшета с ОС Андроид

Подробнее здесь: http://www.hmi-kascada.ru/

Аватара пользователя
brig62
Лейтенант
Сообщения: 469
Зарегистрирован: 13.05.2016{, 16:37}
Репутация: 13
Откуда: Казань
Имя: Игорь

Virtuino HMI на Андроид

#240

Сообщение brig62 » 06.03.2019{, 11:31}

KaScada писал(а):
06.03.2019{, 10:11}
просто вытащить изображение не получится.
5 мин вместе с установкой Виртуино на Нокс
СпойлерПоказать
2019-03-06_11-15-20.png
2019-03-06_11-14-59.png
Дальше по совету Ровки открываете в фотошопе и делаете черный фон бесцветным.
Но это кривой путь. Лучше найдите студента владеющего фотошопом. И за стоимость 5 лицензий он вам кнопочек и индикаторов нарисует огромное количество. Но только надо не просто кучу рисовать , а продумать несколько тем. И что бы в каждой были все элементы. Их у вас не так уж и много. Например темная тема, стальная, неоновая и тп.

Отправлено спустя 11 минут 2 секунды:
Как пример https://www.colourbox.com/vector/volume ... or-9477527 Есть российские сайты по продаже графики.

Отправлено спустя 5 минут 29 секунд:
Вот один из авторов, москвич https://www.colourbox.com/supplier/petr-105802?page=4 Он вам этих кнопуличек наваяет за пол дня девать некуда будет.

Отправлено спустя 5 минут 58 секунд:
Заходите на сайт фрилансеров. Размещаете описание заказа. Получаете пару сотен откликов. И выбираете с кем работать за смешные деньги
https://www.fl.ru/freelancers/

Отправлено спустя 26 минут 33 секунды:
Можете сделать в программе встроенные покупки графики. И отдать эти деньги дизайнеру. По 100р к примеру за тему. Кому надо, тот купит. И именно то, что ему нравится.

Ответить

Вернуться в «Коммуникация и связь»