I finished the enclosure today and the hardware last night. Probably 15 years of software tweaking to do but I am a software developer with perfectionist tendencies so that's only to be expected.
I'll do a video to show the menu in operation, one day, but other than this pic there's probably not a lot I can talk about as it's for work purposes and wouldn't make a lot of sense to anyone beyond myself and 5 people at work.
This is an Arduino Mega with protoshield and LCD + keypad shield. 4 x switches are digital inputs, 2 x trim pots are analog inputs. The code it runs lets you select one of 2 sensor control boxes and then emulates the chosen one. The switches and pots allow you to simulate various conditions typically encountered in the field - like opening and closing valves or specifying leak rates and what not.
The only hardware change I'd like to do is to add 2 more serial USB ports (the Mega chip has 4xUARTs so it's definitely doable in hardware) so I can simulate 2 x control boxes talking to the PC at once, plus another USB port to talk to a terminal app running on the PC for debugging purposes. Going to order the parts to do that tonight.
Control box 1 talks at 9600 baud
Control box 2 talks at 115200 baud
I loved the fact that you could switch baud rates on the fly - very handy.
The software I am developing for work polls the control boxes at 1 second intervals, so there's plenty of time for handling key presses and checking for changes in analog or digital inputs.
I may create a library for the (very simple) menu system, once I've got up to speed with function pointers and massaged it into a truly dynamic menu system. So far I have main headings, sub menu options and radio buttons implemented. I don't need much more than that, so won't do any more. I just downloaded the SimpleTimer.(h/cpp) library for the code examples, so maybe the menu library will help someone else.
Everything else in the code is very specific to the proprietary firmware and control sequences used by work hardware / software so there is nothing I can really release for others to use / incorporate. I'm putting some time into answering questions here though, so hopefully my nett karmic balance stays positive.
The biggest challenge for me, for the entire project, was getting the enclosure drilled out accurately. :~ Far out.
I am enjoying the process of learning this technology, and have many, many ideas brewing. Have also just located a local hackerspace, so hopefully I can get involved there and get up to speed with the gaping holes in the knowledge I need to implement those ideas.
I'll leave you with a little bit of code from the sketch. The entirety of my loop and serialEvent functions:
void loop() {
 if (keyPressed()) handleKeyPress();
 if (stateChanged()) displayState();
}
void serialEvent() {
 if (cmdReceived()) handleCommand();Â
}