Emwin Gui Builder
I am Keil uVision user with MDK-pro licence. I am evaluating a few frameworks for a GUI development. One of them is natively supported by Keil - emWin libraries from Segger company. Unfortunatelly it looks too old-stylish for me and it is definitelly slower than other libraries. GUIbuilder also looks... very simple.
Emwin gui builder
I have just noticed that Segger made an improvement within their GUI and they released AppWizard builder a few days ago with a new widgets that looks much better than before. My question: is it going to be included in Keil uVision MDK-pro version in the future? Because now I am dissapointed with the user experience from this GUI and don't know if stay with emWin or move to another framework.
We are going to use M7 - specifically a STM32F746 microcontroller. It has nice hardware support for LCD things. Another GUI library I have tested not so long ago can acheive 60fps with almost no cpu load. Of course there is an external SDRAM and FLASH necessary for that purpose, but we can accept that if it can improve the customer UX. One thing is that we are going to make a medical device, this is why I am afraid about certifications and therefore I need a safe library with some doccumentation at least. I would like to stay with a MDK drivers/libraries and other staff, but this emWin gui builder (at least version included in MDK) doesnt appeal to me...
The emwin folder (2) has the documentation of the emWin graphics library, sample code that demonstrate common emWin features as well as a some emWin tools that can speed up the development of an emWin-based application.
The gdi and segger folders can also be downloaded from the support website. If this is the case, the emwin_lib folder should manually be created and accommodate the gdi and segger sub-folders (downloaded from the support website).
Use the SEGGER emWin Graphics Library GUI Builder utility to create a basic GUI layout for the Audio Player Window. Navigate to harmony-install-dir/utilities/segger/emwin and open the GUIBuilder utility.
You have added all the widgets for the "audio_player" window. Go to the menu bar and click File > Save to save the project.The project will be saved as a C file: audio_playerDLG.c at the location of the GUI builder utility: harmony-install-dir/utilities/segger/emwin
You may choose to continue using the currently open GUI Builder utility to create the Settings window. In case you have closed the GUI Builder utility, re-open it from the harmony-install-dir/utilities/segger/emwin path, click File > Open and open the audio_playerDLG.c file from harmony-install-dir/utilities/segger/emwin location. The GUI Builder utility will create a separate C file for each window/dialog.
You have added all the widgets for the Settings window. Go to the menu bar and click on the File > Save.. button to save the project.The project will be saved as a C file: settings_windowDLG.c at the location of the GUI builder utility: harmony-install-dir/utilities/segger/emwin
Click on File > Save As and save the image as "C" bitmap file (*.C) in the Save as type drop down box. Save the C file playButton_75_75.c to the emwin_gui folder created under/training/middleware/dev/emwin_media_player/emwin_media_player_lab/firmware/src.
All the other images in the resources folder can be converted to C file in a similar manner. You can either convert them using the tool or copy all the converted C files available in the dev_files/emwin_gui folder under the /training/middleware/emwin_media_player/emwin_media_player_lab/ folder, to your project folder training/middleware/dev/emwin_media_player/emwin_media_player_lab/firmware/src/emwin_gui.
Similarly, you will implement custom rendering of other widgets by implementing their callbacks and handling the WM_PAINT event when the callback is called by emWin. You will also register the callback by a call to WM_SetCallback(). You may refer to the audio_playerDLG.c and settings_windowDLG.c files available under training/middleware/emwin_media_player/emwin_media_player_lab/dev_files/emwin_gui.Alternatively, you may copy these files to your project directory:training/middleware/dev/emwin_media_player/emwin_media_player_lab/firmware/src/emwin_gui.
Similarly, for other widgets, emWin will send the WM_NOTIFY_PARENT event to the respective widget's parent in its registered callback. You will write your event handling code to respond to the widget's events. Refer to the audio_playerDLG.c and settings_windowDLG.c files undertraining/middleware/emwin_media_player/emwin_media_palyer_lab/dev_files/emwin_gui.Alternatively, you may copy these files from:training/middleware/emwin_media_player/emwin_media_player_lab/dev_files/emwin_guito your project directorytraining/middleware/dev/emwin_media_player/emwin_media_player_lab/firmware/src/emwin_gui.
Also thanks to the RTOS embOS and the graphics library emWin in combination with the GUI builder AppWizard, Solaride was able to develop a highly competitive car that will hopefully soon be very successful in the Bridgestone World Solar Challenge.
The emWin library is configured in two files: emwin/emwin_support.h and emwin/emwin_support.c. The header file contains the definitions related to the image orientation and the library buffers configuration. The source file defines the library buffer, functions responsible for LCD controller interrupts handling and image frames management. There is also a set of functions that provides the interface to the operating system, like delay and locking the resource. The full source code of both files is listed below.