PixelHunter Geschrieben December 19, 2021 at 19:06 Geschrieben December 19, 2021 at 19:06 (bearbeitet) using Tinkerforge; string host = "10.10.88.148"; int port = 4223; string uidEPaper = "XRM"; // Change XYZ to the UID of your E-Paper 296x128 Bricklet string uidPctTemp = "V2Z"; IPConnection ipcon = new IPConnection(); // Create IP connection BrickletEPaper296x128 ep = new BrickletEPaper296x128(uidEPaper, ipcon); // Create device object ipcon.Connect(host, port); // Connect to brickd // Don't use device before ipcon is connected ep.Reset(); ep = new(uidEPaper, ipcon); int i = 0; while (true) { if (i == 0) ep.SetUpdateMode(BrickletEPaper296x128.UPDATE_MODE_DEFAULT); else ep.SetUpdateMode(BrickletEPaper296x128.UPDATE_MODE_DELTA); // Use black background ep.FillDisplay(BrickletEPaper296x128.COLOR_BLACK); // Write big white "Hello World" in the middle of the screen ep.DrawText(5, 15, BrickletEPaper296x128.FONT_24X32, BrickletEPaper296x128.COLOR_WHITE, BrickletEPaper296x128.ORIENTATION_HORIZONTAL, $"{DateTime.Now:d}"); ep.DrawText(5, 50, BrickletEPaper296x128.FONT_24X32, BrickletEPaper296x128.COLOR_WHITE, BrickletEPaper296x128.ORIENTATION_HORIZONTAL, $"{DateTime.Now:T}"); ep.Draw(); Thread.Sleep(30000); i++; } ipcon.Disconnect(); Moin, Zum Testen eine Dauerschleife, die die Uhr anzeigt. 1. UPDATE_MODE_DEFAULT, ab 2. UPDATE_MODE_DELTA Das erste Draw klappt wie erwartet. Der Update Modus im 2. Durchlauf versetzt das Bricket dauerhaft in ep.GetDrawStatus() == BrickletEPaper296x128.DRAW_STATUS_COPYING Zustand. Es ist ein ep.Reset() erfoderlich, sonst geht nichts mehr, auch kein UPDATE_MODE_DEFAULT. Mache ich etwas falsch? bearbeitet December 20, 2021 at 13:16 von PixelHunter typo Zitieren
borg Geschrieben December 20, 2021 at 09:43 Geschrieben December 20, 2021 at 09:43 Welche Firmware-Version hat das Bricklet? Hab gerade ins Changelog geschaut und vor Version 2.0.3 gab es einen Bug mit der FillDisplay-Funktion im Deltamodus. Zitieren
PixelHunter Geschrieben December 20, 2021 at 10:24 Autor Geschrieben December 20, 2021 at 10:24 Danke, ich las davon. Ich habe die neuste Version 2.0.4 für das E-Paper Bricklet installiert. Zitieren
PixelHunter Geschrieben December 20, 2021 at 13:12 Autor Geschrieben December 20, 2021 at 13:12 (bearbeitet) Bei weiteren Tests habe ich festgestellt, dass auch im Default Modus nur der erste Draw nach einem Reset funktioniert. Das 2. Draw nach min. 60 Sekunden Pause wird klaglos aktzeptiert, das Bricklet bleibt aber danach im dauerhaft Status Copying. Zeigt kein Flackern und auch sonst keine Reaktion. Die GetSPITFPErrorCount() Werte bleiben aber 0. Ist das normal bei Euch auch so? Ist meine Komponente defekt? bearbeitet December 20, 2021 at 13:14 von PixelHunter Zitieren
rtrbt Geschrieben December 20, 2021 at 13:59 Geschrieben December 20, 2021 at 13:59 Ich habe dein Programm mal getestet, mit dem E-Paper Bricklet hier funktioniert es und der DrawStatus springt auch zurück auf Idle. Trotzdem folgende Fragen: Kannst du mit dem Brick Viewer mehrmals zeichnen? Hast du eventuell mehrere Instanzen von deinem Programm, oder dein Programm und Brick Viewer gleichzeitig laufen und die stören sich gegenseitig? Zitieren
PixelHunter Geschrieben December 20, 2021 at 14:34 Autor Geschrieben December 20, 2021 at 14:34 (bearbeitet) Nein, das Prg. läuft nur in einer Instanz, aber der BrickV läuft auch parallel noch, stört der vielleicht? OK ich teste das. bearbeitet December 20, 2021 at 14:35 von PixelHunter Zitieren
PixelHunter Geschrieben December 20, 2021 at 15:55 Autor Geschrieben December 20, 2021 at 15:55 Danke für den Tipp, leider ohne Erfolg. Das Prg. lief nun sicher alleine ohne BrickV und BrickD. Ich habe mein Testprg. leicht verändert - um die Stati vor und nach dem Draw besser zu sehen: using Tinkerforge; string host = "10.10.88.148"; int port = 4223; string uidEPaper = "XRM"; // Change XYZ to the UID of your E-Paper 296x128 Bricklet string uidPctTemp = "V2Z"; IPConnection ipcon = new IPConnection(); // Create IP connection BrickletEPaper296x128 ep = new BrickletEPaper296x128(uidEPaper, ipcon); // Create device object ipcon.Connect(host, port); // Connect to brickd // Don't use device before ipcon is connected ep.Reset(); ep = new(uidEPaper, ipcon); int i = 0; while (true) { if (i == 0) { ep.SetUpdateMode(BrickletEPaper296x128.UPDATE_MODE_DEFAULT); Console.WriteLine("Mode DEFAULT"); } else { ep.SetUpdateMode(BrickletEPaper296x128.UPDATE_MODE_DELTA); Console.WriteLine("Mode DELTA"); } // Use black background ep.FillDisplay(BrickletEPaper296x128.COLOR_BLACK); // Date and Time ep.DrawText(5, 15, BrickletEPaper296x128.FONT_24X32, BrickletEPaper296x128.COLOR_WHITE, BrickletEPaper296x128.ORIENTATION_HORIZONTAL, $"{DateTime.Now:d}"); ep.DrawText(5, 50, BrickletEPaper296x128.FONT_24X32, BrickletEPaper296x128.COLOR_WHITE, BrickletEPaper296x128.ORIENTATION_HORIZONTAL, $"{DateTime.Now:T}"); Console.WriteLine($"{DateTime.Now:G}"); System.Console.WriteLine($"Before Draw Status: {ep.GetDrawStatus()}"); ep.Draw(); int j = 0; while (j < 100 && ep.GetDrawStatus() == BrickletEPaper296x128.DRAW_STATUS_COPYING) { System.Console.WriteLine($"Wait Idle #{j}, Status: {ep.GetDrawStatus()}"); ep.GetSPITFPErrorCount(out long errorAckChecksum, out long errorCountMessageChecksum, out long errorCountFrame, out long errorCountOverflow); System.Console.WriteLine($"Errors: {errorAckChecksum}, {errorCountMessageChecksum}, {errorCountFrame}, {errorCountOverflow}"); Thread.Sleep(500); j++; } System.Console.WriteLine($"After Draw Status: {ep.GetDrawStatus()}"); Thread.Sleep(30000); i++; } ipcon.Disconnect(); Folgende Ausgabe: Mode DEFAULT 20.12.2021 16:48:41 Before Draw Status: 0 Wait Idle #0, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #1, Status: 1 Errors: 0, 0, 0, 0 After Draw Status: 2 Mode DELTA 20.12.2021 16:49:12Before Draw Status: 0 Wait Idle #0, Status: 1Errors: 0, 0, 0, 0 Wait Idle #1, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #2, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #3, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #4, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #5, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #6, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #7, Status: 1 Errors: 0, 0, 0, 0 Da scheint bei mir mit der Hardware des Bricklets etwas nicht zu stimmen, oder? Zitieren
PixelHunter Geschrieben December 20, 2021 at 16:09 Autor Geschrieben December 20, 2021 at 16:09 vor 2 Stunden schrieb rtrbt: Ich habe dein Programm mal getestet, mit dem E-Paper Bricklet hier funktioniert es und der DrawStatus springt auch zurück auf Idle. Trotzdem folgende Fragen: Kannst du mit dem Brick Viewer mehrmals zeichnen? Der Brick Viewer 2.4.20 kann mehr als einmal zeichnen, wenn ich einmal vorher Resette. Interesannterweise sehe ich vor dem Reset im Buffer der Komponenten im BrickV das zuletzt gezeichnete erfolglose Bild aus meine Prg... Zitieren
rtrbt Geschrieben December 21, 2021 at 08:49 Geschrieben December 21, 2021 at 08:49 Wir haben das Problem gefunden: Der Bug tritt nur bei E-Paper Bricklets auf, die den neueren Treiberchip (den SSD1680) verwenden. Ich hatte hier erst nur mit der alten Version getestet (dem SSD1675A), da klappt auch dein zweites Programm ohne Probleme. Ich bzw. @borg melden uns nochmal, wenn wir mehr wissen. Zitieren
PixelHunter Geschrieben December 21, 2021 at 12:16 Autor Geschrieben December 21, 2021 at 12:16 Danke für die Info, dann warte ich geduldig. Zitieren
borg Geschrieben December 22, 2021 at 08:51 Geschrieben December 22, 2021 at 08:51 Der Hersteller des Displays hatte uns gesagt das wir für den neuen Treiberchip nur die Initialisierung ändern müssen und der Rest ist gleich. Nach genauerem Vergleichen der Datenblätter hat sich jetzt herausgestellt dass die LUT zwischen den beiden Chips eine andere Definition hat. Ich hab das jetzt so angepasst dass der neue Treiber das Verhalten vom alten 1:1 simuliert und werde das gleich auch erst so veröffentlichen nachdem ich noch ein paar Sachen teste: https://github.com/Tinkerforge/e-paper-296x128-bricklet/commit/2970dc3db212401249e1a460370054082f2f1ad2 Auf Dauer können wir das vielleicht noch verbessern, da der neue Treiber viel mehr Konfigurationsmöglichkeiten hat. So sieht das jetzt aus bei mir: https://imgur.com/0vFcxVc 1 Zitieren
PixelHunter Geschrieben December 23, 2021 at 12:42 Autor Geschrieben December 23, 2021 at 12:42 Die Master Bricks habe ich mit der Beta Firmware 2.5.1 geflasht. Leider kann ich die E-Paper Bricklet Firmware nicht auf 2.0.5 updaten: Im BrickV kommt ein Fehler: "Could not read *.zbin file: File is not a zip file" Im GitHub ist der \software\build Ordner leer, sodass ich das auch nicht manuell machen kann ohne mir die gcc Buildumgebung zu installieren, oder? Zitieren
borg Geschrieben December 23, 2021 at 13:00 Geschrieben December 23, 2021 at 13:00 Oh, ich hab ausversehen die Master Brick Firmware hier hochgeladen und auf den Server als E-Paper Bricklet Firmware... Bitte nochmal probieren, hab das gerade korrigiert. Der Bug hier hat nichts mit dem Master Brick zu tun, bin da anscheinend vollkommen durcheinander gekommen mit den Firmwares. Zitieren
PixelHunter Geschrieben December 25, 2021 at 14:48 Autor Geschrieben December 25, 2021 at 14:48 (bearbeitet) Ich habe jetzt die Master Bricks wieder auf die 2.5.0 geflasht. Für das E-Paper Bricklet konnte ich jetzt per BrickV die Firmware 2.0.5 updaten. Leider ist das Verhalten noch unverändert bei mir: Nur ein Draw ist möglich, danach bleibt das E-Paper Bricklet im Status Copying: Zitat Mode DEFAULT 25.12.2021 15:46:44 Before Draw Status: 0 Wait Idle #0, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #1, Status: 1 Errors: 0, 0, 0, 0 After Draw Status: 2 Mode DELTA 25.12.2021 15:47:16 Before Draw Status: 0 Wait Idle #0, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #1, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #2, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #3, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #4, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #5, Status: 1 Errors: 0, 0, 0, 0 Wait Idle #6, Status: 1 Errors: 0, 0, 0, 0 bearbeitet December 25, 2021 at 20:31 von PixelHunter Zitieren
borg Geschrieben December 27, 2021 at 08:52 Geschrieben December 27, 2021 at 08:52 Kannst du nochmal die Firmware im Anhang testen? (Diesmal wirklich im Anhang) e-paper-296x128-bricklet-firmware-2.0.6-beta1.zbin Zitieren
PixelHunter Geschrieben December 27, 2021 at 10:57 Autor Geschrieben December 27, 2021 at 10:57 Das funktioniert jetzt. Danke. Zitieren
borg Geschrieben December 27, 2021 at 11:51 Geschrieben December 27, 2021 at 11:51 Nur um sicher zu gehen das wir jetzt eine komplett funktionierende Konfiguration gefunden haben: Wenn du auf das Display geschrieben hast und dann den Strom abziehst, bleibt das Bild dann 100% korrekt stehen? Oder "fadet" es ein bisschen aus und verliert an Kontrast? Das Bild sollte komplett unverändert bleiben. Zitieren
PixelHunter Geschrieben December 27, 2021 at 13:29 Autor Geschrieben December 27, 2021 at 13:29 (bearbeitet) Für meine Auffassung bleibt das Bild stabil und ohne Kontrastverlust stehen, auch die rote Schrift. bearbeitet December 27, 2021 at 13:30 von PixelHunter Zitieren
borg Geschrieben December 28, 2021 at 13:24 Geschrieben December 28, 2021 at 13:24 Ja das sieht gut aus, besten Dank für die Hilfe! 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.