Intuitive graphical user interfaces

Paul Boughton

Today’s embedded systems are increasingly expected to offer intuitive graphical user interfaces (GUIs) to speed and simplify operation of the system.

In medical, consumer and industrial areas, GUIs are becoming a requisite technology for competitive products. But, GUIs are not as easy to develop as the typical application. They require very specialised tools for that purpose. This paper will introduce and describe the capabilities of two such tools that work together to simplify GUI design and development.

GUIX is a run-time library of services that perform LCD image generation and interaction. It‘s a high-performance graphics drawing library, with full windowing support, support for mutiple displays – a feature not found on most embedded GUI development tools, multilingual application support, and graphic file conversion. GUIX is designed for embedded systems and is implemented with a small code footprint and very minimal CPU performance demands. It is provided in full source code, and it is licensed royalty-free.Here is an example of the kind of medical device GUI that GUIX can enable you to develop.

Note how there are several interactive elements in this GUI – tabs, sliders, and text. Selecting a tab (Vitals, Patient List, Medications) brings forward a screen for that topic, whether it be a list of patients, the medications for a selected patient, or the vital signs of that patient. In the vitals tab, we see a simulated ECG graph, as well as a pulse count, and a flashing heart icon to indicate that the monitor is running. In the Medications tab, we see sliders that enable the user to select the level of each medication, and the associated numerical and graphical feedback. In the patients tab, we see a list of patients and we can select one for detailed information for that patient.

The elements that go into the creation of an example like this – or an actual medical GUI, include a library of various  'widgets'. A widget is an element of a graphical user interface (GUI) that displays information, such as a window or a text box. The purpose of a widget is to provide a means to input or output information from the GUI. Widgets are basic building blocks which, when combined in an application, hold all the data processed by the application and are used to enable interactions on this data. There are many kinds of widgets:  buttons, panels, scroll bars, sliders, etc. For each widget, there must be a supporting framework – a way for the selection of the widget to inform the program of the desired action. This is achieved through Event Handlers, which are coded functions that accept input from the screen driver, informing the code what the user has requested. The framework also provides support for the conversion of images in a variety fo formats, like .bmp, .jpeg, etc., to a format used by GUIX. GUIX also has support for various input devices, including a keyboard, mouse, joystick, touchscreen, and softkeys.

Now, as much as GUIX simplifies the development of a GUI, it is still complex and built from very low level constructs like a line and a box. Plus, it takes a programmer to build a GUI, just like any other aspect of an embedded system written in C.

That‘s where GUIX Studio comes in. GUIX Studio makes it truly easy to create and implement embedded GUIs. In particular, it enables easy creation of GUIX applications. GUIX Stuido runs on a PC (Windows 7/8 right now, but Linux soon), and enables not only the construction of a GUI, but also the prototyping of that GUI on the PC. It provides a WYSIWYG tool for building the GUI, and can support any number of fonts, strings, images, windows, and other items. GUIX Studio enables graphics designers, non-programmers, to design a GUI. Once designed, the GUI can be automaticaly converted into source code for GUIX on an embedded target. No coding is required, nor are any changes between the PC operation and the operation on the target.

For more information, visit