G4 to G5 Panel Conversion - Levels and Text Justification
Reese Jacobs
Posts: 347
Just did a G4 to G5 panel migration using TPD5 for an MXT-700 to MXT-701 upgrade. This is my first G5 panel. Everything went pretty smoothly with the migration utility for a fairly complex panel design so that was impressive. However two things did not work out in the migration and I was looking for some insight from others with G5/TPD5 experience. Been through the G4 to G5 migration guide, G5 programming guide, and TPD5 programming manual to no avail.
- Levels - had a number of bargraph buttons in the G4 file which migrated fine. They are bargraph, horizontal, simple slider with unique fill colors for both states, range 0-100, not inverted, display only. Three of the levels that do not work have port/level assignments of 2,1 2,2 and 2,3 respectively. All Netlinx code uses standard SEND_LEVEL commands to the TP device/port/level combination. Working fine on G4, nothing shows on G5. Documentation a little confusing -- indicated port must be 0 or 1 but certainly that can't be true since it allows any port to be assigned to the bargraph and the migration utility did not change the port/level assignment.
- Test Justification (right justify) - any buttons that had text justification as top-right, middle-right, or bottom-right have text truncated on the right by about 1-2 characters. Test displays just fine in TPD5 -- only when rendered to the MXT-701 panel does the truncation occur. Before I go about trying to 'absolute' position the text to work I was curious if there was some other workaround.
Not having a G5 Panel Preview application makes this process a pain ...
Thanks in advance for any assistance or insight.
0
Comments
Done a couple of G5 panels, maybe 10...15 or so. Did not ran into your first issue, but all my levels are on port 1, don't know if that explains it.
What I did notice on MXT panels (not on the newer MT/MD series) is that when the panel comes online, the level is visually always zero, even when it actually has the correct level. Bit hard to explain, but when the panel comes online, I send it the value the controller holds in a variable, visually the level is at zero. When I manually send it the level it should have (control a device), nothing happens, cause levels are only send when changed. When I send it anything else the level indicator visually jumps to that level. Boy, awkward explanation....
So panel comes online > send level 150 through code > bargraph visually stays at zero. send level 150 through 'control a device' > nothing happens, level stays at zero. Send anything BUT 150 > bargraph jumps to that level.
Noticed this on at least 3 differrent MXT panels with the latest firmware, one of which I use as my development panel which gets rebooted a LOT.
I have ran into issue 2, but not this specific case. I often noticed that (some) text justification is slightly different in TPD5 than it is on the panel itself. Like top justification leaves a little margin in TPD5, but touches the button edge when displayed on a real panel. I did use absolute positioning to solve that.
Don't rely on the documentation too much, it's a bit of a mess. The document 'G5 design considerations' is rather out of sync with the panel documentation or PI2. In the first doc it is mentioned that some things 'are completely removed' from G5, but they are completely documented in the latest versions of the panel documentation or PI2, but don't work at all or don't work as they did in G4.
Another thing that I missed when first upgrading (my fault) is the 'pipe' symbol, '|', used for starting a newline in a ^TXT command to a panel, is now replaced by CR,LF. The conversion utility doesn't notices this, maybe because it's a string literal, which isn't checked.
links:
https://trade.amx.com/assets/whitePapers/AMXG5Considerations.WhitePaper.pdf
https://proforums.harman.com/amx/discussion/125062/bmf-button-command-on-g5-panel#latest
https://proforums.harman.com/amx/discussion/125428/g5-syntax-vs-g4-syntax
Richard, we've seen the same level behavior on older G4 and even TPControl panels. Initial level send after panel boot is ignored, shows zero (most visible in battery display), but any change brings it right.
John, never had that myself, only noticed it on the MXT panels. But I believe you...
Best practice while a panel is coming online is to first send a level of zero and then any other level value ...
E.g.
data_event[dvTP]
{
online :
{
send_level dvTP, 1, 0;
send_level dvTP, 1 , VolumeValue;
}
}
Thanks for the insight -- I did notice that the level behavior Richard described is what I am seeing. The initial level value sent displays visually as 0 despite the level being a non-zero value. It does 'correct' itself once another level command is sent (or a level variable changes) with a different value. I have never seen this problem on a G4 panel but I trust John when he says he has observed the same issue. I will try George's workaround for now -- probably no chance this problem would ever get fixed by AMX.
The justification issue is a pain -- it forces you to examine every button on a panel and then go into TPD5 and try to massage the text justification so that it works on the panel. I found that using absolute text positioning was the best and least painful solution for those buttons with issues.
As for the '|', I feel your pain. There was no mention in the conversion document so I found this out the hard way and had to make substantial changes to panel files as well as some code where the text strings are sent via ^TXT that included the pipe symbol. Fortunately, many of the G4 panel commands were retained for compatibility but this incompatibility could result in a good bit of work depending on your panel and your master code.
Lastly, another area of incompatibility with G5 appears to be in the handling of password protected pages. The migration document indicates support is no longer provided for this feature but it was added back later. However, the ^PWD commands do not work on G5 panels so passwords need to be set manually in the panel profile. Regardless, password protecting pages does not work identically to G4 panels. Rather than try to find a convoluted way to make it work correctly in my application for a G5 panel, I moved the handling into Netlinx code making it panel independent which is probably what I should have done in the first place.
For the level issue I do as George described above, but only for the MXT panels. Like you, I mostly assume that this stuff will never get fixed and certainly not within the timeframe I need a fix...
Another thing you will probably start to notice, is that G5 panels (MXT and MD/MT) can be 'laggy' when doing page flips. Despite 'the powerful quad core processor', flipping pages (from code, don't do pageflips from the panel) can sometimes take a noticable amount of time, say half a second. I only noticed this on the G5 panels I used, on all the G4 panels were fine. It does not happen always, but often enough to really be noticed.
Richard - I do the same as you, my code knows the panel type and has code that executes specifically for G5 panels to deal with levels, $0D,$0A instead of '|', etc. I also have noticed the page flip lag on flips from code.
I wanted to elaborate a little on the password protection issue I found with G5 panels. In G4 panels, password protection is an attribute of a button. For example, I can password protect a button that is used to perform page flips for security system controls. In G5, password protection is an attribute associated with an event on a button and it can only be used to control a standard page action. In my implementation, security system control was performed with a combination of a standard page and a popup page and both of those page flips were under the control of a password protected button. If the password was correct, the page flips were performed. If the password was correct, they did not display. In G5, I was able to password protect the standard page but this had no effect on whether or not the popup page was displayed. The Button Press or Release event (whichever you choose) would protect the standard page but not the popup page so the popup was always displayed (thereby defeating the purpose of the password protection). There is not a way to password protect all of the actions associated with a Button Press or Release event unless all of the actions are for standard pages. At any rate, I moved the password handling to code and removed it from both the G4 and G5 panels so it works fine.
Concerning levels - have you tried make a timeline which would send the level values to the appropriate bargraphs repeatedly? It could start when the panel goes online.
Another pain in the ass in the conversion from G4 to G5 is the setup port in button's programming properties and its functionality. In G4 panels you had a bunch of keyboard's options, in G5 there is only one. I have noticed it recently and it was really disappointing.
Best regards,