| emWin is designed to provide
an efficient, processor- and LCD controller-independent graphical
user interface (GUI) for any application that operates with a graphical
LCD. It is compatible with single-task and multitask environments,
with a proprietary operating system or with any commercial RTOS.
emWin is shipped as "C" source code. It may be adapted
to any size physical and virtual display with any LCD controller
and CPU. Its features include the following: |
- Any 8/16/32-bit CPU; only an ANSI "C" compiler is
required.
- Any (monochrome, grayscale or color) LCD with any controller
supported (if the right driver is available).
- May work without LCD controller on smaller displays.
- Any interface supported using configuration macros.
- Display-size configurable.
- Characters and bitmaps may be written at any point on the LCD,
not just on even-numbered byte addresses.
- Routines are optimized for both size and speed.
- Compile time switches allow for different optimizations.
- For slower LCD controllers, LCD can be cached in memory, reducing
access to a minimum and resulting in very high speed.
- Clear structure.
- Virtual display support; the virtual display can be larger than
the actual display.
- Complete window management including clipping. Overwriting of
areas outside a window's client area is impossible.
- Windows can be moved and resized.
- Callback routines supported (usage optional).
- WM uses minimum RAM (app. 20 bytes per window).
|
A display driver supports a particular family
of display controllers (typically LCD controllers) and all displays
which are connected to one or more of these controllers. The driver
is essentially generic, meaning it can be configured by modifying
the configuration file LCDConf.h. The driver itself does not need
to be modified. This file contains all configurable options for
the driver including how the hardware is accessed and how the controller(s)
are connected to the display.
Configurable options include the following:
| LCD_XSIZE |
horizontal resolution |
| LCD_YSIZE |
vertical resolution |
| LCD_XORG |
horizontal position on the logical screen |
| LCD_YORG |
vertical position on the logical screen |
| LCD_MIRROR_X |
mirrors horizontal axis if activated |
| LCD_MIRROR_Y |
mirrors vertical axis if activated |
| LCD_SWAP_XY |
swaps x/y axes |
PC tools
|
|
Optional widgets
for PC look and feel
- Widgets (window objects, also known as controls) are available.
They generally operate automatically and are simple to use.
|
Memory device contexts allow creation of a section
to output to the display in the memory of the CPU. All drawing operations
can be used. When the image has been build completely, it is transferred
to the display in a single operation, allowing flicker free updates
even with slow CPUs or slow displays.
More and more graphic controller manufacturer
(Fujitsu/Toshiba) offer a flexible layer concept. The multiple layer/multiple
display feature allows you to access more than one layer. It also
allows you to use multiple displays in your embedded application.
This feature is not part of the basic package. You do need additional
software to use the multi layer support. Right now up to 5 layers/displays
can be supported.
For more information
click here.
VNC stands for "Virtual Network Computing".
It is, in essence, a client server system based on a simple display
protocol which allows the user to view a computing 'desk- top' environment
not only on the machine where it is running, but from anywhere on
the Internet and from a wide variety of machine architectures. Client
and server communicate via TCP/IP. emWin VNC support is available
as a separate package. |
|
A simulation environment under MSVC++ is available.
It can be used to write and test the entire user-interface on the
PC (all routines are 100% identical to your embedded application,
no matter what CPU or LCD you are using). This makes debugging and
development easy and convenient. Generating screen-shots of the
LCD is a snap. These screenshots can then be inserted into documentation.
emWinView, a separate program shows the contents of the simulated
LCD even during debugging. |
Touch screen simulation
The touch screen simulation is integrated into
the regular emWin simulation. Mouse events are used to simulate
the touch screen. The simulation can be used to write the user interface
of your application and can be send as a simple exe file to anybody
for discussion, demonstration or verification.
Application note
Using the MCU/CPU as LCD controller
|
Touch screen support for analog touch panels
is available. This includes a low level driver,which handles the
analog input (from an 8 bit or better AD-converter), debouncing
and calibration of the touch screen. The window manager deals with
touch messages and widgets such as button objects. It takes no more
than one line of code to create a button or another widget, which
then automatically handles touch messages and reacts accordingly.
Touch-screen & mouse support
- For window objects such as the button widget, emWin offers touch-screen
and mouse support.
|
|
A lot of samples "C" code are provided to demonstrate
the emWin features. and can also be used by customers in similar
applications. |
Antialiasing is the smoothing of lines and curves.
It reduces the jagged, stair-step appearance of any line that is
not exactly horizontal or vertical. emWin supports dif- ferent antialiasing
qualities, antialiased fonts and high-resolution coordinates. It is an optional package. |
|
A dialog box (or dialog) is normally a window that appears in order to request input
from the user. This widget is included in the Window Manager/Widget package which is optional. |
"Ready-to-go" starterkits allow you to work on
real hardware and get familiar with emWin as well as with the microcontroller
and other development tools. |