Получение строки неизвестной длины

Стартовая страница Форумы Разработка и интеграция Получение строки неизвестной длины

Просмотр 9 сообщений - с 31 по 39 (из 39 всего)
  • Автор
    Записи
  • #29080
    Mikhail
    Модератор

    Предупреждения точно будут полезны. Запишу в список пожеланий.

    #29083
    manjey73
    Участник

    Вот пример того, что со строками надо работать по разному. В одном случае мне нужен массив для отображения длинной строки. В другом случае это просто значение параметра, которое в принципе укладывается в 1 байт при том, что канал у нас double и мы имеем целых 8 байт.

    Логика, протокол M4

    2.1 Настроечные параметры
    Перечень настроечных параметров тепловычислителя приведен в таблицах 2, 3.
    При записи и чтении параметров этого типа используется единый формат передачи значений
    параметров – ASCIIString.

    А вот строка в текущих параметрах, это уже длинная на 5 элементов массива.

    Возникает вопрос, если для обработки второго варианта я создаю массив, указываю тип строки ASCII то все хорошо.
    Как в этом случае поступать с настроечными переменными, для Scada это просто цифры и надо подавать для изменения именно цифровые значения, преобразуя их драйвером в ascii и записывая в прибор. Если я их преобразую как с простым вариантом с строку, то потом в Scada придется писать формулы и крутить и туда и сюда…
    В общем было бы проще в драйвере это сделать без дополнительных формул в Sсada но сам прибор предлагает строки в двух вариантах логики… где-то это текст, а где-то это значения представленные в строковом виде.

    #29088
    Mikhail
    Модератор

    Разработчики прибора — оригиналы. Впрочем, не привыкать.
    Вариант 1 — указать тип (строка или число) в параметрах устройства в Коммуникаторе.
    Вариант 2 — завести раздельные теги для строк и чисел.

    При инициализации данных устройства выделяется массив нужной длины. Инициализация происходит при старте линии связи. Размер памяти, требуемый для строи или числа, различается. Поэтому нужно заранее знать, какие типы у тегов.

    #33780
    asutp42
    Участник

    Приветствую. Начал создавать проект на Rapid Scada и столкнулся с подобной ситуацией данные из SQL идут в драйвер BDImportPlus, далее тег в формате Unicode string вывожу в таблицу, но отображается первые 4 символа т.е 8 байт, и потом при обновлении данных в драйвере значение в таблицу не поступают (становятся серым). Отображать нужно кириллицу (ФИО). Как я понял в данном случае нормально будет работать, если формат данных Double, т.е нужно править драйвер или есть какие то другие инструменты??

    #33784
    manjey73
    Участник

    Вам надо создать массив — указать Длину данных. Длину можно заведомо больше поставить для проверки. Каждая единица длины это 8 байт, 4 символа Unicode
    Выбрать в типе данных Строка Unicode и в Формате указать string

    Потом правда надо будет использовать формулы, если вы захотите не только отображать, но и изменять

    #33795
    Mikhail
    Модератор

    Желательно найти тему по драйверу DbImportPlus и уточнить, поддерживает ли драйвер длинные строки.

    #33806
    asutp42
    Участник

    Судя потому что в логах не более 4х символов, действительно надо в драйвере копаться.

    #33807
    asutp42
    Участник

    Проблема разрыва связи с коммуникатором при выборе в Unicode string, тоже решается драйвером ?

    #33849
    Mikhail
    Модератор

    Причину, по которой каналы могли не привязаться к тегам «устройства», написал в той теме.

Просмотр 9 сообщений - с 31 по 39 (из 39 всего)
  • Для ответа в этой теме необходимо авторизоваться.