Страница 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. В наших компонентах это уже реализовано, если есть желание, то, конечно, можно самому все это повторить. Никто не запрещает самим писать код, но если кто-то уже решил эту проблему, зачем писать все с нуля?