emWin
The industry-leading embedded graphics library
emWin enables the creation of highly efficient GUIs on any embedded system, empowering even resource-constrained microcontroller-based systems to run high-quality interactive user interfaces.
Overview
emWin is an embedded graphical user interface solution that is designed to provide an efficient, processor and display controller independent graphical user interface for any application that operates with a graphical display.
emWin is compatible with single-task and multitask environments, with a proprietary operating system or with any commercial RTOS such as embOS, making it a professional GUI for the embedded market, usable for multiple different scenarios.
emWin is delivered as C source code. It can be adapted to any display size, physical or virtual, with any display controller and any CPU. It is compatible with single-task and multitask environments, with a proprietary operating system or with any commercial RTOS such as embOS.
Key features
- Stunning graphics
- Powerful and easy-to-use API
- Use of any display and any microcontroller
- Use of any ANSI C/C++ development environment
- Reliability of a proven graphics solution
- Embedded graphical user interface solution
Award Winning Design Tool: AppWizard
AppWizard provides developers and designers with a flexible tool for creating stunning user interface applications – without writing any code. Users need little to no experience with emWin or even C. Features such as scalable resource management with integrated access to external media, conditional interactions, multilingual text management, ready-to-use BSPs and many more make it easy to create cutting-edge user interfaces.
One GUI Solution for All Applications
emWin can be used in any application, from battery-powered single-chip products with basic graphics needs to high-end embedded systems requiring ultra-high performance, and sophisticated animations. emWin, the professional GUI from SEGGER, is used in many different target markets such as industrial controls, Internet of Things (IoT), networking, consumer electronics, safety-critical devices, automotive, medical devices, and avionics, making it a state-of-the-art GUI solution in the embedded industry.
Industrial Controls
emWin is an essential component of every industrial control.
Safety Critical Devices
emWin provides the user-interface for access control and any other safety critical device.
Automotive
emWin is the perfect graphics package for dashboard applications.
Medical Devices
emWin is the perfect solution for displaying health data.
Avionics
Engineers building aerospace systems know that they can rely on emWin for their graphical needs.
About emWin
emWin, the embedded GUI solution, is compatible with single-task and multitask environments with a proprietary operating system or with any commercial RTOS such as embOS. The GUI is delivered as "C" source code. emWin can be adapted to any size, either physical or virtual display, independent of the display controller and target CPU. This makes it a professional GUI for the embedded market that can be used in many different scenarios.
Reliability
SEGGER’s GUI emWin is deployed in a huge number of mass market devices. It is considered the industry standard for user interfaces and graphic software in the embedded world.
Efficiency
emWin is a high-performance graphics package. It has been optimized for minimum memory consumption, both in RAM and ROM, as well as for high speed and versatility. This makes it a cutting-edge GUI solution.
Media gallery
Package Content
Features | emWin PRO | emWin BASE color | emWin BASE grayscale | emWin BASE b/w |
---|---|---|---|---|
emWin source code | ||||
Full-color support | ||||
Grayscale support | ||||
2-color (b/w) support | ||||
Touch screen support | ||||
Basic fonts charset ISO 8859-1 | ||||
emWinView | ||||
Simulation library | ||||
Additional Modules | ||||
emWin Antialiasing | ||||
emWin Memory devices | ||||
emWin MultiTouch | ||||
emWin Simulation Source | ||||
emWin VNC Server | ||||
emWin WM/Widgets | ||||
Tools | ||||
AppWizard GUI Design Tool | ||||
Bitmap Converter | ||||
Font Converter | ||||
Drivers | ||||
emWin driver included | ||||
Updates and Technical Support | ||||
Feature & Maintenance Updates | ||||
Technical Support |
Included
Optional
Getting Started
Adding emWin to the Target Program
You basically have a choice between including only the source files that you are actually going to use in your project, which will then be compiled and linked, or creating a library and linking the library file. If your tool chain supports "smart" linking (linking in only the modules that are referenced and not those that are not referenced), there is no real need to create a library at all, since only the functions and data structures which are required, will be linked. If your tool chain does not support "smart" linking, a library makes sense, because otherwise everything will be linked and the program size will be excessively large. For some CPUs we have example projects available to help you get started.
Generally speaking, you need to include the core C files of emWin, the display driver, all font files you plan to use, and any optional modules you have ordered with emWin.
Configuration
Before emWin can be used on a target system, the software needs to be configured. Configuring means, modifying the configuration files which usually reside in the configuration sub directory. We try to keep the configuration as simple as possible, but there are some configuration routines which need to be modified in order for the system to work properly.
The following items need to be configured:
- Memory area to be used by emWin
- Display driver to be used for drawing operations
- Color conversion routines to be used
- Display controller initialization
- Hardware acceleration
Writing Applications
emWin comes with an extensive collection of samples and tutorials which could be easily used as starting point. To get something on the display the typical 'Hello World' application looks as follows:
MainTask(void) {
GUI_Init();
GUI_DispString("Hello World!");
while (1) {
GUI_Delay(5);
}
}
Licensing
emWin is available under various Embedded Software License models and delivered in source code packages. With a wide range of licensing options, emWin can fulfill commercial requirements as well as technical requirements. All licenses are one-time payments. emWin is royalty-free and not subscription-based. This makes the software a part of the equipment expenses, keeping the costs static.
* Applies to second seat/product and all additional seats/products of the Single Product License and Single Developer License.
FAQ
Do I have to pay additional royalties for self-made-hardware components?
A: No, all options are royalty-free and allow an unlimited production volume.
Does emWin support bidirectional scripts?
A: Yes, emWin also supports bidirectional script, e.g. Hebrew (RTL) mixed with German (LTR) or Arabic mixed with Greek.
Is it possible to store languages and font types on an external storage device?
A: This is up to you and depends on the capacity of your memory.
I want to illustrate symbols, drawings, background images, buttons, drop down menus with drawings and text (up to 4-layer deep), alpha blending, pop-up windows, scroll bars etc.
A: All requested elements are supported by emWin and provided as widgets. For more information please visit the emWin Widgets page.
Is it possible to design my own widgets with emWin?
A: Yes! You can freely determine and design widgets and windows by overwriting the callback feature or setting an owner-draw feature. Please visit the emWin Samples page for more information.
I want to apply a capacitive touch. We want to address the given touch control unit directly. Is this supported by emWin?
A: Yes, capacitive touch is supported by emWin. You just need to transfer the data to emWin which you get from the touch controller. These are typically x- and y- coordinates and the ID. The processing of the data will be handled by emWin automatically. Additionally, emWin offers the option to calibrate the touch controller.