Страница 1 из 1

Добавлено: 05 апр 2005, 23:23
Антон Швецов
Как правильно реализовать сабж?
Мой подход не работает.... :(
//-------------------------------------------------------------
TdepUserItem * ui;
Variant vl;

OPCConfig->Aliases["WD"]->Connect();

ui = new TdepUserItem(OPCConfig->Aliases["WD"]);
ui->OPCName = "0:D:1";

if(ui->Connected)
{
vl = ui->Value;
}
//-------------------------------------------------------------

т.е. ui->Value -- не возвращает значения!

Добавлено: 06 апр 2005, 15:17
Тех. поддержка
Если создать пользовательскую привязку, то у нее есть событие OnChange и OnConnected используйте их.

Добавлено: 07 апр 2005, 09:13
Kirill
Антон Швецов писал(а):Как правильно реализовать сабж?
Мой подход не работает.... :(
//-------------------------------------------------------------
TdepUserItem * ui;
Variant vl;

OPCConfig->Aliases["WD"]->Connect();

ui = new TdepUserItem(OPCConfig->Aliases["WD"]);
ui->OPCName = "0:D:1";

if(ui->Connected)
{
vl = ui->Value;
}
//-------------------------------------------------------------

т.е. ui->Value -- не возвращает значения!

у меня тоже такое было (был уверен что после имзенения OPCName его Value должно обновиться сразу же), после момента коннекта Item'a до получения его Value проходит какое-то время...

Добавлено: 07 апр 2005, 10:26
Тех. поддержка
И поэтому удобнее всего пользоваться именно пользовательскими привязками.

Добавлено: 08 апр 2005, 11:55
Kirill
Евгений Рублев писал(а):И поэтому удобнее всего пользоваться именно пользовательскими привязками.

почему поэтому? потому что время требуется для получения Value? :?:

Добавлено: 08 апр 2005, 12:11
Тех. поддержка
Потому что работа асинхронная, и ответ от сервера придет через неизвестное время. Необходимо ловить событие OnChange. В наших компонентах это уже реализовано, если есть желание, то, конечно, можно самому все это повторить. Никто не запрещает самим писать код, но если кто-то уже решил эту проблему, зачем писать все с нуля?