Headers and Footers disappear...
TrikinCurt
Posts: 158
Ok, I have got some help with various other problems in regards to the system I am working on, but this one is driving me mad!
I use pop-ups for the headers and footers, and sometimes they simply go away, making no way to navigate off the page. I have them being shown in online events for the touch panel, so in theory if it goes offline and back they would be replaced. With that said, the panel is still online, the commands work fine on that page, just no header and footer.
Some background for those new to my $@*$* system...
Three NI-3100 controlling around 30 devices - residential system, big things are two autopatch boxes for audio and a Vantage lighting control system.
I am just trying to get a feel for where I start looking, code, network problem, panel, etc?? A panel that doesn't get used, it never disappears. It can be (it seems) on any page. And could be a couple days or minutes.
Any guesses before I just put show pop-up commands in a timeline
Curt
I use pop-ups for the headers and footers, and sometimes they simply go away, making no way to navigate off the page. I have them being shown in online events for the touch panel, so in theory if it goes offline and back they would be replaced. With that said, the panel is still online, the commands work fine on that page, just no header and footer.
Some background for those new to my $@*$* system...
Three NI-3100 controlling around 30 devices - residential system, big things are two autopatch boxes for audio and a Vantage lighting control system.
I am just trying to get a feel for where I start looking, code, network problem, panel, etc?? A panel that doesn't get used, it never disappears. It can be (it seems) on any page. And could be a couple days or minutes.
Any guesses before I just put show pop-up commands in a timeline
Curt
0
Comments
I would think that you could address this problem by using page tracking--call for the popus whenever the relevant page appears.. Or, rather than just showing the pop ups, you could show the pop ups on just the page where they belong and then remove any method that kills them (@PPX or whatever).
Of course, I'm just guessing as to what's causing your problem, but it is clear that you should be able to bring up the popups on the appropriate page no matter how that page gets displayed.
Curt
I can tell you that I use a lot of pop-ups for navigation and other things on my panels and the only time I've ever had any problems is when I did something in code that caused the problem. One thing that might be causing your problems is the use of touch panel arrays. I have in the past missed a reference (ie dvTP_Array instead of dvTP_Array[x]) and I've also referenced the wrong TP array in a GET_LAST statement. Watching the commands going to and from the touch panel should help you catch most of these problems.
Jeff
So I have:
in the module declaration
Things like this: in the module itself and:
thats in my main program.
Am I doing something stupid in there?
Thanks for your help,
Curt
Jeff
I put the navigation buttons on a page instead of a popup. Everything else on the panel is a popup. There is technically only one page on each panel.
I also only create on TP file for every TP in the system. In the file I create a Startup page that is specific for each panel in the house. For example, TP_1 may be in the Kitchen. so, the page is called Startup_Page_1, The panel in the Home Theater might be Startup_Page_2, etc... the device numbers determine what panel number we're talking about. 10001=panel 1, 10002=panel 2, 10003=panel 3, etc...
The page that is the default startup page for the panel has some generic nav buttons and a message that the panel is offline.
In the DATA_Event for each panel I put a command in the ONLINE: section that is something like When the panel comes online it is sent to the correct page for that room. (also by default they have the correct navigation buttons that are pertinent for that room)
the other rule I follow is that the navigation buttons can never be covered up by a popup. We've found great success in this because the client is never more than one button away from the topmost level. They can easily get back out if they're confused.
That's my 2 cents...
For something like this I would usually do an Alt-T-I and search for PPK or PPX and see if you can locate a bad popup call.
Paul
Yes, I do put my popups in different groups. For example, I may have left-side popups, right-side popups, middle popups, AVcontrol popups, etc... It depends upon their function.
My popup navigation is managed from a database in my program. To make changes in the navitation, I just change the data tables. The rest is handled for me by the program. It's pretty bullet-proof. I can manage hundreds of popups on several touch panels with completely different looks with only one touch panel file. Once you do the heavy lifting in the beginning, the rest is a cake walk.
time to keep looking more into the obvious... I had switched some modules to just pass in an array of touch panels, as opposed to using 12 instances of the UI module. I am not sure if that gains me anything, but it sure made the queues much happier on startup.
So, simple question, when passing in an array of touch panels, is it okay to say the following:
This does thing like update the current song on the XM and HD radios.
Thanks,
Curt
DHawthorne posted a nice combining function that will modify the panels of the array based on what panels are actually on a particular page so that you only send feedback to the panels that really need it. Of course with this would have to have the codes structured to allow a panel that joins the combined array to get updated when it joins.
You can also use GET_LAST(dvTP_Array) on a button or data event to return the array index position of the TP that initiated the event. I personal think that these methods are better than using a separate instance of a UI module for each TP in a system.
Is get_last reentrant? I am always worried that since my TP array is a global variable that other threads could change a get_last result before anothers finished processing. Anyone ever run into that? Does get _last return the last button push on the actual touch panel or would it also include a do_push to that panel from code?
Paul
A Do_Push runs through the Button event just as a real TP button would.
Since there is no multi threading it will just return the last X of the event it's call in.
Ok thanks. The docs say it can be used anywhere btw, not just inside of an event.
I hate to admit it, but I found a couple of PPX commands in the Carrier Infinity code. The panels have run the last several days without anything magically disappearing so it may have been as easy as that. What a silly dangerous command...
Curt
That's just plain mean
Did you find the PPX commands in the Comm module, or the UI code?
Jeff
Frustrating, I had disabled the module over a month ago and thought I still had problems, but since I took out the PPX it has been running solid as can be.
I am just happy to work on features instead of bug fixes for a change!
Curt