0
Чтение из переменного канала, как?
Задал числовые каналы, пытаюсь сделать просмотр канала выбранного на мнемосхеме.
Var
sushilo: string; trend: Byte;
Begin
sushilo:=ReadValue('выбор'); //считываю заданный номер из виртуального канала
trend:=ReadValue('sushilo'); //пытаюсь считать значение из реального канала
WriteValue('тренд',trend); //запись в виртуальный канал
end.
Не работает, что я делаю не так? sushilo: string; trend: Byte; при таких переменных панель в сеточку(нет данных),sushilo, trend: Byte; при таких данных всегда 0.
Var
sushilo: string; trend: Byte;
Begin
sushilo:=ReadValue('выбор'); //считываю заданный номер из виртуального канала
trend:=ReadValue('sushilo'); //пытаюсь считать значение из реального канала
WriteValue('тренд',trend); //запись в виртуальный канал
end.
Не работает, что я делаю не так? sushilo: string; trend: Byte; при таких переменных панель в сеточку(нет данных),sushilo, trend: Byte; при таких данных всегда 0.
Сервис поддержки клиентов работает на платформе UserEcho
Задал числовые каналы, пытаюсь сделать просмотр канала выбранного на мнемосхеме. var sushilo: string; trend: Byte; begin sushilo := ReadValue('выбор'); //считываю заданный номер из виртуального канала trend := ReadValue('sushilo'); //пытаюсь считать значение из реального канала WriteValue('тренд', trend); //запись в виртуальный канал end.
Если я правильно понял переменная "sushilo" должна содержать имя канала из которого Вы читаете значение "trend := ReadValue('sushilo')" Правильно я понял?
trend := ReadValue(sushilo)
т.е. sushilo без кавычек надо указать, раз это переменная.Отображать на объекте мнемосхемы? Если да, то попробуйте после изменений в канале, перепривязать канал к объекту.
WriteVirtualChannel('',,,) Если можно примеры по этой функции.
WriteVirtualChannel(const AName: String; AValue: Variant; ATimeStamp: TDateTime; AQuality: Word)
позволяет установить у виртуального канала не только значение переменной, но и временную метку и качество переменной. Физическому каналу мы можем изменить только значение переменной.
http://www.delphibasics.ru/TDateTime.php
http://www.delphisources.ru/pages/faq/faq_delphi_basics/DecodeDateTime.php.html
http://www.delphisources.ru/pages/faq/faq_delphi_basics/EncodeDateTime.php.html
Ставлю на мнемосхему "Строковый задатчик" если ввожу буквы всё работает, ввожу цифры на выходе 0.
Уточните задачу. Какого типа канал в который пишите - физический/виртуальный. Тип канала.
В канале "Выбор" скрипт:
Var
sushilo: string; trend: Double;
Begin
sushilo:=ReadValue('Выбор');
WriteValue('test',sushilo);
trend:=ReadValue(sushilo);
WriteValue('Тренд',trend);
end.
На мнемосхеме: Управление"Строковый задатчик" привязан к каналу "Выбор", четыре Управление"Слайдер" привязаны к "vvv", "nnn", "52", "55", два Индикатор"Текст" к "Тренд", "test".
Запускаю "Монитор" при записи в "Строковый задатчик" vvv или nnn данные передаются в "Тренд", если набрать 52 или 55 то "Тренд"=0. Канал "test" отображает все нормально.
var sushilo: string; trend: Double; begin sushilo := ReadValue('Выбор'); // в канал "test" значение переменной выводиться потому что для канала это строка. WriteValue('test', sushilo); // здесь система пробует найти канал с именем указанным в переменной "sushilo" // и в случае с именем состоящим из одних цифр, у неё это не получается. // почему это происходит мы будем разбираться. А решение Вашей задачи - дать каналам более // информативные имена. trend := ReadValue(sushilo); WriteValue('Тренд', trend); end.