phonenumber +49(0)711 123722-0
|
DE EN

Run WinForms Apps for Windows CE on Linux

Cross-Platform Compatibility for Legacy Applications

Are you looking for a way to run Windows Forms applications originally built for WindowsCE on a Linux environment? Mono provides a powerful and flexible solution to bridge the gap, enabling you to execute .NET applications seamlessly.

F&S also provides libraries for interface interaction, so you can even call I²C, SPI and UART from your WinForms app running on Linux!

Why Use Mono for WindowsCE Apps?

Why not use Microsoft .NET for Linux?

Microsoft offers .NET for Linux. Problem with this version is the missing support for WinForms or WPF. So if your application simply uses .NET without graphics, .NET for Microsoft is our recommendation.

How It Works

Mono is an open-source implementation of the .NET Framework that supports running Windows Forms applications outside of the Windows ecosystem. With the right configuration, it can execute applications built for WindowsCE, offering an alternative runtime on Linux-based systems. The additional libraries from F&S ensure that even the calls to hardware interfaces can stay the same in Linux as in WindowsCE.

WinForms on WCE WinForms on Linux

Get Started

Your application should already implement the APIs provided by F&S if you need to interact with the hardware interfaces I²C and SPI (NativeI2C.dll and NativeSPI-V1.dll). We also provide them for Linux systems, so your software can interact with these interfaces without extensive changes in the code base. What needs to be changed in code however, are the device names. For example I2C2: must be called with /dev/i2c-2 in Linux and SPI1: could be /dev/spidev0.0, but this depends on your hardware and pin connections.

Next, Mono must be installed on your Linux system. For the F&S Yocto releases, this can be achieved by adding the meta-mono layer (https://git.yoctoproject.org/meta-mono/about/) to your build. If you have your new Linux system installed on your board, you still need to prepare Mono by adding a library provided by F&S (called libfs_dotnet_io_api.so.0.1), which replaces the WinCE-library coredll.dll. [HF1] This library “translates” your interface calls from Windows to Linux commands.

Copy your Windows-executable to the board, alongside the Linux-specific APIs NativeI2C.dll and NativeSPI-V1.dll. Then run your application:

mono [path/to/your/app.exe]

You can find the code for the APIs and the library on GitHub:

https://github.com/FSEmbedded/NativeI2C_Linux

https://github.com/FSEmbedded/NativeSPI-V1_Linux

https://github.com/FSEmbedded/dotnet_linux_IO_API

Following are some screenshots of a demo application by F&S running on two different efusA9X. The Code is also available on GitHub: https://github.com/FSEmbedded/WinForms_On_Linux_InterfaceDemo

On one of these is Windows CE 2013 installed, the other one uses the latest Yocto-release from F&S (fsimx6sx-Y2024.12) with additional Mono installed. This software can interact with I²C, SPI and UART on both Operating Systems without any changes in the code.

 

WinForms I2C on WCE WinForms I2C on Linux
WinForms SPI on WCE WinForms SPI on Linux
WinForms UART on WCE WinForms UART on Linux