Страница 536 из 711 ПерваяПервая ... 36436486526534535536537538546586636 ... ПоследняяПоследняя
Показано с 5,351 по 5,360 из 7101

Тема: CODESYS V3.5. Вопросы и ответы

  1. #5351
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    228

    По умолчанию

    Поправочка -- PlcLogic/visu

    Почему-то так, в CS 3.5 SP14, во всяком случае.

  2. #5352

  3. #5353

    По умолчанию

    Добрый день.
    Пытаюсь читать значения из рецептов функцией RecipeManCommands.GetRecipeValues из библиотеки Recipe_Managment.
    Все получается ок но не получается прочитать данные если они хранятся в рецепте в виде WSTRING. Даже если в функцию передать массив WSTRING строк то все возвращаются крокозяблы
    Вопросы:
    - можно ли хранить в рецепте строки WSTRING?
    - как прочитать корректно такие строки без загрузки в переменные программы всего рецепта?
    Спасибо

  4. #5354
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от razv Посмотреть сообщение
    Добрый день.
    Пытаюсь читать значения из рецептов функцией RecipeManCommands.GetRecipeValues из библиотеки Recipe_Managment.
    Все получается ок но не получается прочитать данные если они хранятся в рецепте в виде WSTRING. Даже если в функцию передать массив WSTRING строк то все возвращаются крокозяблы
    Вопросы:
    - можно ли хранить в рецепте строки WSTRING?
    - как прочитать корректно такие строки без загрузки в переменные программы всего рецепта?

    Спасибо
    Добрый день.
    1. Можно
    2. Предлагаю начать с этого:
    https://youtu.be/A1WrZVJUWhY

    Про GetRecipeValues примерно с 30:00 начинается.

  5. #5355

    По умолчанию

    Спасибо подробно и понятно. И отдельное спасибо за оперативный ответ

  6. #5356

    По умолчанию

    Кстати наблюдение которое удалось выяснить - через метод RecipeManCommands.GetRecipeValues удается прочитать WSTRING строку из рецепта не более 65 символов длинной. Если строка длинней то программа вываливается в исключение.
    Видимо внутренние переменные метода объявлены как STRING(260).
    И для преобразования длинных строк в функции RECIPE_STRING_TO_WSTRING из примера по видео пришлось явно задать длину входной и выходной переменной иначе они ограничивались 80 символами (это максимум 20 символов для преобразования в WSTRING)

  7. #5357
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Кстати наблюдение которое удалось выяснить - через метод RecipeManCommands.GetRecipeValues удается прочитать WSTRING строку из рецепта не более 65 символов длинной. Если строка длинней то программа вываливается в исключение.
    Поисследую этого на досуге.

    Upd. - проверил в V3.5 SP17 Patch 3. В ней с помощью метода RecipeManCommands.GetRecipeValues в принципе не получается считать строку (STRING) длиннее 80 символов.

    И для преобразования длинных строк в функции RECIPE_STRING_TO_WSTRING из примера по видео пришлось явно задать длину входной и выходной переменной иначе они ограничивались 80 символами (это максимум 20 символов для преобразования в WSTRING)
    Да, вы поступили совершенно правильно.

  8. #5358
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    228

    По умолчанию

    > не получается считать строку (STRING) длиннее 80 символов

    Ну так по умолчанию в CS строка без явного указания размера интерпретируется, как 80-символьная: If a size is not defined, then 80 characters are reserved by default

  9. #5359
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от fatlortroll Посмотреть сообщение
    > не получается считать строку (STRING) длиннее 80 символов

    Ну так по умолчанию в CS строка без явного указания размера интерпретируется, как 80-символьная: If a size is not defined, then 80 characters are reserved by default
    Там строка возвращается по указателю.
    И есть поле iStringLength, которое задает пользователь (макс. длина строк в его буфере).
    В принципе - в таких случаях обычно по указателю может вернуться строка с любым количеством символов - в т.ч. и более 80.
    https://content.helpme-codesys.com/e...ipeValues.html

    Показательный пример:
    https://content.helpme-codesys.com/e.../StrFindA.html

    У функции вход типа POINTER TO STRING(255), но реально она может вычислить размер строки длиной вплоть до 32767 символов - вы можете легко в этом убедиться.

    Так что POINTER TO STRING не всегда означает, что под указатель можно подложить только STRING(80) и не более - иногда это совсем не так.

  10. #5360
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    228

    По умолчанию

    А, ясно. Это я на сигнатуру не посмотрел -- думал, что строка по значению передаётся.

Страница 536 из 711 ПерваяПервая ... 36436486526534535536537538546586636 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3197
    Последнее сообщение: 23.04.2024, 13:45
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •