06.07.2015 Views

Technologic - OpenSystems Media

Technologic - OpenSystems Media

Technologic - OpenSystems Media

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

There is a critical subtlety here to be<br />

aware of. Typically the layout utility is<br />

a desktop tool that ultimately generates<br />

code for an embedded platform.<br />

It is important for the interface to look<br />

and behave precisely the same on both<br />

the host development platform and the<br />

platform being developed. The window<br />

builder should enable a What-You-See-<br />

Is-What-You-Get (WYSIWYG) design.<br />

The same runtime library rendering the<br />

image on the desktop should render the<br />

image on the destination device. The<br />

OS shouldn’t, for example, render a font<br />

one way on the desktop OS and appear<br />

differently on the end product. Pixel-forpixel<br />

spacing on a small output device<br />

can matter a great deal.<br />

Creating the code<br />

Once settled on a design, some libraries<br />

make developers write code from<br />

scratch. That’s not the ideal solution. A<br />

good GUI package will generate all the<br />

code and configuration files required<br />

to create the interface. The generated<br />

code should be compiler-neutral, typically<br />

standard ANSI C or C++.<br />

A good bit of the UI’s basic behavior<br />

code can be generated as well. For<br />

example, a collection of radio buttons<br />

has the standard behavior of all turning<br />

off except the one selected. That update<br />

behavior can be coded automatically.<br />

This is not rocket science; programmers<br />

spending time writing basic functionality<br />

wastes their true value.<br />

The functionality behind that interface<br />

is up to the developer. Here the library<br />

can be a great help. This code should<br />

be well documented, showing developers<br />

where to add (and not add) code<br />

to the program. The automatically<br />

generated code should have function<br />

stubs with statements equivalent<br />

to // put your code here. The<br />

designers of the library know what kind<br />

of code belongs where and should provide<br />

a great deal of guidance. Look for<br />

that kind of help in good GUI tools.<br />

carefully for font support in a tool. How<br />

does text get into the UI, and how easy is<br />

it to update and modify that text? What<br />

happens when a client says, “We’re<br />

going after the market in India; we<br />

need to have the software localized into<br />

Hindi”? Developers need to be able to<br />

change the language independently of<br />

the code for smooth system transitions.<br />

Running on hardware<br />

Once the interface is fully designed and<br />

coded, it has to work. It should be compatible<br />

with multiple processors, multiple<br />

<br />

<br />

<br />

<br />

display screens with different display<br />

technologies, physical dimensions, and<br />

color depths. It needs to be independent<br />

of hardware assumptions and dependencies<br />

so migration to new platforms and<br />

the addition/removal of components will<br />

not require substantial recoding or redesign.<br />

Input mechanisms should also be<br />

independent – mouse, stylus, capacitive<br />

touch, resistive touch, and so forth. The<br />

library should be software independent<br />

as well, and should work with a choice<br />

of operating systems, drivers, and other<br />

software packages.<br />

Finally, in addition to the actual programming<br />

code, consider UI text. Fonts<br />

in foreign languages and non-Roman<br />

scripts like Mandarin, Kanji, or Arabic<br />

are an important consideration. Look<br />

<br />

<br />

PC/104 and Small Form Factors 2012 Resource Guide 13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!