Просмотр полной версии : Парсинг JSON средствами ST в Codesys 3.5
Pavel_Makarov
16.01.2019, 00:54
Всем привет!
Подскажите пожалуйста, может есть у кого библиотека или код для парсинга JSON формата в Codesys 3.5?
Знаю, что на официальном сайте codesys продается за 50 евро... но весь семейный бюджет уходит на ремонт и такие траты супруга не позволит :)
Пытаюсь организовать обмен с web сервером с помощью библиотеки CAA_net_base (по-моему так называется), пример которой приводится на сайте owen.ru, но надо как-то данные структурировать
Евгений Кислов
16.01.2019, 06:40
На форуме 3S один из пользователей выкладывал свою разработку:
https://forge.codesys.com/lib/pro-json/home/Home/
(для скачивания - справа кнопка Download package)
Pavel_Makarov
17.01.2019, 00:45
Евгений, огромное спасибо!!!
Так она вроде даже не устанавливается..... Есть ли еще варианты?
Евгений Кислов
19.09.2019, 16:39
А как вы ее пытаетесь установить?
Там по ссылке package - так что надо Инструменты - Менеджер пакетов.
Всем привет! Есть пример работы с библиотекой IIOT LIBRARIES SL 1.1.0.0? А именно с Json. Я ее скачал с официального сайта. Нужна ли лицензия? В кодесис установилась ни чего вроде не просит. А библиотека которая по ссылке просит лицензию.
Всем привет! Есть пример работы с библиотекой IIOT LIBRARIES SL 1.1.0.0? А именно с Json. Я ее скачал с официального сайта. Нужна ли лицензия? В кодесис установилась ни чего вроде не просит. А библиотека которая по ссылке просит лицензию.
https://owen.ru/forum/showthread.php?t=33976&p=343228&viewfull=1#post343228 11 пункт, парсинг json идет с прошивкой
а можно описать как создать http get запрос и разобрать ответ
аналогично с post.
а то ничего не понятно
Евгений Кислов
05.12.2022, 06:20
а можно описать как создать http get запрос и разобрать ответ
аналогично с post.
а то ничего не понятно
Уточните, какой именно контроллер вы планируете использовать и какая перед вами стоит задача.
plk 210 03
задача с моего сайта в сети интернет получить данные по запросу.
нужно отправить запрос http get и разобрать ответ
отправить запрос пост. делать это раз в 10 секунд.
Евгений Кислов
05.12.2022, 12:17
plk 210 03
задача с моего сайта в сети интернет получить данные по запросу.
нужно отправить запрос http get и разобрать ответ
отправить запрос пост. делать это раз в 10 секунд.
Посмотрите видео - пример из него близок к вашему вопросу:
https://youtu.be/xFvN0BryJFk
В интернете есть много примеров, как с помощью curl отправить HTTP-запрос.
спасибо за направление :)
с запросом справился, даже данные получил, но быстродействие работы curl через SysExec трудно назвать разумным.
при выполнении основной задачи простейший запрос выполняется около 30 секунд. это долго.
скачал и освоился с HTTP Client, работает быстро но не работает по https или я не понял что надо сделать.
IIoT пока не могу разобраться как сделать POST запрос с разбором ответа.
вдруг есть такие же видео по упомянутым библиотекам и Вы о них знаете?
Евгений Кислов
08.12.2022, 06:22
скачал и освоился с HTTP Client, работает быстро но не работает по https или я не понял что надо сделать.
Эта библиотека не поддерживает HTTPS.
IIoT пока не могу разобраться как сделать POST запрос с разбором ответа.
Эта библиотека не будет работать на наших контроллерах, так как она требует приобретение и активацию лицензии.
Наши контроллеры не поддерживают активацию лицензий.
при выполнении основной задачи простейший запрос выполняется около 30 секунд. это долго.
Команда, вызываемая через CmpSysExec, выполняется не в потоке реального времени, чтобы не блокировать приложение CODESYS, но 30 секунд звучит не очень реалистично.
Например, здесь видно, что выполнение POST запроса занимает около 3 секунд:
https://youtu.be/T6XfuDQIOk4?t=426
Возможно, наблюдаемые вами задержки связаны с особенностями вашего проекта или сервера.
Сделайте простой проект, в котором будет только вызов блока из CmpSysExec, и посмотрите, сколько времени зайтем выполнение запроса в этом случае.
Эта библиотека не поддерживает HTTPS.
Эта библиотека не будет работать на наших контроллерах, так как она требует приобретение и активацию лицензии.
Наши контроллеры не поддерживают активацию лицензий.
Команда, вызываемая через CmpSysExec, выполняется не в потоке реального времени, чтобы не блокировать приложение CODESYS, но 30 секунд звучит не очень реалистично.
Например, здесь видно, что выполнение POST запроса занимает около 3 секунд:
https://youtu.be/T6XfuDQIOk4?t=426
Возможно, наблюдаемые вами задержки связаны с особенностями вашего проекта или сервера.
Сделайте простой проект, в котором будет только вызов блока из CmpSysExec, и посмотрите, сколько времени зайтем выполнение запроса в этом случае.
останавливаю проект, захожу в конфигруатор - система - терминал пишу запрос https://polkomoda.ru/local/api/crm/?api=skycart&type=get&user=18359 - ответ через 1-2 секунды
запускаю проект - пишу то же самое в терминале - 23-30 секунд исполнение в терминале
как сделать лучше?
30 секунд совсем долго.
iiot брал от сюда пишет что для 210 02 тестировано
https://github.com/Allexd1992/iiot_tools/tree/main/example_codesys3
https://github.com/Allexd1992/iiot_tools
уже из совершенно странных источников пытаешься что то получить лишь бы заработало - задача то весьма обычная и простая. получить данные с веб страницы а не получается...
можете что то сказать про библиотеку iiot_tools и стоит ли пытаться в ней разобраться или искать дальше как
Евгений Кислов
08.12.2022, 11:35
запускаю проект
Что это за проект? Это пустой проект, с одним вызовом блока из CmpSysExec?
Если да - обеспечьте доступ по AeroAdmin, пожалуйста - посмотрим, что у вас происходит.
можете что то сказать про библиотеку iiot_tools
На мой взгляд - это библиотека, созданная на базе открытых библиотек других людей с присвоенным авторством, и сделанная закрытой.
Ее работоспособность я прокомментировать не могу.
ВладОвен
08.11.2023, 11:14
На форуме 3S один из пользователей выкладывал свою разработку:
https://forge.codesys.com/lib/pro-json/home/Home/
(для скачивания - справа кнопка Download package)
Здравствуйте.
А подскажите по этой библиотеке.
Я сохраняю три разных переменных в строке Json. Получается строка:
{"stJson":{"var1":25,"var2":1025,"var3":-3.14}}
Потом делаю обратное преобразование из строки, но получаю переменные другого типа. См. рисунок:
71432
Что я делаю не так? И как получить нужные типы данных (такие, какие были при формировании строки)?
Евгений Кислов
08.11.2023, 11:26
Добрый день.
Ответ содержится в примерах использования библиотеки (интегрированных в библиотеку).
bVar2 := TO_BYTE(stJson.var1.Integer);
wVar2 := TO_WORD(stJson.var2.Integer);
rVar2 := TO_REAL(stJson.var3.AsString);
Не забудьте объявить переменные (bVar2 и т.д.).
ВладОвен
08.11.2023, 14:35
В общем библиотека Json более-менее работоспособная. С открытым исходным кодом. Лицензия MIT ("она находится в Интернете, поэтому люди могут делать с ней все, что захотят").
Заворачивает в JSON все виды данных.
А вот обратно не разворачивает данные bool, array и array_of_struct. Ну или я просто чего-то не понимаю.
Важно: имена структуры для fbStruct_to_json (сериализация) и структуры для fbJson_to_struct (десериализация) должны быть одинаковыми.
ВладОвен
28.11.2023, 10:18
Здравствуйте.
Вопрос на засыпку:
Чем обмен через OPCua лучше обмена через TCP сокеты? Ведь можно похожим образом отправлять/получать переменные (заворачивая их в Json).
Возможно, тем, что меньше действий в программе надо делать и меньше разбираться в мелочах и деталях?
А как насчет шифрования?
МихаилГл
28.11.2023, 10:32
Здравствуйте.
Вопрос на засыпку:
Чем обмен через OPCua лучше обмена через TCP сокеты? Ведь можно похожим образом отправлять/получать переменные (заворачивая их в Json).
Возможно, тем, что меньше действий в программе надо делать и меньше разбираться в мелочах и деталях?
А как насчет шифрования?
Потому что в ОРС UA уже реализованы всё механизмы стандарта на основе подписок. Публикуете доступные переменные и забираете подписчиками. И шифрование там есть уже. Но я им не пользовался.
А для сокетов вам придётся всё писать с нуля...
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot