Because my new machine vision system is an interpreter controlled system and not an SDK, I cannot shift this challenge to the application developers. I need an embedded solution for that user interface. How should I solve this design step?
A flexible user control system in machine vision system should support something like the following three things:
- the compiled (C++) vision program which should be controlled
- a general or dedicated user interface with a layout with a lot of previously unknown controls
- the linkage between the controls of the user interface and the compiled program.
This cannot be so difficult. At a first glance this seems to be a standard task for the most kinds of user interface controlled systems. There are a lot of free and commercial GUI builders which can connect to WCF (Windows Connection Foundation). However, this approach lets a lot of work over to the interface designer.
And yet, it seems to me that there is no easier way to connect a compiled application to an independently designed user interface (please correct me when I am not right).
The point is that the functionality of a multi sensor machine vision application is quite complex, so that the GUI has to mirror a part of its functionality. And that makes the interface developer to learn a lot of stuff about the application before he can start his design process. But, in effect he will be re-inventing the wheel for a large extent.
Ok. Are there other possibilities? The only way to avoid this seems to me to compile the graphical user interface into executable of the machine vision system. This has advantages:
- embedded and tested functionality in the GUI
- shorter development time configuring pre-defined and tested dialogs and controls
- creating, configuring and controlling the user interface with an embedded interpreter enhances flexibility
- a compact and optimized user interface layout is implemented
but also disadvantages:
- limited controls and limited functionality in the user interface
- pre-defined layout with limited design possibilities
My conclusion is that compiled graphical user interfaces solve a lot of problems and accelerate the development process significantly.
But the disadvantages: all these limitations. Could there be a way to make it ‘less limited’? I seems to me that the best approach is to make the compiled GUI as flexible as possible. How can the GUI made more flexible?
GUI builders allow and demand to design the functionality of the GUI. This I should not repeat, because it ends again in re-inventing the wheel for the application developers. But there is already an interpreter for the configuration of the machine vision system in my new program. Maybe, this interpreter could also be used to configure the buttons, icons, screens, dialogs, visual layout etc.?
I have an idea: let’s combine pre-defined GUI template pages with the interpreter:
- pre-defined templates contain and support certain functionalities or ‘functional units’ in the resulting GUI. the developer doesn’t have to take much care of ‘how’ it is working, but on the visual layout.
- the – already build in – interpreter can apply the visual properties, user access rights, icons, images, etc to these templates.
Programming this, a new question arose: where is the line between flexibility of the page templates and programming most of the GUI in the interpreter? The latter is absolutely not my intention. So far I would like to provide a ‘default solution’ for every page template. Developers can use this solution, but they can modify and configure the GUI in a very large range to their own wishes. This would help to limit the disadvantages of the embedded GUI template pages.
In a later stage, I should also implement an interface to the WCF world to allow user defined GUI’s with almost no restrictions.
Do you think that this approach would be suited for a fast design of flexible GUI’s for machine vision systems?