Geschrieben December 19, 2021 at 19:0619. Dez 2021 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:1620. Dez 2021 von PixelHunter typo
Geschrieben December 20, 2021 at 09:4320. Dez 2021 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.
Geschrieben December 20, 2021 at 10:2420. Dez 2021 Autor Danke, ich las davon. Ich habe die neuste Version 2.0.4 für das E-Paper Bricklet installiert.
Geschrieben December 20, 2021 at 13:1220. Dez 2021 Autor 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:1420. Dez 2021 von PixelHunter
Geschrieben December 20, 2021 at 13:5920. Dez 2021 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?
Geschrieben December 20, 2021 at 14:3420. Dez 2021 Autor 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:3520. Dez 2021 von PixelHunter
Geschrieben December 20, 2021 at 15:5520. Dez 2021 Autor 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?
Geschrieben December 20, 2021 at 16:0920. Dez 2021 Autor 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...
Geschrieben December 21, 2021 at 08:4921. Dez 2021 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.
Geschrieben December 21, 2021 at 12:1621. Dez 2021 Autor Danke für die Info, dann warte ich geduldig.
Geschrieben December 22, 2021 at 08:5122. Dez 2021 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
Geschrieben December 23, 2021 at 12:4223. Dez 2021 Autor 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?
Geschrieben December 23, 2021 at 13:0023. Dez 2021 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.
Geschrieben December 25, 2021 at 14:4825. Dez 2021 Autor 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:3125. Dez 2021 von PixelHunter
Geschrieben December 27, 2021 at 08:5227. Dez 2021 Kannst du nochmal die Firmware im Anhang testen? (Diesmal wirklich im Anhang) e-paper-296x128-bricklet-firmware-2.0.6-beta1.zbin
Geschrieben December 27, 2021 at 11:5127. Dez 2021 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.
Geschrieben December 27, 2021 at 13:2927. Dez 2021 Autor Für meine Auffassung bleibt das Bild stabil und ohne Kontrastverlust stehen, auch die rote Schrift. bearbeitet December 27, 2021 at 13:3027. Dez 2021 von PixelHunter
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.