Avatar

Please consider registering
guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
OnChange event in OPC Provider
August 19, 2015
14:43, EEST
Avatar
Fransua33
Member
Members
Forum Posts: 39
Member Since:
October 27, 2014
sp_UserOfflineSmall Offline

I create an OPC server with the Provider class supplied in the SDK. I add a boolean variable to make some actions in my provider. For this I try to use the OnChange event of the boolean tag.

With a client I change the value of this tag but in my provider the OnChange event never fired so the actions are never executed.

How can I detect in my provider code a change in a tag?

August 20, 2015
8:51, EEST
Avatar
Jouni Aro
Moderator
Moderators
Forum Posts: 914
Member Since:
December 21, 2011
sp_UserOfflineSmall Offline

The Variable.OnChange should be fired whenever the value changes.

August 20, 2015
10:07, EEST
Avatar
Fransua33
Member
Members
Forum Posts: 39
Member Since:
October 27, 2014
sp_UserOfflineSmall Offline

OK, you are rigth. Sorry.

My problem now is when I change the value, in the client I always have the same value for the tag. You can see the event code :

void __fastcall TFMain::UpdateConfiguration(TPsVar *Sender, TPsVarPropTypes props) {
if (this->updateProvider->Value) {
this->updateProvider->Value = false;
}
}

The updateProvider variable is a TPsBool which I change the value to true in the client. I always see True except if I disconnect/Connect from the client. After the reconnection I can see the false value.

Why I can’t see the false value assigned in the event function if I don’t disconnect?

August 24, 2015
15:08, EEST
Avatar
Jouni Aro
Moderator
Moderators
Forum Posts: 914
Member Since:
December 21, 2011
sp_UserOfflineSmall Offline

You cannot change the value while the value change is being handled. In practice the later change is not notified forward, since that might create an infinite loop in worst case.

You must make the change with a delay – or try to use OnChanging: you can change the value that would rewritten, before it is actually written to the variable – and that change can be notified forward.

Forum Timezone: Europe/Helsinki

Most Users Ever Online: 267

Currently Online:
5 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

hbrackel: 111

pramanj: 86

ibrahim: 74

kapsl: 57

gjevremovic: 49

Xavier: 42

TimK: 41

fred: 41

Fransua33: 39

rocket science: 36

Member Stats:

Guest Posters: 0

Members: 1590

Moderators: 17

Admins: 1

Forum Stats:

Groups: 3

Forums: 15

Topics: 1192

Posts: 5057

Newest Members:

warnerfleming, Raymond23Freex, Charles1UsadY, Robertvem, albertinaduff53, wilbertrignall, Rogerbeedo, letamunn4183992, Lizazooda, Hectorner

Moderators: Jouni Aro: 914, Otso Palonen: 32, Tuomas Hiltunen: 5, janimakela: 0, Pyry: 1, Terho: 0, Petri: 0, Bjarne Boström: 695, Heikki Tahvanainen: 402, Jukka Asikainen: 1, moldzh08: 0, Jimmy Ni: 24, Teppo Uimonen: 21, Markus Johansson: 36, Niklas Nurminen: 0, Matti Siponen: 161, Lusetti: 0

Administrators: admin: 1