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

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

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

Сообщение feodor53 »

Phazz писал(а): 10 окт 2021, 16:55 что-то забуксовал я с приемом данных с json (
да все у вас прекрасно:
[spoiler]
последний1.png
[/spoiler]

Итак, добавляем на экран кнопку (переименовываем если надо - у меня переименована в "получить json"),
а также добавляем 4 элемента "Надпись". Почему 4 ? Просто у нас же в проекте flprog 4 json-тега: bool - str - float - int:
[spoiler]
0.png
[/spoiler]
создаем глобальную переменную где будем хранить полученный ответ от сервера
[spoiler]
1.png
[/spoiler]
настраиваем реакцию при нажатии кнопки: присваиваем url и отправляем запрос по этому url
[spoiler]
2.png
[/spoiler]
теперь когда получен текст, то присваиваем нашей созданной переменной значение из содержания ответа, обработав (декодировав текст) его при этом с помощью инструмента ".JsonTextDecodeWithDictionaries"
[spoiler]
3.png
[/spoiler]
теперь присваиваем каждой надписи на телефоне (у нас их 4) значения согласно json-тегам (bool - str - float - int)
[spoiler]
4.png
[/spoiler]
общий вид нашего приложения
[spoiler]
5-общий план.png
[/spoiler]
В результате имеем на экране телефона:
[spoiler]
последний2.png
[/spoiler]

проект для AI
[spoiler]
testing_json_server.7z
[/spoiler]
само приложение
[spoiler]
testing_json_server.7z
[/spoiler]
ну и курим справку по json:
http://ai2.appinventor.mit.edu/referenc ... -apis.html
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось feodor53 10 окт 2021, 22:35, всего редактировалось 2 раза.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

мне понравились ваши json-блоки.
лучше чем мой xml вариант.
утащил их к себе в библиотеку :D
Аватара пользователя
Phazz
Полковник
Сообщения: 3169
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 240 раз
Поблагодарили: 128 раз

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

Сообщение Phazz »

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

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

Сообщение feodor53 »

Phazz писал(а): 11 окт 2021, 09:00 пытаюсь сделать в обратную сторону принимать на есп
а как принимать на есп?
это ж надо на ней веб-сервер поднимать получается?
Аватара пользователя
Phazz
Полковник
Сообщения: 3169
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 240 раз
Поблагодарили: 128 раз

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

Сообщение Phazz »

[ref]feodor53[/ref], а разве он на есп не поднят?

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

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

Сообщение feodor53 »

Phazz писал(а): 11 окт 2021, 21:49 а разве он на есп не поднят?
поднят.
но нам же надо передать полученное в deserializeJson(doc, client);

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

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

Сообщение Phazz »

Я пытался получить через client.read

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

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

Сообщение feodor53 »

[ref=#808080]Phazz[/ref],
а если так?
[spoiler]
1111.png
[/spoiler]
проект
[spoiler]
testing_json_server.7z
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

Phazz писал(а): 11 окт 2021, 21:56 Я пытался получить через client.read
а как это в коде выглядит?)
Аватара пользователя
Phazz
Полковник
Сообщения: 3169
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 240 раз
Поблагодарили: 128 раз

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

Сообщение Phazz »

Как чтение с уарт. Завтра покажу

Отправлено спустя 11 часов 25 минут 42 секунды:
[ref]feodor53[/ref], соврал немного. Вот как это в коде выглядит.

Код: Выделить всё

if (client) 
    {
      client.setTimeout (10);
        String req = client.readStringUntil('%');
        Serial.println(req);
        client.flush();
        DeserializationError error = deserializeJson(doc1, req);
        // Test if parsing succeeds.
          if (error) 
        {
            Serial.print(F("deserializeJson() failed: "));
            Serial.println(error.f_str());
        }
        Serial.print(F("Sending: "));
        serializeJson(doc, Serial);
        Serial.println();
        client.println(F("HTTP/1.0 200 OK"));
        client.println(F("Content-Type: application/json"));
        client.println(F("Connection: close"));
        client.print(F("Content-Length: "));
        client.println(measureJsonPretty(doc));
        client.println();
        // Write JSON document
          serializeJsonPretty(doc, client);
        // Disconnect
          client.stop();
    }
Отправлено спустя 16 минут 10 секунд:
feodor53 писал(а): 11 окт 2021, 22:00 [ref=#808080]Phazz[/ref],
а если так?
[spoiler]
1111.png
[/spoiler]
проект
[spoiler]
testing_json_server.7z
[/spoiler]
Как всегда отлично :like:

Отправлено спустя 1 минуту 14 секунд:
Теперь нужно из приходящей строки вытащить данные и проект готов )
Аватара пользователя
Phazz
Полковник
Сообщения: 3169
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 240 раз
Поблагодарили: 128 раз

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

Сообщение Phazz »

Вот пример строки

Код: Выделить всё

POST / HTTP/1.1
Content-Type: application/json
Content-Length: 58
User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.2; SM-N971N Build/N2G48C)
Host: 192.168.4.1:8089
Connection: Keep-Alive
Accept-Encoding: gzip

{"bool":"0","str":"test123","float":"9.990000","int":2223}
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

Phazz писал(а): 11 окт 2021, 21:56 Как всегда отлично
получилось таки принять на есп?
я вчера не осилил)
Phazz писал(а): 12 окт 2021, 10:09 deserializeJson(doc, client);
как я понимаю, нужно эту строку подставить в doc.
но это не точно)))))
Аватара пользователя
Phazz
Полковник
Сообщения: 3169
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 240 раз
Поблагодарили: 128 раз

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

Сообщение Phazz »

feodor53 писал(а): 12 окт 2021, 10:19 как я понимаю, нужно эту строку подставить в doc.
но это не точно)))))
Я вставляю, пишет ошибку. Видимо нужно очистить от лишних данных

Отправлено спустя 47 секунд:
deserializeJson() failed: InvalidInput

Отправлено спустя 1 минуту 46 секунд:
А можно как-то отправлять чистый JSON?
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

Phazz писал(а): 12 окт 2021, 10:24 нужно очистить от лишних данных
имеете ввиду что нужно сначала убрать заголовки, юзер агента и т.п.?
я отчего то считал что библиотека Arduini.json.h сама это все делает...
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

feodor53 писал(а): 12 окт 2021, 10:28 А можно как-то отправлять чистый JSON?
но ведь в выше в моем блоке "прием ИЗ телефона" выдает чистый стринг. (без заголовка и прочего).
Получается что можно.
Что там, что здесь приходит http-post от телефона.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

в крайнем случае "вручную" парсить средствами флпрог. или блок отдельный под это дело собрать.

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

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

Сообщение Phazz »

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

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

Сообщение feodor53 »

здесь то мы ничего не парсим:
download/file.php?id=33387&mode=view
сразу данные без служебной инфы приходят.
и инструмент тот же самый используем http-post.

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

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

Сообщение feodor53 »

DeserializationError::Ok - это если Десериализация прошла успешно.

у нас же:
DeserializationError::InvalidInput
Ввод не распознается. Возможные причины:

1 ввод просто недействителен
2 ввод содержит комментарий, но поддержка отключена
3 ввод действителен, но ему предшествует что-то еще (см. ниже)
4 вы deserializeJson()дважды звонили в режиме нулевой копии
5 Если эта ошибка возникает в ответе HTTP, убедитесь, что ваша программа:

пропускает заголовки HTTP
использует HTTP версии 1.0 или обрабатывает фрагментированное кодирование передачи
Последний раз редактировалось feodor53 12 окт 2021, 17:40, всего редактировалось 1 раз.
feodor53
Рядовой
Сообщения: 85
Зарегистрирован: 28 сен 2021, 13:45
Имя: федор

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

Сообщение feodor53 »

feodor53 писал(а): 12 окт 2021, 17:31 String req = client.readStringUntil('%');
Serial.println(req);
но здесь то в (reg) мы получаем строку без заголовков http.

и подаем эту строку (reg) на deserializationJson(doc1,reg);

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

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

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

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