Hallo, ich habe auf dem Raspberry Pi 2 Mono (Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4+rpi1) installiert und auch eine KonsolenApplication mit Datenbank anbindung (MySql) geschrieben. Ich habe die .exe und die MySql.Data.dll System.Data.dll auf den Raspberry kopiert. Wenn ich die exe mit #mono test.exe starte erhalte ich folgenden Fehler: Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. File name: 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' [ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. File name: 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Scheinbar fehlet System.Data in der 4.0 Version. Hast du wirklich alle Pakete für Mono installiert?
ebenso wie die Meldung: Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'MySql.Data, Version=6.8.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. File name: 'MySql.Data, Version=6.8.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' [ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'MySql.Data, Version=6.8.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. File name: 'MySql.Data, Version=6.8.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'
Ich glaube die System.Data wird jetzt gefunden Wie kann ich denn ein Paket für mono installieren?
was mich wunder ist wenn die Aus dem bin Ordner die Datei "MySql.Data.dll" kopiere auf den Mac kopiere wird daraus "mysql.data.dll" von da aus kopiere ich sie dann auf den Raspberry muss ich sie dann wieder umbenennen?
bass schrieb: > Hat keiner eine Idee? teste es doch einfach. Bei Linux ist groß und Kleinschreibung wichtig.
jetzt bekomme ich folgende Meldung wenn ich die .exe ausführe Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for MySql.Data.MySqlClient.MySqlConnection ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Collections.Generic.Queue`1 ---> System.InvalidProgramException: Invalid IL code in System.Collections.Generic.Queue`1:.cctor (): method body is empty. --- End of inner exception stack trace --- at MySql.Data.Common.Cache`2[System.String,MySql.Data.MySqlClient.MySqlConn ectionStringBuilder]..ctor (Int32 initialCapacity, Int32 capacity) [0x00000] in <filename unknown>:0 at MySql.Data.MySqlClient.MySqlConnection..cctor () [0x00000] in <filename unknown>:0 --- End of inner exception stack trace --- at MySQLReadWrite.Program.init () [0x00000] in <filename unknown>:0 at MySQLReadWrite.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for MySql.Data.MySqlClient.MySqlConnection ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Collections.Generic.Queue`1 ---> System.InvalidProgramException: Invalid IL code in System.Collections.Generic.Queue`1:.cctor (): method body is empty. --- End of inner exception stack trace --- at MySql.Data.Common.Cache`2[System.String,MySql.Data.MySqlClient.MySqlConn ectionStringBuilder]..ctor (Int32 initialCapacity, Int32 capacity) [0x00000] in <filename unknown>:0 at MySql.Data.MySqlClient.MySqlConnection..cctor () [0x00000] in <filename unknown>:0 --- End of inner exception stack trace --- at MySQLReadWrite.Program.init () [0x00000] in <filename unknown>:0 at MySQLReadWrite.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
bass schrieb: > jetzt bekomme ich folgende Meldung wenn ich die .exe ausführe das wird jetzt wohl schwerer. Das scheint mir mehr ein Problem zwischen Mono und deiner exe zu sein. Da kannst du nur mal schauen, ob du die neuste Version von Mono hast.
Hat jemand denn eine C# Anwendung mit mySql-Anbindung auf dem Raspberry am laufen und kann mir vielleicht sagen in welcher Reihenfolge und welche Versionen funktionieren?
du kannst mal versuchen sie auf dem Pi zu Compilern, eventuell geht es ja dann. (also nur denn Quelltext übertragen)
bass schrieb: > Mit welchem Compiler denn? http://www.mono-project.com/docs/about-mono/languages/csharp/
ok danke dann bekomme ich folgende Meldungen: Program.cs(2,7): error CS0246: The type or namespace name `MySql' could not be found. Are you missing an assembly reference? Program.cs(11,10): error CS0246: The type or namespace name `MySqlDataReader' could not be found. Are you missing an assembly reference? Program.cs(12,10): error CS0246: The type or namespace name `MySqlConnection' could not be found. Are you missing an assembly reference? Program.cs(13,10): error CS0246: The type or namespace name `MySqlCommand' could not be found. Are you missing an assembly reference?
Habe mich auch ewig mit einer MySQL Verbindung bespielt. Leider auch ohne Erfolg. Da scheint es noch ein Problem mit Mono zu geben :-(
bass schrieb: > ok danke dann bekomme ich folgende Meldungen: hast du die Referenz auf die dll auch übergeben? Wie sieht dann aufruf genau auf.
using System; using MySql.Data.MySqlClient; namespace MySQLReadWrite { class Program { static MySqlDataReader Reader; static MySqlConnection connection = null; static MySqlCommand command; static void Main(string[] args) { init(); int value = 0; //Endlosschleife while (true) { if (value==0) { value = 1; } else { value = 0; } writeTable_SerialInput(value); ReadTable_SerialOutput (); readSerialPort(); System.Threading.Thread.Sleep(5000); Console.WriteLine(DateTime.Now.ToString()); } } private static void init() { try { string myConnectionString = "SERVER=192.168.178.38;" + "PORT=3306;"+ "DATABASE=xxx;" + "UID=xxx;" + "PASSWORD=xxx;"; connection = new MySqlConnection(myConnectionString); command = connection.CreateCommand(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private static void ReadTable_SerialOutput() { try { command.CommandText = "SELECT * FROM Serial_input"; connection.Open(); Reader = command.ExecuteReader(); while (Reader.Read()) { string row = ""; for (int i = 0; i < Reader.FieldCount; i++) { row += Reader.GetValue(i).ToString() + ", "; Console.WriteLine(row); } } connection.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } /// <summary> /// Schreibt die gelesenen Werte von der seriellen Schnittstelle in die Datenbank /// </summary> /// <returns></returns> private static void writeTable_SerialInput(int value) { try { string sqlFormattedDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string myInsertQuery = "INSERT INTO Serial_input (Alarm, Datum, Kommentar) Values(" + value + ",'" + sqlFormattedDate + "', 'test')"; command = new MySqlCommand(myInsertQuery); command.Connection = connection; connection.Open(); command.ExecuteNonQuery(); command.Connection.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private static void readSerialPort() { } } }
Compiler aufruf: dmcs Program.cs -r:MySql.Data.dll -r:System.dll -r:System.Data.dll dann kommt: warning CS8001: SDK path could not be resolved error CS0009: Metadata file `/home/pi/ReadSerialPort/System.Data.dll' does not contain valid metadata Compilation failed: 1 error(s), 1 warnings
geht bei mir unter Debian mit mono dmcs test.cs -r:MySql.Data.dll -r:System.Data musste nur die Zeile mit dem SerialPort auskommentieren. habe nur die MySql.Data.dll noch mit ins verzeichniss gelegt.
bass schrieb: > Ich habe die .exe und die MySql.Data.dll System.Data.dll auf den > Raspberry kopiert. > > Wenn ich die exe mit #mono test.exe starte erhalte ich folgenden Fehler: Warum arbeitest du überhaupt mit C# wenn das Zielsystem ein Linux ist? Mit Python würde es wahrscheinlich längst laufen.
Karl schrieb: > Warum arbeitest du überhaupt mit C# wenn das Zielsystem ein Linux ist? > Mit Python würde es wahrscheinlich längst laufen. es gibt halt Leute die wert auf Typsicherheit legen. Und sich nicht mit scripten beschäftigen wollen. Ich kann es nachvollziehen.
Welche Versionen hast du denn von MySql.Data.dll und System.Data???
bass schrieb: > Welche Versionen hast du denn von MySql.Data.dll und System.Data??? MySql.Data.dll aktuelle aus dem Netz System.Data keine Ahnung, mono ist bestimmt schon 1 Jahr alt. Hast du etwa die System.Data mit hin kopiert? Bei mir ist es aber ein normales x68 System, kein rpi.
auf nem x86 läuft es bei mir auch aber nicht auf dem pi...
Hier mal meine Kompilierte exe, eventuell läuft die ja bei dir.
Ah es läuft!!! Ich hatte immer die 4.0 Version der MySql.Data.dll habe auf dem Pi aber 4.5 installiert. Trotzdem Vielen Dank für die Hilfe!!!
Aber nochmal zurück mit welcher Sprache sollte man den auf dem Pi programmieren ??? C,C++ Phyton was ist am gängigsten? Habe beruflich halt viel mit C# zu tun...
bass schrieb: > Aber nochmal zurück mit welcher Sprache sollte man den auf dem Pi > programmieren ??? C,C++ Phyton was ist am gängigsten? Habe beruflich > halt viel mit C# zu tun... dann würde ich auch bei C# bleiben, üblich ist es aber nicht.
Würde mich ja auch gern mal in C++ und Qt einarbeiten. Kann man denn mit C# auch grafische Oberflächen auf auf dem Pi laufen lassen?
bass schrieb: > Kann man denn mit > C# auch grafische Oberflächen auf auf dem Pi laufen lassen? WindowsForm sollte gehen http://www.mono-project.com/docs/gui/winforms/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.