WinForms-Anwendungen für Windows CE unter Linux ausführen
Plattformübergreifende Kompatibilität für Legacy-Anwendungen
- Plattformübergreifende Unterstützung – Führen Sie .NET-WinForms-Anwendungen unter Linux aus, ohne eine Windows-Laufzeitumgebung zu benötigen.
- Lebensdauerverlängerung für Legacy-Software – Halten Sie Ihre bestehenden Anwendungen funktionsfähig, auch wenn die Unterstützung für Windows CE schwindet.
- Kosteneffiziente Migration – Vermeiden Sie teure Neuentwicklungen, indem Sie die Kompatibilität von Mono mit dem .NET Framework nutzen.
- Open Source & anpassbar – Passen Sie Ihre Lösung flexibel an und optimieren Sie sie für eingebettete und industrielle Einsatzbereiche.
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.
![]() |
![]() |
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.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |