[Update] SetTagValue() and ONCHANGE? - mickaa - 18-06-2025
Hi,
- When I call my function @SetTagValue("Sensor1Temperature",@EpochTimeString$()) everything works fine.
But when I call ONCHANGE "Sensor1Temperature", '@SetTagValue("Sensor1Time",@EpochTimeString$())' the script stops at the "@SetTagValue()" function when it is called by ONCHANGE.
Can someone clarify this problem for me?
Code: REM In init section
ONCHANGE "Sensor1Temperature", '@SetTagValue("Sensor1Time",@EpochTimeString$())'
TSET 2, 5
ONTIMER 2, "@GenerateData2()"
Code: FUNCTION GenerateData2()
MY_FONCTION$="GenerateData2"
TSET 2,0
@MyLogEvent(MY_FONCTION$,"==== GenerateData ====",120)
@SetTagValue("Sensor1Temperature", "40.00")
TSET 2,20
ENDFN
Code: FUNCTION SetTagValue($MyTag$, $ValueString$)
MY_FONCTION$="SetTagValue"
// @CheckTagExist($MyTag$)
SETSYS TAG, "LOAD", $MyTag$
$MyTagType$=GETSYS TAG, "Type"
IF VAL($MyTagType$)=TYPE_BOOL% THEN
$MyTagValueBool%=VAL($ValueString$)
SETIO $MyTag$, $MyTagValueBool%
ELSE
IF VAL($MyTagType$)=TYPE_FLOAT% THEN
$MyTagValueFloat=VAL($ValueString$)
SETIO $MyTag$, $MyTagValueFloat
ELSE
IF VAL($MyTagType$)=TYPE_INT% THEN
$MyTagValueInt%=VAL($ValueString$)
SETIO $MyTag$, $MyTagValueInt%
ELSE
IF VAL($MyTagType$)=TYPE_STRING% THEN
SETIO $MyTag$, $ValueString$
ELSE
@MyLogEvent(MY_FONCTION$,"{ERROR} Tag Type not recognized. [$MyTag$:"+$MyTag$+"] | [$ValueString$:"+$ValueString$+"]",90)
ENDIF
ENDIF
ENDIF
ENDIF
ENDFN
RE: [Update] SetTagValue() and ONCHANGE? - mickaa - 23-06-2025
(18-06-2025, 05:22 PM)mickaa Wrote: Hi,
- When I call my function @SetTagValue("Sensor1Temperature",@EpochTimeString$()) everything works fine.
But when I call ONCHANGE "Sensor1Temperature", '@SetTagValue("Sensor1Time",@EpochTimeString$())' the script stops at the "@SetTagValue()" function when it is called by ONCHANGE.
Can someone clarify this problem for me?
Code: REM In init section
ONCHANGE "Sensor1Temperature", '@SetTagValue("Sensor1Time",@EpochTimeString$())'
TSET 2, 5
ONTIMER 2, "@GenerateData2()"
Code: FUNCTION GenerateData2()
MY_FONCTION$="GenerateData2"
TSET 2,0
@MyLogEvent(MY_FONCTION$,"==== GenerateData ====",120)
@SetTagValue("Sensor1Temperature", "40.00")
TSET 2,20
ENDFN
Code: FUNCTION SetTagValue($MyTag$, $ValueString$)
MY_FONCTION$="SetTagValue"
// @CheckTagExist($MyTag$)
SETSYS TAG, "LOAD", $MyTag$
$MyTagType$=GETSYS TAG, "Type"
IF VAL($MyTagType$)=TYPE_BOOL% THEN
$MyTagValueBool%=VAL($ValueString$)
SETIO $MyTag$, $MyTagValueBool%
ELSE
IF VAL($MyTagType$)=TYPE_FLOAT% THEN
$MyTagValueFloat=VAL($ValueString$)
SETIO $MyTag$, $MyTagValueFloat
ELSE
IF VAL($MyTagType$)=TYPE_INT% THEN
$MyTagValueInt%=VAL($ValueString$)
SETIO $MyTag$, $MyTagValueInt%
ELSE
IF VAL($MyTagType$)=TYPE_STRING% THEN
SETIO $MyTag$, $ValueString$
ELSE
@MyLogEvent(MY_FONCTION$,"{ERROR} Tag Type not recognized. [$MyTag$:"+$MyTag$+"] | [$ValueString$:"+$ValueString$+"]",90)
ENDIF
ENDIF
ENDIF
ENDIF
ENDFN
Okay, I figured it out.
It's not possible to put a "getData()" function as a parameter to a function called by ONALARM, ONCHANGE, etc.
So I incorporated the two functions into the same...
it's now functional.
|