Ich habe eine C# Winform-Anwendung, die ich portieren möchte, um auf meinem neuen Raspberry PI 3 laufen. Ich bin im Stöhnen, weil ich dachte, dass meine App nur ausgeführt würde. Das ist überhaupt nicht der Fall. Meine Winform App verwendet Quart. net, die Aforge-Bibliothek und allgemeine .net-Bibliotheken wie system.configuration
. Ich würde zwar mit meiner Logging-Klasse beginnen, da jemand erwähnt hat, dass Code ohne UI einfach zu konvertieren sein sollte, wenn etwas überhaupt geändert werden müsste. Das sieht so aus, als müsste ich das Rad neu erfinden. Um genauer zu sein, schauen Sie sich die folgende Funktion an. Jeder Code, der system.configuration
verwendet, wird nicht funktionieren. Gibt es eine einfachere Möglichkeit, meine App zum Laufen zu bringen oder muss ich fast meinen gesamten Code konvertieren? Arbeitet die Aforge-Bibliothek überhaupt am PI? Geht quart.net zur Arbeit? Im Moment möchte ich aufgeben und einen kleinen Windows-PC kaufen, auf dem "richtige" Fenster laufen.Porting Winform-Anwendung auf Raspberry PI
C# Winform-Code
class Logging
{
public void Write_To_Log_File(String Message, String Procedure, String Error_Code, String Error_String)
{
try
{
// If the log file is bigger than allowed size then archive
if (File.Exists(@ConfigurationManager.AppSettings["LogSavePath"]))
{
FileInfo file = new FileInfo(@ConfigurationManager.AppSettings["LogSavePath"]);
if (file.Length > Convert.ToInt32(ConfigurationManager.AppSettings["FileLogSizeLimit"]))
{
// Rename the file
File.Move(@ConfigurationManager.AppSettings["LogSavePath"], @ConfigurationManager.AppSettings["LogSavePath"] + string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now) + ".csv");
}
}
// If log file does not exist then create it and add the headers
if (File.Exists(@ConfigurationManager.AppSettings["LogSavePath"]))
{
}
else
{
// Create the file
System.IO.File.Create("LogSavePath");
// Add data
string[] Headers = { "Time" + "," + "_Message" + "," + "Procedure" + "," + "Error_Code" + "," + "Error_String" };
System.IO.File.AppendAllLines(@ConfigurationManager.AppSettings["LogSavePath"], Headers);
}
if (File.Exists(@ConfigurationManager.AppSettings["LogSavePath"]))
{
string[] Log = { DateTime.Now.ToString() + "," + Message + "," + Procedure + "," + Error_Code + "," + Error_String };
System.IO.File.AppendAllLines(@ConfigurationManager.AppSettings["LogSavePath"], Log);
}
}
catch
{
}
}
}
Es wird wahrscheinlich etwas Umschreiben benötigen, wie Rasberry nur Mono-Umgebung, nicht die Microsoft .NET-Framework unterstützen. Auch jede Bibliothek, die nicht pcl-kompatibel ist, funktioniert nicht. Eine gute Nachricht für Sie ist, dass Quartz.net und Aforge beide unterstützt werden, wie ich gelesen habe. – Xiaoy312
Windows IoT Edition sollte auf der Platine funktionieren, aber das bedeutet eine Änderung des Betriebssystems. Wenn du das nicht willst, wie der andere Kommentar anzeigt, kannst du Mono oder .NET Core ausprobieren. Aber WinForms wird aufgrund der bekannten Probleme wahrscheinlich nicht sehr gut funktionieren. –