text feedback to panels using levels
wengerp
Junior Member
Hi
I'm sure having read somewhere in this forum about a neat way to provide text feedback to touch panels using levels or address codes or something similar. The idea was to enter several texts on the panel (using TP4 or by programm) and assigning them to level values. One then simply needs to send a new level vlaue to the the panel to show the respective text. Since level values are managed by netlinx itself (meaning they won't be sent if they didn't change) I found this a very effictive way to provide textual feedback to the user. However, I wasn't able to find the thread again. Am I dreaming here?
Thanks for your guidance,
Patrick
I'm sure having read somewhere in this forum about a neat way to provide text feedback to touch panels using levels or address codes or something similar. The idea was to enter several texts on the panel (using TP4 or by programm) and assigning them to level values. One then simply needs to send a new level vlaue to the the panel to show the respective text. Since level values are managed by netlinx itself (meaning they won't be sent if they didn't change) I found this a very effictive way to provide textual feedback to the user. However, I wasn't able to find the thread again. Am I dreaming here?
Thanks for your guidance,
Patrick
Comments
-
I do it all the time. Make a button a multi-state bar graph with as many states as you need, set the range low to 1 and high to the number of states. In tpd4 add the static text per state level. You can also send the state's text via code but then you'd have to ensure to do that after every TP reboot which means using a custom event to determine when a TP has been rebooted. If there's only a handful of states then enter it in the TP manually but if there's dozens then via code might be worth a try.Hi
I'm sure having read somewhere in this forum about a neat way to provide text feedback to touch panels using levels or address codes or something similar. The idea was to enter several texts on the panel (using TP4 or by programm) and assigning them to level values. One then simply needs to send a new level vlaue to the the panel to show the respective text. Since level values are managed by netlinx itself (meaning they won't be sent if they didn't change) I found this a very effictive way to provide textual feedback to the user. However, I wasn't able to find the thread again. Am I dreaming here?
Thanks for your guidance,
Patrick
You can also use ^GHH and ^GHL (I think those are the commands) to set the bargraph hi-lo range if doing this via code and then set the text per state from an array.
I personally think using multi- states BGs when text is static although multiple possibilties is the proper way to go. -
...you'd have to ensure to do that after every TP reboot which means using a custom event to determine when a TP has been rebooted.
What custom event do you use to determine if a panel has been rebooted? -
On the UIs I have a nearly invisble button with the letter "R" (no quotes) on it, port 1. Off State is red, on state is green, not that it matters to anyone but me. Later the text is set to "I" (no quotes) once port 1 is initialized and I have an array for all other ports used so I can init ports as when or how I need.
Constant UI_DETERMINE_BOOT_BTN = 100; //any number of your choosing for both channel and VT, make different if you want. CUSTOM_EVENTID_BTNTXT = 1001; Variable PERSISTENT CHAR nUI_BootInitArry[UI_HIGHEST_PORT_USED][NUM_UIs_IN_SYSTEM]; Functions DEFINE_FUNCTION fnUI_SetBootInitArry(INTEGER iUI_Indx, CHAR iValue) { STACK_VAR INTEGER i; for(i = 1; i <= UI_HIGHEST_PORT_USED; i++) { nUI_BootInitArry[i][iUI_Indx] = iValue; fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(iUI_Indx),' ], DEV PORT-[ ',itoa(i),' ], SET VALUE-[ ',itoa(iValue),' ] :DEBUG<',__LINE__,'>'"); } } DEFINE_FUNCTION fnUI_RunBootInitTasks(INTEGER iUI_Indx) { //stuff I do for port 1 main code stuff. Other port channels I do stuff if and when a user goes on those pages unless it makes sense to do right away, usually doesn't. }
When a UI comes online:SEND_COMMAND dvUI_Arry[iUI_Indx],"'?TXT-',itoa(UI_DETERMINE_BOOT_BTN),',1'";
My custom event:DEFINE_EVENT //CUSTOM_EVENT [dvUI_Arry,UI_DETERMINE_BOOT_BTN,CUSTOM_EVENT_ID_BTN_TXT] //UI REBOOT/FILE RE-LOAD CHECK CUSTOM_EVENT [dvUI_Arry,UI_DETERMINE_BOOT_BTN,CUSTOM_EVENTID_BTNTXT] { STACK_VAR INTEGER nUI_Indx; LOCAL_VAR INTEGER nCheckOnce[NUM_UIs_IN_SYSTEM]; nUI_Indx = GET_LAST(dvUI_Arry); if(CUSTOM.TEXT == 'R')//RELOADED OR REBOOTED { OFF[dvUI_Arry[nUI_Indx],UI_DETERMINE_BOOT_BTN]; fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], RX BTN TEXT-[ ',CUSTOM.TEXT,' ] :DEBUG<',itoa(__LINE__),'>'"); fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], SENDING CMD, SET BTN TEXT TO "I" :DEBUG<',itoa(__LINE__),'>'"); SEND_COMMAND dvUI_Arry[nUI_Indx],"'^TXT-',itoa(UI_DETERMINE_BOOT_BTN),',0,I'";//both for FB fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], SETTING UI_BOOT ARRAY AND RUNNING BOOT TASKS :DEBUG<',itoa(__LINE__),'>'"); fnUI_SetBootInitArry(nUI_Indx,UI_REBOOTED);//set the entire array to "rebooted" fnUI_RunBootInitTasks(nUI_Indx);//only immediate main page events related to main or dev port 1 if(!nCheckOnce[nUI_Indx])//JUST IN CASE "I" ISN'T WRITTEN TO THE BUTTON, WE DON'T WANT A LOOP CREATED { nCheckOnce[nUI_Indx] = 1; fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], CONFIRMING BTN TEXT SET TO "I" :DEBUG<',itoa(__LINE__),'>'"); SEND_COMMAND dvUI_Arry[nUI_Indx],"'?TXT-',itoa(UI_DETERMINE_BOOT_BTN),',1'"; } else { fnUI_DeBug("'CUSTOM_EVENT ERR: UI INDEX-[ ',itoa(nUI_Indx),' ], ALREADY ATTEMPTED TO SET BTN TEXT TO "I" :DEBUG<',itoa(__LINE__),'>'"); } } else if(CUSTOM.TEXT == 'I')//INITALIZED { nCheckOnce[nUI_Indx] = 0; ON[dvUI_Arry[nUI_Indx],UI_DETERMINE_BOOT_BTN]; //don't set to UI_INITIALIZED here. needs to be done by UI dev when actually initialized fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], RX BTN TEXT-[ ',CUSTOM.TEXT,' ] :DEBUG<',itoa(__LINE__),'>'"); fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], REBOOT / INIT BTN HAS BEEN SET TO "I" :DEBUG<',itoa(__LINE__),'>'"); fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], INDIVIDUAL DEVs STILL NEED TO BE INITIALIZED :DEBUG<',itoa(__LINE__),'>'"); } else//HMMM? { nCheckOnce[nUI_Indx] = 0; fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], RX BTN TEXT-[ ',CUSTOM.TEXT,' ] :DEBUG<',itoa(__LINE__),'>'"); fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], UNEXPECTED RETURNED VALUE, WHY? :DEBUG<',itoa(__LINE__),'>'"); fnUI_DeBug("'CUSTOM_EVENT: UI INDEX-[ ',itoa(nUI_Indx),' ], ASSUMING FILE RE-LOADED OR PANEL REBOOTED, DEVs NEEDS RE-INIT :DEBUG<',itoa(__LINE__),'>'"); fnUI_SetBootInitArry(nUI_Indx,UI_REBOOTED);//set the entire array to "rebooted" since something is up. } } -
I do it all the time. Make a button a multi-state bar graph with as many states as you need, set the range low to 1 and high to the number of states. In tpd4 add the static text per state level. You can also send the state's text via code but then you'd have to ensure to do that after every TP reboot which means using a custom event to determine when a TP has been rebooted. If there's only a handful of states then enter it in the TP manually but if there's dozens then via code might be worth a try.
You can also use ^GHH and ^GHL (I think those are the commands) to set the bargraph hi-lo range if doing this via code and then set the text per state from an array.
I personally think using multi- states BGs when text is static although multiple possibilties is the proper way to go.
Sorry for the late response (holiday).
That's exactly the information I was looking for. Thanks a lot for sharing.
Patrick -
On the UIs I have a nearly invisble button with the letter "R" (no quotes) on it, port 1. Off State is red, on state is green, not that it matters to anyone but me. Later the text is set to "I" (no quotes) once port 1 is initialized and I have an array for all other ports used so I can init ports as when or how I need.
Gotcha. I thought you meant there was some Custom Event that would notify you when a panel reboots in place of an Online event.
Categories
- All Categories
- 2.5K AMX General Discussion
- 922 AMX Technical Discussion
- 514 AMX Hardware
- 502 AMX Control Products
- 3 AMX Video Distribution Products
- 9 AMX Networked AV (SVSI) Products
- AMX Workspace & Collaboration Products
- 3.4K AMX Software
- 151 AMX Resource Management Suite Software
- 386 AMX Design Tools
- 2.4K NetLinx Studio
- 135 Duet/Cafe Duet
- 248 NetLinx Modules & Duet Modules
- 57 AMX RPM Forum
- 228 MODPEDIA - The Public Repository of Modules for Everyone
- 943 AMX Specialty Forums
- 2.6K AMXForums Archive
- 2.6K AMXForums Archive Threads
- 1.5K AMX Hardware
- 432 AMX Applications and Solutions
- 249 Residential Forum
- 182 Tips and Tricks
- 146 AMX Website/Forums
