Device comparison issues when device value is hard-coded
Colzie
Posts: 470
I normally never hard-code device numbers, but it happens on occasion, usually for testing. I ran across this bug.
I was writing some test code to check online events and was getting odd results. While doing an if (device.data == 0:1:2) I was getting an unexpected "true". It appears the "if" ONLY looks at device.number (ignoring device.port and device.system) when the device is a hard-coded value. If I define a device and use the device name everything works as expected, or simply enclosing the hard-coded device in parenthesis works around the problem as well.
Here is my final test code:
with the following in sString after the master comes onilne:
I was writing some test code to check online events and was getting odd results. While doing an if (device.data == 0:1:2) I was getting an unexpected "true". It appears the "if" ONLY looks at device.number (ignoring device.port and device.system) when the device is a hard-coded value. If I define a device and use the device name everything works as expected, or simply enclosing the hard-coded device in parenthesis works around the problem as well.
Here is my final test code:
define_variable char sString[2000] define_event data_event [0:1:0] { online: { // without parenthesis if (data.device == 0:2:1) { sString = "sString, 'Without parenthesis 0:2:1', '==', itoa (data.device.number), ':', itoa (data.device.port), ':', itoa (data.device.system), $0D, $0A" } if (data.device == 0:1:999) { sString = "sString, 'Without parenthesis 0:1:999', '==', itoa (data.device.number), ':', itoa (data.device.port), ':', itoa (data.device.system), $0D, $0A" } // with parenthesis if (data.device == (0:2:1)) { sString = "sString, 'With parenthesis (0:2:1)', '==', itoa (data.device.number), ':', itoa (data.device.port), ':', itoa (data.device.system), $0D, $0A" } if (data.device == (0:1:999)) { sString = "sString, 'With parenthesis (0:1:999)', '==', itoa (data.device.number), ':', itoa (data.device.port), ':', itoa (data.device.system), $0D, $0A" } } }
with the following in sString after the master comes onilne:
Without parenthesis 0:2:1==0:1:1 Without parenthesis 0:1:999==0:1:1
0
Comments