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

WinForms-Anwendungen für Windows CE unter Linux ausführen

Plattformübergreifende Kompatibilität für Legacy-Anwendungen

Warum nicht Microsoft .NET für Linux verwenden

Microsoft bietet .NET für Linux an. Das Problem bei dieser Version ist die fehlende Unterstützung für WinForms oder WPF. Wenn Ihre Anwendung also ausschließlich .NET ohne grafische Benutzeroberfläche nutzt, empfehlen wir Microsoft .NET.

Wie es funktioniert

Mono ist eine Open-Source-Implementierung des .NET Frameworks, die das Ausführen von Windows Forms-Anwendungen außerhalb des Windows-Ökosystems unterstützt. Mit der richtigen Konfiguration kann es Anwendungen ausführen, die für Windows CE entwickelt wurden, und bietet eine alternative Laufzeitumgebung auf Linux-basierten Systemen. Die zusätzlichen Bibliotheken von F&S stellen sicher, dass sogar die Aufrufe zu Hardware-Schnittstellen unter Linux genauso funktionieren wie unter Windows CE.

WinForms on WCE WinForms on Linux

Erste Schritte

Ihre Anwendung sollte bereits die von F&S bereitgestellten APIs implementieren, wenn Sie mit den Hardware-Schnittstellen I²C und SPI (NativeI2C.dll und NativeSPI-V1.dll) kommunizieren müssen. Wir stellen diese Bibliotheken auch für Linux-Systeme zur Verfügung, sodass Ihre Software mit diesen Schnittstellen interagieren kann, ohne dass umfangreiche Änderungen im Code erforderlich sind. Änderungen im Code sind jedoch bei den Gerätenamen notwendig. Beispielsweise muss „I2C2:“ unter Linux mit „/dev/i2c-2“ angesprochen werden, und „SPI1:“ könnte „/dev/spidev0.0“ heißen, wobei dies von Ihrer Hardware und den Pin-Belegungen abhängt.

Als nächstes muss Mono auf Ihrem Linux-System installiert werden. Für die F&S Yocto-Versionen kann dies erreicht werden, indem die meta-mono-Schicht (https://git.yoctoproject.org/meta-mono/about/) zu Ihrem Build hinzugefügt wird. Wenn Sie Ihr neues Linux-System bereits auf Ihrem Board installiert haben, müssen Sie Mono noch vorbereiten, indem Sie eine von F&S bereitgestellte Bibliothek (libfs_dotnet_io_api.so.0.1) hinzufügen, die die WinCE-Bibliothek coredll.dll ersetzt. Diese Bibliothek „übersetzt“ Ihre Schnittstellenaufrufe von Windows in Linux-Befehle.

Kopieren Sie Ihre Windows-Executable zusammen mit den Linux-spezifischen APIs NativeI2C.dll und NativeSPI-V1.dll auf das Board. Danach starten Sie Ihre Anwendung mit folgendem Befehl:

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

Den Code für die APIs und die Bibliothek finden Sie auf GitHub:

https://github.com/FSEmbedded/NativeI2C_Linux

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

https://github.com/FSEmbedded/dotnet_linux_IO_API

Im Folgenden sehen Sie einige Screenshots einer Demo-Anwendung von F&S, die auf zwei verschiedenen efusA9X-Geräten läuft. Der Code ist ebenfalls auf GitHub verfügbar:

https://github.com/FSEmbedded/WinForms_On_Linux_InterfaceDemo

Auf einem der beiden Geräte ist Windows CE 2013 installiert, auf dem anderen läuft die neueste Yocto-Version von F&S (fsimx6sx-Y2024.12) mit zusätzlich installiertem Mono. Diese Software kann auf beiden Betriebssystemen mit I²C, SPI und UART kommunizieren, ohne dass Änderungen im Code erforderlich sind.

Mono WinCE I2C Mono Linux I2C
Mono WinCE SPI Mono Linux SPI
Mono WinCE UART Mono Linux UART