Apologies for the delays. I decided to go back and redo much of the data handling. Initially it used the strtok function to scan for commas and throw the data in between into variables that went out to display fields or were used for control. This was fine and was fast but I quickly realized it all went bad if a comma was introduced into one of the text fields. I didn't realize that was even possible but I tested it and it is. There's no easy way around that that I can think of. How would I tell it to skip commas in between just those areas. I know it's possible but is beyond my search engine based coding self education
.
I am now using the same fucntion that grabs the initial total array of data to count the total number of chars, the total commas (in case needed) and the size of the display attributes field. I am adding the initial STS header and the attributes field then using that as the initial offset pointer into the start of the actual display data since the field can vary from 10 to 20 chars in length which wrecks any static pointing method. I'm just using for loops to extract them from there on out. It's tedious but hopfully I can use some variables in the loops based off the counter from the new start pont to help automate it a bit. The hope is also that the attributes field can be used to dynamically adjust the line widths which is why it exists (no separate page for each possible screen combo). Everything is a tradeoff, display processing for bandwith, simplicity for flexibility, etc...
The advantage over the other method in addition to the comma problem is the that each individual customizable field is independent and can later be edited for font or color or what not (provided the display coding handles it) later on instead of one line across only.
As you can see, if still reading, is that you end up basically writing a large portion of the UI just to display and interact with it, essentially building a totally new control head vs. some dumb terminal, unfortunately (I'm sure Bob is lauging at me now).
Also, the Nextion screens are nice but 1- they are expensive, 2- they have limited memory (especially if doing independent fields), 3- they have the huge carrier PC board attached, 4-seem to be power hungery, 5-other show stopper issues that would need resolved.
I have ordered and have in hand an Adafruit RA8875 display driver and separate resistive touch controller board. I ordered the corresponding 5" and 4.3" touch screens that go with them. This is another whole level of learning (more time and delay and gray hair) but if they work out decently (if I'm not too dumb) then that means we have the ability to do a direct drop in of display with relatively small support boards into existing devices (ie: Garmin, TomTom, control panel ripped off a printer, whatever you can stuff it into). Also, it's SPI instead of serial so should be faster. There's a butt load of old but nice GPSs on the used market for less than $20. I'm placing a lot of hope on being able to figure it all out and make these new parts work but I think the gamble is worth it.
I still plan on finishing the Nextion code and have the menu reverse text indication working for that now which makes it at least 80% usable (detail, simple, menu, closecall).
One thing is for sure, you'll never hear me complain about product release dates!