R0lanD Geschrieben December 20, 2014 at 18:38 Geschrieben December 20, 2014 at 18:38 Hallo Community, Folgendes Problem: Ich habe gestern meinen Red Brick erhalten und wollte mal eine ganz einfache Anwendung zum testen schreiben, das einfach die aktuelle Uhrzeit auf dem 20x4 LCD-Display anzeigt. Das ganze funktioniert auch, allerdings nur wenn ich das ganze über meinem Rechner und nur mit dem Master Brick laufen lasse. Sobald ich es auf den Red Brick Hochlade, wird das Programm zwar ausgeführt, das Display reagiert allerdings nicht. Kann es sein das der Brick Deamon auf dem Red Brick dem Display eine andere UID zugewiesen hat als der Master Brick? und wenn ja: wie kann ich jetzt die einzelnen UID Schlüssel auslesen? Sobald der Red Brick im Verbund ist, zeigt mir der Brick Viewer lediglich den Red Brick an, jedoch keine der angeschlossenen Bricklets. Ist das so gewollt? Die Reihenfolge ist folgendermaßen: (Von unten nach oben) Red Brick -> Ethernet Extension -> Master Brick Falls es Relevant sein sollte, hier mal der Code: using System; using Tinkerforge; namespace AktuelleUhrzeit { class Program { const string HOST = "localhost"; const int PORT = 4223; const string UID = "ofR"; static IPConnection verbindung = new IPConnection(); static BrickletLCD20x4 lcd = new BrickletLCD20x4(UID, verbindung); static void Main(string[] args) { verbindung.Connect(HOST, PORT); lcd.ClearDisplay(); lcd.BacklightOn(); while (true) { lcd.WriteLine(1, 6, DateTime.Now.ToLongTimeString()); Console.Clear(); Console.WriteLine(DateTime.Now.ToLongTimeString()); System.Threading.Thread.Sleep(1000); } } } } MfG Zitieren
borg Geschrieben December 20, 2014 at 19:46 Geschrieben December 20, 2014 at 19:46 Wenn du im Brick Viewer unter "Program" dein Programm auswählst, dann bis nach "Logs" Runterscrollst, was steht in den logs? Gab es eine Fehlermeldung? Zitieren
borg Geschrieben December 20, 2014 at 20:05 Geschrieben December 20, 2014 at 20:05 Ich hab es gerade selbst ausprobiert und das mono auf dem RED Brick scheint nicht die korrekte Runtime zu wählen. Hier ist der Error (mono selbst stürzt ab): 2014-12-20T20:51:25.821556+0100 ------------------------------------------------------------------------------- Missing method .ctor in assembly /usr/lib/Tinkerforge.dll, type System.Runtime.Versioning.TargetFrameworkAttribute Can't find custom attr constructor image: /usr/lib/Tinkerforge.dll mtoken: 0x0a00005a * Assertion at class.c:5597, condition `!mono_loader_get_last_error ()' not met Stacktrace: at <unknown> <0xffffffff> at AktuelleUhrzeit.Program..cctor () <0x0001b> at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff> Um das zu fixen kannst du bei deinem hochgeladenem Programm unter "C# Configuration" -> "Mono Options" folgendes hinzufügen: --runtime=v4.0 dann funktioniert es. Wir müssen irgendeine Last-Minute Änderung gemacht haben die das hervorruft, als ich das letzte mal Mono getestet hatte gab es das Problem nicht . Edit: Wir können in der nächsten Brick Viewer Version die runtime einfach auswählbar machen und v4.0 als default setzen (was nahezu immer korrekt sein wird). Edit 2: Falls sich hier jemand mit mono genauer auskennt: Gehe ich richtig in der Annahme das dies ein Bug in der aktuell auf dem RED Brick installierten Mono Version ist und das sich das Problem in Luft auflöst wenn wir das updaten? Zitieren
R0lanD Geschrieben December 21, 2014 at 08:53 Autor Geschrieben December 21, 2014 at 08:53 Also zumindest scheint das Programm jetzt zu laufen. Jedenfalls wird auf dem Terminal die Uhrzeit ausgegeben. Nur das LCD Reagiert nach wie vor nicht. scheinbar hab ich die falsche UID Ist die UID von dem Bricklet die gleiche wie sie im Brick Viewer angezeigt wird? MfG Zitieren
FlyingDoc Geschrieben December 21, 2014 at 09:03 Geschrieben December 21, 2014 at 09:03 Ja. das ist die ID des Bricklt. Zitieren
R0lanD Geschrieben December 21, 2014 at 09:08 Autor Geschrieben December 21, 2014 at 09:08 Hab grad mal in den Logs nachgeschaut, und es scheint ein Problem zu geben: Unhandled Exception: Tinkerforge.NotConnectedException: Exception of type 'Tinkerforge.NotConnectedException' was thrown. at Tinkerforge.IPConnection.SendRequest (System.Byte[] request) [0x00000] in <filename unknown>:0 at Tinkerforge.Device.SendRequest (System.Byte[] request) [0x00000] in <filename unknown>:0 at Tinkerforge.BrickletLCD20x4.WriteLine (Byte line, Byte position, System.String text) [0x00000] in <filename unknown>:0 at AktuelleUhrzeit.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: Tinkerforge.NotConnectedException: Exception of type 'Tinkerforge.NotConnectedException' was thrown. at Tinkerforge.IPConnection.SendRequest (System.Byte[] request) [0x00000] in <filename unknown>:0 at Tinkerforge.Device.SendRequest (System.Byte[] request) [0x00000] in <filename unknown>:0 at Tinkerforge.BrickletLCD20x4.WriteLine (Byte line, Byte position, System.String text) [0x00000] in <filename unknown>:0 at AktuelleUhrzeit.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 Interpretiere ich das jetzt richtig das er die Tinkerforge dll nicht richtig findet? Zitieren
borg Geschrieben December 21, 2014 at 12:03 Geschrieben December 21, 2014 at 12:03 Das Log sagt, dass das Connect fehlgeschlagen ist. Bei mir funktioniert dein Programm so wie du es gepostet hattest. Hast du den Host weiterhin auf "localhost" und den Port auf 4223? Zitieren
R0lanD Geschrieben December 21, 2014 at 12:50 Autor Geschrieben December 21, 2014 at 12:50 Ja. Aber wie bereits erwähnt bekommt das Display keine Anweisung. Im Log wird auch kein Fehler oder ähnliches ausgegeben. Ich bin wirklich ratlos Edit: ich habe gerade diesen Thread gelesen: http://www.tinkerunity.org/forum/index.php/topic,2698.0.html Ich habe das selbe Problem. Sobald das RFID Bricklet abgezogen ist, läuft alles, auch mein Programm. Woran kann das liegen? Edit2: Und noch etwas. Weißt zufällig jemand wie ich auf das Deutsche Zeitformat umstelle? Es wird mir nämlich im Englischen Format angezeigt... Zitieren
borg Geschrieben December 21, 2014 at 13:10 Geschrieben December 21, 2014 at 13:10 Oh wow, d.h. es gibt wirklich ein Problem mit dem NFC/RFID Bricklet? Warum kann ich das hier nicht reproduzieren, mmmh.... Zum Thema Uhrzeit: http://msdn.microsoft.com/de-de/library/system.datetime.tolongtimestring(v=vs.110).aspx Zitieren
R0lanD Geschrieben December 21, 2014 at 13:36 Autor Geschrieben December 21, 2014 at 13:36 Vielen Dank. Hat funktioniert. Hatte bereits die Vermutung das es an der Kultur Einstellung liegt. Scheinbar muss man das bei Mono angeben. Beim Normalen .NET Framework ist so eine explizite Angabe nicht notwendig. Zitieren
borg Geschrieben December 21, 2014 at 13:39 Geschrieben December 21, 2014 at 13:39 Der Unterschied ist, das die Default-Sprache auf dem RED Brick Englisch ist, während die Default-Sprache auf deinem PC Deutsch ist. Wenn du eine "Englische Windows Version" auf deinem PC installierst wird die Datumsausgabe auch Standardmäßig englisch sein . Hat also in dem Sinne nichts mit Mono zu tun. Zitieren
borg Geschrieben December 22, 2014 at 14:39 Geschrieben December 22, 2014 at 14:39 Wir haben das Problem jetzt verstanden, es tritt auf wenn die Tinkerforge.dll mit CLR 4.0 gebaut ist, die .exe die auf das RED Brick geladen wird aber mit CLR 2.0. Die Lösung ist ganz einfach, wir bauen die Tinkerforge.dll wieder mit CLR 2.0. Andersherum gibt es dieses Problem nämlich nicht. Das ist dann im nächsten Image gefixt (welches wir heute noch releasen). Zitieren
R0lanD Geschrieben December 22, 2014 at 18:17 Autor Geschrieben December 22, 2014 at 18:17 Sicher das es daran liegt? Ich habe nämlich die .exe die ich Hochlade auf das Zielframework 4.5.1 übersetzt. Aber wenn es dann dennoch funktioniert schreib ich das Projekt auf Basis von 2.0. Normal Benötige ich keine Funktionen > 2.0. MfG Zitieren
borg Geschrieben December 22, 2014 at 18:39 Geschrieben December 22, 2014 at 18:39 Nein, du musst nichts auf 2.0 umstellen. Die aktuelle Tinkerforge.dll sollte mit .exe in CLR 2.0 und CLR 4.0 funktionieren. Zum testen kannst du die Tinkerforge.dll aus diesem zip http://download.tinkerforge.com/bindings/csharp/tinkerforge_csharp_bindings_2_1_5.zip einfach neben deiner .exe auf das RED Brick hochladen (und das --runtime=v4.0 wieder entfernen). Es sollte dann gehen. Um das Systemweit zu haben musst du die alte .dll in /usr/tinkerforge/bindings/csharp/ überschreiben. Zitieren
R0lanD Geschrieben December 22, 2014 at 18:49 Autor Geschrieben December 22, 2014 at 18:49 Den besagten Parameter hab ich schon länger nicht mehr drin. Das hat auch vorher schon ohne funktioniert, aber halt nur wenn das RFID Bricklet nicht im Verbund war Deshalb dachte ich war vielleicht wirklich nur der Fehler in der Firmware schuld das es anfangs bei mir nicht funktioniert hat... Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.