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: 1026
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: 1026
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: 1919

Currently Online:
142 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Heikki Tahvanainen: 402

hbrackel: 144

rocket science: 88

pramanj: 86

Francesco Zambon: 83

Ibrahim: 78

Sabari: 62

kapsl: 57

gjevremovic: 49

Xavier: 43

Member Stats:

Guest Posters: 0

Members: 749

Moderators: 7

Admins: 1

Forum Stats:

Groups: 3

Forums: 15

Topics: 1529

Posts: 6471

Newest Members:

scvchad954, misty3446453365, KelsonzFu, Kelsonz, lienbelisario, erick34s63346, Kaitlyntvsl, lonaerskine7, KTP21ideft, Georgecotag

Moderators: Jouni Aro: 1026, Pyry: 1, Petri: 0, Bjarne Boström: 1032, Jimmy Ni: 26, Matti Siponen: 349, Lusetti: 0

Administrators: admin: 1