Справочные материалы и примеры App Inventor

Документация, уроки, расширения

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Справочные материалы и примеры App Inventor

#81

Сообщение Phazz » 12.10.2021{, 18:04}

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

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Справочные материалы и примеры App Inventor

#82

Сообщение Sancho » 12.10.2021{, 20:12}

Phazz писал(а):
12.10.2021{, 18:04}
Не хватает в редакторе вставки в конкретное место кода, чтобы блоки могли использовать одну функцию
viewtopic.php?t=7589#p106683
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Справочные материалы и примеры App Inventor

#83

Сообщение Phazz » 12.10.2021{, 20:49}

Sancho, Это я все знаю, но чтобы блок получился универсальным нужно чтобы его код располагался в конкретной функции.

Отправлено спустя 57 минут 8 секунд:
Ну вроде получилось ))
Последний раз редактировалось Phazz 13.10.2021{, 19:06}, всего редактировалось 1 раз.

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#84

Сообщение feodor53 » 13.10.2021{, 18:03}

Phazz,
ругается в:
СпойлерПоказать
if (client)
{
doc[(String("str"))] = (((_gtv4) + ((String(_gtv2, DEC)))));
}
if (client)
{
doc[(String("float"))] = (_gtv3);
}
if (client)
{
doc[(String("int"))] = (_gtv2);
}
if (client)
{
doc[(String("bool"))] = ;
}


вот на эту строку doc[(String("bool"))] = ;
и на то что не задекларировано:
StaticJsonDocument<512> doc;
StaticJsonDocument<512> doc1;

Отправлено спустя 9 минут 9 секунд:
и здесь ругается:

if (client)
{
<Out_str>= doc1[(String("str"))];
}


а я с новым редактором не дружу еще)))

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#85

Сообщение feodor53 » 13.10.2021{, 18:49}

feodor53 писал(а):
13.10.2021{, 18:12}
и на то что не задекларировано:
StaticJsonDocument<512> doc;
StaticJsonDocument<512> doc1;
в блоке в редакторе добавляем в секцию loop:
СпойлерПоказать
StaticJsonDocument<<Size in>> doc;
StaticJsonDocument<<Size out>> doc1;
Последний раз редактировалось feodor53 13.10.2021{, 18:54}, всего редактировалось 1 раз.

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#86

Сообщение feodor53 » 13.10.2021{, 18:52}

feodor53 писал(а):
13.10.2021{, 18:12}
вот на эту строку doc[(String("bool"))] = ;
тоже в редакторе блоков найти и сделать так (в разделе "код каждого экземпляра"):
СпойлерПоказать
if (client)
{
doc[<Key>] = <Data_bool>;
}
Отправлено спустя 1 минуту 46 секунд:
вот только нет обмена с новыми блоками :smile427:

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Справочные материалы и примеры App Inventor

#87

Сообщение Phazz » 13.10.2021{, 18:59}

Прошу прощения, не ту версию скинул
Вложения
JSON_server_test_5.flp
(572.26 КБ) 33 скачивания

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#88

Сообщение feodor53 » 13.10.2021{, 19:11}

Phazz писал(а):
13.10.2021{, 18:59}
Прошу прощения, не ту версию скинул
if (client)
{
<Out_str>= doc1[(String("str"))];
}
а как исправить? не могу найти в редакторе где это находится

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Справочные материалы и примеры App Inventor

#89

Сообщение Phazz » 13.10.2021{, 19:14}

feodor53, а что тут ошибка?

Отправлено спустя 53 секунды:
Это находится в блоке клиент

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#90

Сообщение feodor53 » 13.10.2021{, 19:19}

Phazz писал(а):
13.10.2021{, 19:15}
Это находится в блоке клиент
это уже в скомпилированном коде находится.

должно быть как то так:
Out_214699097_155203944= doc1[(String("float"))];
и так у всех

кроме вот этой:
<Out_str>= doc1[(String("str"))];

Отправлено спустя 36 секунд:
feodor53 писал(а):
13.10.2021{, 19:19}
<Out_str>
не подставляется при компиляции получается

Отправлено спустя 2 минуты 56 секунд:
вот может взглянете как возможгость будет?
СпойлерПоказать
не компилится выход стринг.flp
(861.26 КБ) 23 скачивания
не компилируется выход стринг.
Последний раз редактировалось feodor53 13.10.2021{, 19:50}, всего редактировалось 1 раз.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Справочные материалы и примеры App Inventor

#91

Сообщение Phazz » 13.10.2021{, 19:27}

Точно, сейчас исправлю

Отправлено спустя 48 минут 20 секунд:
feodor53, Исправил
Вложения
JSON_server_test_6.flp
(637.92 КБ) 32 скачивания

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#92

Сообщение feodor53 » 13.10.2021{, 20:30}

Phazz,
у вас округляет флоат если слать из телефона?

шлю 9.99 - получаю в порту 10.0
шлю 9.888888 - получаю 9.89

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Справочные материалы и примеры App Inventor

#93

Сообщение Phazz » 13.10.2021{, 20:49}

feodor53, округляет если больше 2 знаков после запятой

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#94

Сообщение feodor53 » 13.10.2021{, 21:37}

Phazz писал(а):
13.10.2021{, 20:49}
округляет если больше 2 знаков после запятой
есть предположения где округляется?
в есп или в телефоне?

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Справочные материалы и примеры App Inventor

#95

Сообщение Phazz » 13.10.2021{, 21:44}

нашел, это по-моему вывод в порт округляет

Отправлено спустя 10 минут 11 секунд:
feodor53, да, так и есть ) подключил через конвертацию флоат в стринг с ограничением в 6 знаков и ничего не округляет если меньше.

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#96

Сообщение feodor53 » 13.10.2021{, 22:46}

Phazz,
что то с bool не так.
вот это получается при компиляции:
СпойлерПоказать
if (client)
doc[(String("bool"))] = ;
вроде как в блоке отправки вместо
doc[<Key>] = <Data_bool>;
ошибочно указано doc[<Key>] = <Data_int>;

исправляю - все компилируется, но ИЗ телефона не приходит bool. (все остальные приходят переменные).

может там в блоке еще где то нужно править код?

у вас ИЗ телефона как дела с bool обстоят?

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#97

Сообщение feodor53 » 14.10.2021{, 01:40}

еще такой нюанс:
-при приеме ИЗ телефона в сериале видно что пришли переменные и их значения.
-но после приема происходит их сброс в 0.

т.е. в сериале сейчас вот так:
->88.99 //пришли данные из телефона
->12345 //пришли данные из телефона
->00.00 //вот тут уже сброс в ноль
->0 //и здесь сброс в ноль

а как сделать чтоб не сбрасывались переменные на выходе из блока?
может какой выход из блока нужен, по которому можно будет мониторить приход новых данных и по этому выходу записывать в переменные в есп?

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Справочные материалы и примеры App Inventor

#98

Сообщение Phazz » 14.10.2021{, 08:34}

Запись в переменную происходит в момент подключения клиента к есп

Отправлено спустя 2 часа 16 минут 27 секунд:
иcправил boolean


Отправлено спустя 1 час 50 минут 49 секунд:
feodor53 писал(а):
14.10.2021{, 01:40}
а как сделать чтоб не сбрасывались переменные на выходе из блока?
Исправил
JSON_server_test_8.flp
(686.42 КБ) 42 скачивания

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#99

Сообщение feodor53 » 14.10.2021{, 16:21}

Phazz, :smile9: :smile9: :smile9: отличные блоки!


Прием - Передача одной кнопкой.

Как получить-отправить (наши данные по json) при нажатии одной кнопкой?
Самый простой вариант - это объединить все действия (необходимые для получения и отправки) при нажатии одной кнопки:
создаем новую кнопку "Получить-Отправить Одной кнопкой":
СпойлерПоказать
создаем кнопку.jpg
и теперь просто объединяем в ней действия из кнопок "Получить json" и "Отправить json":
СпойлерПоказать
получить-отправить-простой вариант.jpg

Можно и более элегантно это сделать: с помощью процедур (функций). Это позволит избежать нагромождение "кода":
создаем две функции: получить и отправить. В них делаем действия, которые, мы выше делали при нажатии соответствующих кнопок:
СпойлерПоказать
с функциями ч.1.jpg
и теперь весь "код" при нажатии кнопки "Получить-Отправить Одной кнопкой" будет выглядеть так:
СпойлерПоказать
с функциями ч.2.jpg
Эти созданные функции-процедуры мы можем использовать неограниченное количество раз, но в пределах одного Экрана (в MIT).
файлы проекта и приложение
СпойлерПоказать
файл проекта и приложение.7z
(2.92 МБ) 35 скачиваний
Последний раз редактировалось feodor53 14.10.2021{, 19:49}, всего редактировалось 1 раз.

feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28.09.2021{, 13:45}
Репутация: 16
Имя: федор

Справочные материалы и примеры App Inventor

#100

Сообщение feodor53 » 14.10.2021{, 16:39}

Получение данных автоматически по таймеру.

Но зачем нам нажимать кнопки, если хочется получать данные автоматически?
Берем элемент "часы" и вытаскиваем на Экран.
Устанавливаем период срабатывания таймера.
Например раз в 100 мсек:
СпойлерПоказать
добавляем таймер.png

Настраиваем действия при срабатывании таймера.
Теперь при срабатывании таймера мы получим данные из есп (не нажимая кнопку "Получить json"):
СпойлерПоказать
Безымянный.png
так же можно и с отправкой в есп делать по таймеру.
проект и приложение с таймером:
СпойлерПоказать
файлы.7z
(3.37 МБ) 36 скачиваний
Последний раз редактировалось feodor53 14.10.2021{, 19:50}, всего редактировалось 1 раз.

Ответить

Вернуться в «Визуальное программирование в App Inventor»