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

Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

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

Сообщение Phazz »

В общем в коде я победил это. А вот как упаковать теперь это в блок. Не хватает в редакторе вставки в конкретное место кода, чтобы блоки могли использовать одну функцию
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Phazz писал(а): 12 окт 2021, 18:04 Не хватает в редакторе вставки в конкретное место кода, чтобы блоки могли использовать одну функцию
viewtopic.php?t=7589#p106683
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

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

Сообщение Phazz »

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

Отправлено спустя 57 минут 8 секунд:
Ну вроде получилось ))
Последний раз редактировалось Phazz 13 окт 2021, 19:06, всего редактировалось 1 раз.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

[ref=#808080]Phazz[/ref],
ругается в:
[spoiler]
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"))] = ;
}
[/spoiler]



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

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

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


а я с новым редактором не дружу еще)))
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

feodor53 писал(а): 13 окт 2021, 18:12 и на то что не задекларировано:
StaticJsonDocument<512> doc;
StaticJsonDocument<512> doc1;
в блоке в редакторе добавляем в секцию loop:
[spoiler]
StaticJsonDocument<<Size in>> doc;
StaticJsonDocument<<Size out>> doc1;
[/spoiler]
Последний раз редактировалось feodor53 13 окт 2021, 18:54, всего редактировалось 1 раз.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

feodor53 писал(а): 13 окт 2021, 18:12 вот на эту строку doc[(String("bool"))] = ;
тоже в редакторе блоков найти и сделать так (в разделе "код каждого экземпляра"):
[spoiler]
if (client)
{
doc[<Key>] = <Data_bool>;
}
[/spoiler]

Отправлено спустя 1 минуту 46 секунд:
вот только нет обмена с новыми блоками :smile427:
Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

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

Сообщение Phazz »

Прошу прощения, не ту версию скинул
У вас нет необходимых прав для просмотра вложений в этом сообщении.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

Phazz писал(а): 13 окт 2021, 18:59 Прошу прощения, не ту версию скинул
if (client)
{
<Out_str>= doc1[(String("str"))];
}
а как исправить? не могу найти в редакторе где это находится
Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

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

Сообщение Phazz »

[ref]feodor53[/ref], а что тут ошибка?

Отправлено спустя 53 секунды:
Это находится в блоке клиент
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

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

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

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

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

Отправлено спустя 2 минуты 56 секунд:
вот может взглянете как возможгость будет?
[spoiler]
не компилится выход стринг.flp
[/spoiler]
не компилируется выход стринг.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось feodor53 13 окт 2021, 19:50, всего редактировалось 1 раз.
Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

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

Сообщение Phazz »

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

Отправлено спустя 48 минут 20 секунд:
[ref]feodor53[/ref], Исправил
У вас нет необходимых прав для просмотра вложений в этом сообщении.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

[ref=#808080]Phazz[/ref],
у вас округляет флоат если слать из телефона?

шлю 9.99 - получаю в порту 10.0
шлю 9.888888 - получаю 9.89
Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

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

Сообщение Phazz »

[ref]feodor53[/ref], округляет если больше 2 знаков после запятой
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

Phazz писал(а): 13 окт 2021, 20:49 округляет если больше 2 знаков после запятой
есть предположения где округляется?
в есп или в телефоне?
Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

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

Сообщение Phazz »

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

Отправлено спустя 10 минут 11 секунд:
[ref]feodor53[/ref], да, так и есть ) подключил через конвертацию флоат в стринг с ограничением в 6 знаков и ничего не округляет если меньше.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

[ref=#808080]Phazz[/ref],
что то с bool не так.
вот это получается при компиляции:
[spoiler]
if (client)
doc[(String("bool"))] = ;
[/spoiler]

вроде как в блоке отправки вместо
doc[<Key>] = <Data_bool>;
ошибочно указано doc[<Key>] = <Data_int>;

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

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

у вас ИЗ телефона как дела с bool обстоят?
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

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

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

а как сделать чтоб не сбрасывались переменные на выходе из блока?
может какой выход из блока нужен, по которому можно будет мониторить приход новых данных и по этому выходу записывать в переменные в есп?
Аватара пользователя
Phazz
Полковник
Сообщения: 3131
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 235 раз
Поблагодарили: 114 раз

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

Сообщение Phazz »

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

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


Отправлено спустя 1 час 50 минут 49 секунд:
feodor53 писал(а): 14 окт 2021, 01:40 а как сделать чтоб не сбрасывались переменные на выходе из блока?
Исправил
JSON_server_test_8.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

[ref=#808080]Phazz[/ref], :smile9: :smile9: :smile9: отличные блоки!


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

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


Можно и более элегантно это сделать: с помощью процедур (функций). Это позволит избежать нагромождение "кода":
создаем две функции: получить и отправить. В них делаем действия, которые, мы выше делали при нажатии соответствующих кнопок:
[spoiler]
с функциями ч.1.jpg
[/spoiler]
и теперь весь "код" при нажатии кнопки "Получить-Отправить Одной кнопкой" будет выглядеть так:
[spoiler]
с функциями ч.2.jpg
[/spoiler]
Эти созданные функции-процедуры мы можем использовать неограниченное количество раз, но в пределах одного Экрана (в MIT).
файлы проекта и приложение
[spoiler]
файл проекта и приложение.7z
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось feodor53 14 окт 2021, 19:49, всего редактировалось 1 раз.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

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

Но зачем нам нажимать кнопки, если хочется получать данные автоматически?
Берем элемент "часы" и вытаскиваем на Экран.
Устанавливаем период срабатывания таймера.
Например раз в 100 мсек:
[spoiler]
добавляем таймер.png
[/spoiler]
Настраиваем действия при срабатывании таймера.
Теперь при срабатывании таймера мы получим данные из есп (не нажимая кнопку "Получить json"):
[spoiler]
Безымянный.png
[/spoiler]
так же можно и с отправкой в есп делать по таймеру.
проект и приложение с таймером:
[spoiler]
файлы.7z
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось feodor53 14 окт 2021, 19:50, всего редактировалось 1 раз.
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя