PixelHunter Posted December 19, 2021 at 07:06 PM Share Posted December 19, 2021 at 07:06 PM (edited) 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? Edited December 20, 2021 at 01:16 PM by PixelHunter typo Quote Link to comment Share on other sites More sharing options...
borg Posted December 20, 2021 at 09:43 AM Share Posted December 20, 2021 at 09:43 AM 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. Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 20, 2021 at 10:24 AM Author Share Posted December 20, 2021 at 10:24 AM Danke, ich las davon. Ich habe die neuste Version 2.0.4 für das E-Paper Bricklet installiert. Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 20, 2021 at 01:12 PM Author Share Posted December 20, 2021 at 01:12 PM (edited) 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? Edited December 20, 2021 at 01:14 PM by PixelHunter Quote Link to comment Share on other sites More sharing options...
rtrbt Posted December 20, 2021 at 01:59 PM Share Posted December 20, 2021 at 01:59 PM 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? Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 20, 2021 at 02:34 PM Author Share Posted December 20, 2021 at 02:34 PM (edited) 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. Edited December 20, 2021 at 02:35 PM by PixelHunter Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 20, 2021 at 03:55 PM Author Share Posted December 20, 2021 at 03:55 PM 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? Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 20, 2021 at 04:09 PM Author Share Posted December 20, 2021 at 04:09 PM 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... Quote Link to comment Share on other sites More sharing options...
rtrbt Posted December 21, 2021 at 08:49 AM Share Posted December 21, 2021 at 08:49 AM 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. Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 21, 2021 at 12:16 PM Author Share Posted December 21, 2021 at 12:16 PM Danke für die Info, dann warte ich geduldig. Quote Link to comment Share on other sites More sharing options...
borg Posted December 22, 2021 at 08:51 AM Share Posted December 22, 2021 at 08:51 AM 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 Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 23, 2021 at 12:42 PM Author Share Posted December 23, 2021 at 12:42 PM 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? Quote Link to comment Share on other sites More sharing options...
borg Posted December 23, 2021 at 01:00 PM Share Posted December 23, 2021 at 01:00 PM 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. Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 25, 2021 at 02:48 PM Author Share Posted December 25, 2021 at 02:48 PM (edited) 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 Edited December 25, 2021 at 08:31 PM by PixelHunter Quote Link to comment Share on other sites More sharing options...
borg Posted December 27, 2021 at 08:52 AM Share Posted December 27, 2021 at 08:52 AM Kannst du nochmal die Firmware im Anhang testen? (Diesmal wirklich im Anhang) e-paper-296x128-bricklet-firmware-2.0.6-beta1.zbin Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 27, 2021 at 10:57 AM Author Share Posted December 27, 2021 at 10:57 AM Das funktioniert jetzt. Danke. Quote Link to comment Share on other sites More sharing options...
borg Posted December 27, 2021 at 11:51 AM Share Posted December 27, 2021 at 11:51 AM 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. Quote Link to comment Share on other sites More sharing options...
PixelHunter Posted December 27, 2021 at 01:29 PM Author Share Posted December 27, 2021 at 01:29 PM (edited) Für meine Auffassung bleibt das Bild stabil und ohne Kontrastverlust stehen, auch die rote Schrift. Edited December 27, 2021 at 01:30 PM by PixelHunter Quote Link to comment Share on other sites More sharing options...
borg Posted December 28, 2021 at 01:24 PM Share Posted December 28, 2021 at 01:24 PM Ja das sieht gut aus, besten Dank für die Hilfe! Quote Link to comment Share on other sites More sharing options...
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.