mdm166a (Futaba) Display Treiber Unterschiede Linux zu Windows

  • hallo ,

    in meinem Htpc ist ein Futaba 166a Display verbaut.Welches mit LCDproc (Linux) betrieben wird.Dieses läuft ja soweit ,sehr gut.
    kodinerds.net/index.php/Thread…it-Icon-Anzeige/?pageNo=3


    Das einzige was mich stört ist, das die Uhr z,Zt nicht groß angezeigt wird , in Kodi im Screensavermodus .Egal was man in der LCD.xml einstellt das Ding bleibt stur!.

    Aus 2,5m Entfernung ist bei mir ne Briefmarke größer. Es wäre toll (genial) die ganze Schrift vom Display auf big oder individuell einzustellen ,zur Zeit geht alles nur 2-zeilig .


    Irgend jemand hat das Ding wohl ganz am Anfang auf einen 2-zeilenmodus ,,kastriert,,....
    In dem Display schlummert ja echt Potential .


    Das es auch anders geht:


    Richtig neidisch wurde ich erst durch diesen Beitrag (die Bilder im post#11) hier ( Windows) im :
    kodinerds.net/index.php/Thread…?postID=336291#post336291
    (ist ein ähnliches Display!!! )
    wo, wenn ich es richtig verstanden habe ,man die Auflösung anpassen kann ,was auch bestimmt so beim mdm166a möglich wäre,da man bei dem Treiber sich auch am mdm166a Treiber ,,bedient,,hatte, d.h.passagen aus ihm verwendet wurden.
    Was da so möglich ist .
    lcdhype.condense.de/index.php?showtopic=5311

    Auszug:Update 4.12.16: Es gibt jetzt im Start-Script zwei globale Variablen in denen die Display-Auflösung steht. Die wird überallverwendet.

    Treiber für das Ding ( Windows):
    DM144GINK_Winamp_Kodi.txt

    Wie alles aussehen könnte :
    lcdhype.condense.de/index.php?showtopic=5040

    ----------------------------------------------------------------------------------------------------------------------
    Was ich durch intensive Recherche
    herausgefunden habe das es am Treiber der vorliegt ,wohl ein Fehler gibt. Jetzt habe ich mal verschiedene Treiber für das Futaba mdm166a gesucht um die Unterschiede zu vergleichen was echt nicht leicht ist.Ich kann es jedenfalls nicht(leider)

    Glaubt mir wenn ich es nur Ansatzweiße könnte,
    hätte ich irgendwas getan, kann es leider nicht.Vielleicht findet jemand von euch einen Fehler oder Unterschied bei den Treibern.
    Bei mir geht es um LCDproc.


    Falls mal jemand ein Blick auf die verschiedenen Treiber von dem Display werfen will :

    Treiber von Lcdproc 0.5.7
    lcdproc.txt

    Wie und was ein Treiber in LCDproc beinhalten muss ist hier beschrieben :
    lcdproc.sourceforge.net/docs/current-dev.html#code-style

    Treiber von lcd4linux
    drv_mdm166a.txt

    Mütze1 hat auch einen Treiber für das Futaba mdm166a entwickelt ,er glaube ich war der erste der sich mit dem Display beschäftigt hat.
    http://www.muetze1.de

    Treiber von Mütze1
    muetze1.de/MDM166A_v1.9.0.7_20110218.zip
    Konnte ich nicht öffnen da es dll ist.

    Vielleicht könnt Ihr mir oder uns Alle die das Display nutzen helfen,bei Lösungen.
    Vielleicht ist es ja gar nicht so viel ,würde mich für sachdienliche Hinweise (z.b in Zeile so und so, im Treiber fehlt etwas oder so ) oder
    zu testen jederzeit zur Verfügung stellen.
    Ich weiß das ist enorm viel verlangt darum bitte ich ,höflichst darum.

    Euer

    Bitzer

  • bin gespannt, ich habs nicht hinbekommen.

    Hier mal der Source Code:

    Mediacenter:
    LibreELEC 9.2.3 - Raspberry Pi 4 (4GB)
    Steam Game-Server:
    BitFenix Phenom M - ASRock B250M Pro4 Intel B250 - 16GB Crucial DDR4 - Intel Core i5 7400 - ZOTAC GTX 1050 Ti
    NAS:
    Synology DS218+ - 10GB RAM - TvH Server

  • Hallo ,
    schön das du schreibst noxx ,mit dir hatte ich insgeheim auch gerechnet ,
    ich weiß das du dich schon intensiv bei dem Display bemüht hast . Danke

    Was ich jetzt herausgefunden habe und mich echt wundert ?????

    (Habe mittlerweile ein 2.Display)
    (sehr schlechtes Bild !!) ist noch in der Schutzfolie )
    Mein Display hat ( ich habe es mit der Lupe nachgezählt!!!) Wenn es eine große Zahl schreibt beim abschalten
    15 Punkte ?
    Die ganz unterste Reihe ist leer ???
    in jeder Beschreibung steht es ist ein 96x16 Punkte Display ???
    Der Doppelpunkt in der Uhr hat 4 Punkte
    die max. Breite der Zahl habe ich leider (noch) nicht gemessen.


    seit gestern sagt er auch

    nachdem ich in der /etc/LCDd.conf die big Clock vom Treiber auf after shutdown =no gesetzt habe.

    --------------------------------------------------------------------------------------------------------------------------------------------------
    Was mir jetzt so einfällt ist in Zeile 44

    #define MDM166A_PACKEDSIZE 96*2


    41.#define MDM166A_XSIZE 96
    42,#define MDM166A_YSIZE 16
    43.#define MDM166A_SCREENSIZE MDM166A_XSIZE*MDM166A_YSIZE

    mit Zeile 44 wird es so deute ich es schon auf 2 Zeilenmodus gesetzt.
    44.#define MDM166A_PACKEDSIZE 96*2

    -------------------------------------------------------------------------------------------------------------------------------------------------

    46.#define WIDTH 16
    47.#define HEIGHT 2

    Das muss die Schrift höhe und breite sein ( WAS so nicht sein kann !!! bei allem Schulenglisch width ist breit und height=Höhe!!,oder habe ich da ein blackout) 16 punkte hoch und 2 punkte breit was sich zumindest bei mir im Doppelpunkt der Uhr deckt, ist ja 2punkte breit und 2punkte hoch. die höhe mit 16 punkte habe ich ja nicht da es bei mir ja nur 15punkte sind!??


    ---------------------------------------------------------------------------------------------------------------------------------------------------------


    muss jetzt heute leider aufhören, ein Arbeitskollege meinte ich soll mal ins Rechenzentrum der UNI gehen da gibts ne Sprechstunde,die sollen mir das mal Aufschlüssel (verklickern) .Ich bleibe aber weiterhin am Ball

    bitzer

  • genau das habe ich mir eben auch schon ,beim schreiben eben
    überlegt ,einfach mal height 1 reinschreiben

    nur denke ich das könnte dann wiederum einen ganzen Rattenschwanz
    mit sich nachziehen
    da weiter unten im Code ,sich bestimmt etwas auf die zeile bezieht oder einschliesst....
    ein Versuch wäre es alle mal wert.Danke für den Tipp.

    bitzer

  • Wenn schon dabei bist, mit dem Fortschrittbalken stimmt auch was nicht :)

    Der ist schon bei ca 75%-Filmlänge voll am Anschlag.

    #define CELLWIDTH 6
    #define CELLHEIGHT 8

    evtl die auch verdoppeln

    #define CELLWIDTH 12
    #define CELLHEIGHT 16


    Wenn ich das richtig verstehe, teilt "er" das Display in 16x2 Blöcke auf. Ein Block ist 6x8 Pixel groß.
    Man müsste es nun so einstellen, wie man es haben will

    1. #define WIDTH 16
    2. #define HEIGHT 2
    3. #define CELLWIDTH 6
    4. #define CELLHEIGHT 8

    Mediacenter:
    LibreELEC 9.2.3 - Raspberry Pi 4 (4GB)
    Steam Game-Server:
    BitFenix Phenom M - ASRock B250M Pro4 Intel B250 - 16GB Crucial DDR4 - Intel Core i5 7400 - ZOTAC GTX 1050 Ti
    NAS:
    Synology DS218+ - 10GB RAM - TvH Server

    2 Mal editiert, zuletzt von noxx (16. Dezember 2016 um 12:34)

  • mahlzeit ,noxx

    habe schon rumprobiert gestern ,also Treiber raus und reinkopiert=geht

    Problem: weder mit nano noch mit gedit kann ich den Treiber bearbeiten.


    wenn ich den Treiber rausschmeisse aus Lcdproc und z.b Deinen von oben nehme und ihn dann mit gedit schreibe /verändere und ihn reinkopiere geht nichts ( localhos13xxx irgendwas motzt er rum ) ,meine Idee ne .xml anstatt .so zu machen .


    Mit was kann man mdm166a.so öffnen ?

    Vor dem Rest habe ich mittlerweile keine Bedenken mehr.Werde mal das LCDproc handbuch studieren
    wie man einen Treiber baut ,vielleicht versteht man (ich) dann die Zusammenhänge da besser.

    bitzer

  • du musst an den Quellcode ran
    Hier hatte ich mal was geschrieben
    Futaba (mdm166a) VFD Display mit LCDd/lcdproc 0.5.5 im xbmc mit Icon Anzeige.

    Vor dem kompilieren dann mit nano ändern

    sudo nano ./server/drivers/mdm166a.c
    (Zeile 16)

    Hier auch noch ne Doku zum Treiber
    http://lcdproc.sourcearchive.com/documentation/…mdm166a_8c.html

    Und das Datenblatt zum Display
    http://www.muetze1.de/Futaba%20MDM16…ocol%20v1.2.pdf


    Du solltest aber auch in folgende Dateien reingucken, evtl sind nicht nur aber mdm-code
    Änderungen notwendig, sondern auch an diesen. Gerade bei der Font (glcd_font5x8.h)
    könnte ich mir das vorstellen

    1. #include <stdlib.h>
    2. #include <stdio.h>
    3. #include <string.h>
    4. #include <time.h>
    5. #include <hid.h>
    6. #include "lcd.h"
    7. #include "mdm166a.h"
    8. #include "glcd_font5x8.h"
    9. #include "report.h"

    Mediacenter:
    LibreELEC 9.2.3 - Raspberry Pi 4 (4GB)
    Steam Game-Server:
    BitFenix Phenom M - ASRock B250M Pro4 Intel B250 - 16GB Crucial DDR4 - Intel Core i5 7400 - ZOTAC GTX 1050 Ti
    NAS:
    Synology DS218+ - 10GB RAM - TvH Server

    5 Mal editiert, zuletzt von noxx (16. Dezember 2016 um 14:31)

  • Danke für deinen Tipp kann es nun öffnen und bearbeiten.

    Das spuckt er aus:

    cd lcdproc-0.5.7
    xxx@xxx:~/lcdproc-0.5.7$ cd server/drivers
    xxx@xxx:~/lcdproc-0.5.7/server/drivers$ sudo nano ./mdm166a.c
    [sudo] Passwort für xxxx:
    xxx@xxx:~/lcdproc-0.5.7/server/drivers$ make


    gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I/usr/local/include -fPIC -Wall -O3 -Wno-unused-function -MT mdm166a-mdm166a.o -MD -MP -MF .deps/mdm166a-mdm166a.Tpo -c -o mdm166a-mdm166a.o `test -f 'mdm166a.c' || echo './'`mdm166a.c
    mv -f .deps/mdm166a-mdm166a.Tpo .deps/mdm166a-mdm166a.Po
    gcc -I/usr/local/include -fPIC -Wall -O3 -Wno-unused-function -shared -o mdm166a.so mdm166a-mdm166a.o -lusb -L/usr/local/lib -lhid libLCD.a -ldl


    xxx@xxx:~/lcdproc-0.5.7/server/drivers$ cd
    xxx@xxx:~$ sudo /etc/init.d/LCDd restart
    [ ok ] Restarting LCDd (via systemctl): LCDd.service.


    Egal wo und was ich eingebe Ergebnis --> siehe Bild ?(
    (Stundenlang)


    schwere Kost:

    Spoiler anzeigen


    adv_bignum.h: Schreibt Big-Zahlen


    adv_bignum.hist die Headerdatei für libbignum.a(aus adv_bignum.c), die Big-Zahlen zeigen , einschließlich der Schriftarten für die verschiedenen Displays benötigt alles enthält. (Alle Dateien befinden sich im server/drivers/Verzeichnis.)
    Es gibt nur wenige Anforderungen an die anrufende Treiber:

    • Die folgenden Funktionen müssen durch den Treiber durchgeführt werden: height() die Anzeige der Höhe und somit die maximale Höhe der großen Zahlen zu bestimmen, angezeigt werden. ........................

    Interne Struktur und Funktionen
    Der einzige Zweck lib_adv_bignum()ist es, die beste Display-abhängige Big-Number - Funktion , um zu bestimmen, basierend auf den Werten des Treibers height()und get_free_chars()Funktionen, und es nennen.
    Die Anzeige abhängige Funktionen sind benannt , in denen die Höhe der Anzeige ist in den Zeilen und die Anzahl der verwendeten benutzerdefinierbare Zeichen. Die Bits der Benutzer-Zeichen in gespeichert sind (werfen Sie einen Blick auf die Quelle und Sie werden sehen , was ich meine). (Auf einem Display mit einer von 7 die unterste Zeile gespeichert ist nicht gezeigt.) Während definiert die Platzierung in der großen Zahl. (Eine große Zahl ist immer 3 Zeichen breit und 4 Zeichen hoch. Auf eine große Zahl für 2 Zeile zeigt die zwei unteren Linien sind nicht in Gebrauch ist .)adv_bignum_num_ N_M ()NMstatic char bignumcellheightstatic char num_map
    Wenn vom Benutzer definierbare Zeichen gesetzt werden müssen, der Fahrer set_char()wird Funktion einmal für jeden Benutzer definierbare Zeichen aufgerufen werden.
    Jetzt adv_bignum_write_num()heißt. Diese Funktion stellt die 6 oder 12 Zeichen der großen Zahl der mit dem Treiber in den Framebuffer besteht chr()Funktion


    lib_adv_bignum
    #include "adv_bignum.h"

    MODULE_EXPORT void
    myDriver_num( Driver * drvthis, int x, int num )
    {
    PrivateData *p = drvthis->private_data;
    int do_init = 0;
    if (p->ccmode != CCMODE_BIGNUM){ // Are the custom-characters set up correctly? If not:
    do_init = 1; // Lib_adv_bignum has to set the custom-characters.
    p->ccmode = CCMODE_BIGNUM; // Switch custom-charactermode to bignum.
    }

    // Lib_adv_bignum does everything needed to show the big-numbers.
    lib_adv_bignum(drvthis, x, num, 0, do_init);
    }


    Alles , was übrig bleibt, zu tun ist hinzuzufügen , libbignum.a zu den Libs und adv_bignum.hQuellen des Treibers in der Makefile(oder die Datei , die das erzeugt Makefile).
    Beispiel 4.2. Aktivieren adv_bignum Unterstützung in Makefile.am
    myDriver_LDADD: libLCD.a libbignum.amyDriver_SOURCES: lcd.h lcd_lib.h myDriver.c myDriver.h report.h adv_bignum.h


    /adv_bignum.h

    Spoiler anzeigen


    /** \file server/drivers/adv_bignum.h
    * Library to generate big numbers on displays with different numbers
    * of custom characters.
    */


    /*-
    * Copyright (C) 2006 Stefan Herdler,
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    *
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, write to the Free Software
    * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
    */


    #ifndef ADV_BIGNUM_H
    #define ADV_BIGNUM_H


    /* Bit patterns for creating custom characters */
    #define b_______ 0x00
    #define b______X 0x01
    #define b_____X_ 0x02
    #define b_____XX 0x03
    #define b____X__ 0x04
    #define b____X_X 0x05
    #define b____XX_ 0x06
    #define b____XXX 0x07
    #define b___X___ 0x08
    #define b___X__X 0x09
    #define b___X_X_ 0x0A
    #define b___X_XX 0x0B
    #define b___XX__ 0x0C
    #define b___XX_X 0x0D
    #define b___XXX_ 0x0E
    #define b___XXXX 0x0F
    #define b__X____ 0x10
    #define b__X___X 0x11
    #define b__X__X_ 0x12
    #define b__X__XX 0x13
    #define b__X_X__ 0x14
    #define b__X_X_X 0x15
    #define b__X_XX_ 0x16
    #define b__X_XXX 0x17
    #define b__XX___ 0x18
    #define b__XX__X 0x19
    #define b__XX_X_ 0x1A
    #define b__XX_XX 0x1B
    #define b__XXX__ 0x1C
    #define b__XXX_X 0x1D
    #define b__XXXX_ 0x1E
    #define b__XXXXX 0x1F
    #define b_XXX___ 0x38
    #define b_XXXXXX 0x3F


    void lib_adv_bignum(Driver * drvthis, int x, int num, int offset, int do_init);


    #endif

    1. #include <stdlib.h> ist leer
    2. #include <stdio.h> ist leer
    3. #include <string.h> ist leer
    4. #include <time.h> ist leer
    5. #include <hid.h> ist leer
    6. #include "lcd.h" ist was drin
    7. #include "mdm166a.h" ist was drin
    8. #include "glcd_font5x8.h" ist was drin
    9. #include "report.h" ist was drin

    Entweder hab ich mir was verhuntzt oder klappt es so mit den Zahlen (Werten) verstellen nicht und ist alles viel tiefer im (Programm) System (versteckt).
    weiß jetzt auch nicht, noch mal alles deinstallieren und nochmal versuchen. :?: (mir brummt der Schädel)

    bitzer

  • Habe mich jetzt schon 3 Wochen sehr intensiv mit dem Display ,,beschäftigt,,
    Ergebnis =00.

    Nachdem ich einem Tipp bekam geh mal ins Rechenzentrum der Uni. ,war das Ergebnis ebenfalls = 0
    ( Dachte die könnten mal ein Blick drauf werfen vielleicht springt ja irgend ein Fehler wegen der Big Uhr heraus und umstellen auf 1-Zeilenmodus.Leider können da nur Studenten hin,was ich nicht bin!!.)

    Ich kann kein C und müsste es wohl sehr sehrlangwierig lernen (habe sogar aus Verzweiflung ,,Hello World,, im Selbstversuch mit C gemacht.

    Werde ich wohl einpacken müssen. :/

    Scha(n)de. :(

    Dachte echt am Anfang ein paar Zahlen austauschen das langt , ,,ätschibätsch ,, nix war‘s . ?(
    Auf die schnelle wird das wohl nichts,jedenfalls nicht bei mir.

    Was ich bisher herausgefunden habe:

    Wie alles angefangen hat. VDR
    http://www.vdr-portal.de/board18-vdr-hardware/board11-displays/95381-vfd-mit-usb-anschlu%C3%9F-futaba-mdm166a/?

    Was dann herauskam.VDR
    https://projects.vdr-developer.org/projects/plg-targavfd/wiki

    https://projects.vdr-developer.org/git/vdr-plugin…d0d1d81bb701edd

    hier im setup.c VDR
    https://projects.vdr-developer.org/git/vdr-plugin…d0d1d81bb701edd
    ist die rede von 1oder 2 -Zeilen. Zeile 31-33 und Zeilennummer 148 .


    Es gab mal einen alten Treiber .Lcdproc 0.5.4
    http://lcdproc.sourcearchive.com/documentation/…_8c_source.html


    Was ich noch nicht gemacht habe den Entwickler , Christoph Rasim (christoph@rasim.net) ,von dem Lcdproc Treiber zu kontaktieren ,welcher sich bestimmt nach 6-7 Jahren freut ? Traue mich da aber nicht wie und was soll ich da schreiben.

    Wie so ein Treiber bei Lcdproc aufgebaut wird ( Struktur) (übersetzt mit google!! )

    Spoiler anzeigen


    Typendefinierte Struktur LCD Treiber {


    ////////Vom Treibermodul bereitzustellende Variablen
    //Der Treiberlader sucht nach Symbolen mit diesen Namen!


    //Zeiger auf einen String, der die API-Version beschreibt
    char *api_version;


    // Muss dieser Treiber im Vordergrund stehen ?
    int *stay_in_foreground; = int *bleibe im Vordergrund;


    /Unterstützt dieser Treiber mehrere Instanzen ?
    int *supports_multiple; = int *Unterstützt mehrere;


    // Was alternativ den Funktionsnamen vorangestellt werden soll?
    char **Symbol Präfix;


    ////////Funktionen, die vom Treibermodul bereitgestellt werden


    //// Pflicht Funktionen (Notwendig für alle Treiber)


    // initialisieren Treiber:kehrt zurück >= 0 Auf Erfolg : returns >= 0 on success
    int (*init) (Driver *drvthis);


    //Treiber schließen
    void (*close) (Driver *drvthis);


    ////Wesentliche Ausgabe funktionen (Notwendig für Ausgangstreiber)


    // Erhalten Anzeige Breite / Höhe (In Zeichen; 1-basierend)
    int (*width) (Driver *drvthis);
    int (*height) (Driver *drvthis);


    // Klaren Bildschirm
    void (*clear) (Driver *drvthis);


    // Bildschirminhalt nach LCD ((((spült den Bildschirm auf LCD ???))
    void (*flush) (Driver *drvthis);


    //Schreiben Sie String s an Position (x,y)
    void (*string) (Driver *drvthis, int x, int y, const char *str); ((( string= Zeichenfolge))))


    //Schreiben Sie char c an Position (x,y)
    void (*string) (Driver *drvthis, int x, int y, const char c);


    ////Wesentliche Eingangs funktionen (notwendig für Eingangstreiber)


    //Schlüssel vom Treiber erhalten: Gibt eine Zeichenfolge zurück, die die gedrückte Taste angibt
    const char *(*get_key) (Driver *drvthis); ((get=bekommen))



    ////Erweiterte Ausgangs funktionen (optional; Kern bietet Alternativen)


    // zeichne Eine Bar aus (von ??) Pos (x,y) nach oben / Auf der rechten Füllung Promille von len Zeichen
    void (*vbar) (Driver *drvthis, int x, int y, int len, int promille, int options);
    void (*hbar) (Driver *drvthis, int x, int y, int len, int promille, int options);


    // Anzeige (große) Zahl num in Horizontaler Position
    void (*num) (Driver *drvthis, int x, int num);


    // Herzschlag Zustand; Animiert Herzschlag
    void (*heartbeat) (Driver *drvthis, int state);


    // Zeichnen Sie das benannte Symbol an der Position (x,y)
    int (*icon) (Driver *drvthis, int x, int y, int icon); ((( icon= Symbol ))))


    // Setzen Sie den Cursortyp und verschieben ihn auf Position (x,y)
    void (*cursor) (Driver *drvthis, int x, int y, int type);


    //// Benutzerdefinierte Zeichen funktionen

    // Setzen Sie Sonderzeichen / Erhalten Sie freie Zeichen
    // -Es ist derzeit unklar, wie dieses System genau funktionieren sollte (( HÄ ?))
    // -Die set_char-Funktion erwartet einen einfachen Datenblock mit 1 Byte für jede Pixelzeile
    // (Das sind also 8 Bytes für ein 5x8 char)
    void (*set_char) (Driver *drvthis, int n, unsigned char *dat); (( unsigned=ohne Vorzeichen ))
    int (*get_free_chars) (Driver *drvthis);


    // Erhalten Breite / Höhe einer Zeichenzelle (in Pixeln)
    // - Um den Clients Informationen über die Zellengröße zu geben
    // - Wenn nicht definiert, bietet der Kern Alternativen, die Standardwerte zurückgeben
    int (*cellwidth) (Driver *drvthis);
    int (*cellheight) (Driver *drvthis);


    //// Hardware-Funktionen


    // Erhalten / setzen Sie den Kontrast der Anzeige (((stellen sie den Kontrast des Displays))
    int (*get_contrast) (Driver *drvthis);
    void (*set_contrast) (Driver *drvthis, int promille);


    // Get / setzen Helligkeit für gegebene Hintergrundbeleuchtung
    int (*get_brightness) (Driver *drvthis, int state);
    void (*set_brightness) (Driver *drvthis, int state, int promille); (( brightness=Helligkeit))



    // Hintergrundbeleuchtung einstellen
    void (*backlight) (Driver *drvthis, int state);


    // Ausgang einstellen
    void (*output) (Driver *drvthis, int state);


    //// Informations funktionen
    // Erhalten Sie eine Zeichenfolge, die den Treiber und seine Funktionen beschreibt
    const char * (*get_info) (Driver *drvthis);


    //////// Variablen im Server kern, verfügbar für Treiber


    // Name der Treiberinstanz (Name der Konfigurationsdatei)

    // -Nicht vom Treiber ändern; Betrachten es schreibgeschützt
    // - Der für den Zugriff auf den eigenen Abschnitt des Treibers in der Konfigurationsdatei verwendet werden soll
    char * name;


    // Zeiger auf die privaten Daten der Treiberinstanz
    // - Gefüllt durch den Server durch Aufruf des Speichers_private_ptr()
    // - Der Fahrer sollte Werfen Sie diesen zu seinem eigene private Struktur Zeiger ((HÄ? ))
    void * private_data;


    //////// Variablen im Server kern, verfügbar für Treiber


    // Name der Treiberinstanz (Name der Konfigurationsdatei)
    // - Nicht vom Treiber( ändern !!!) wechseln; Betrachten es schreibgeschützt
    // - Der für den Zugriff auf den eigenen Abschnitt des Treibers in der Konfigurationsdatei verwendet werden soll
    char * name;


    // Zeiger auf die privaten Daten der Treiberinstanz
    // - Gefüllt durch den Server Durch Aufruf von store_private_ptr ()
    // - Sollte der Fahrer dies zu seiner eigenen privaten Struktur Zeiger werfen
    void * private_data;


    //////// Funktionen im Server-Kern, verfügbar für Treiber


    // Speichern Sie einen Zeiger auf die privaten Daten der Treiberinstanz
    int (*store_private_ptr) (struct lcd_logical_driver * driver, void * private_data);

    // Konfigurationsdateifunktionen, die vom Server bereitgestellt werden
    // - Siehe configfile.h für die Verwendung dieser Funktionen
    // - Als sectionname verwenden Sie immer den Treibernamen: drvthis-> name


    short (*config_get_bool) (char * sectionname, char * keyname,
    int skip, short default_value);
    long int (*config_get_int) (char * sectionname, char * keyname,
    int skip, long int default_value);
    double (*config_get_float) (char * sectionname, char * keyname,
    int skip, double default_value);
    const char *(*config_get_string) (char * sectionname, char * keyname,
    int skip, const char * default_value);
    // Returns a string in server memory space.
    // Copy this string.
    int config_has_section (const char *sectionname);
    int config_has_key (const char *sectionname, const char *keyname);


    // Fehlermeldung Funktion
    // - Siehe Treiber / report.h für Details
    void (*report) ( const int level, const char *format, .../*args*/ );



    // Eigenschaften der Anzeige (für Treiber, die sich an andere geladene Treiber anpassen)
    // - Die Rückgabe der Größe eines anderen bereits geladenen Treibers
    // - Wenn noch kein Treiber geladen ist, werden die Rückgabewerte 0 sein
    int (*get_display_width) ();
    int (*get_display_height) ();
    } Driver;

    so wie ich das sehe müsste man den Treiber neu schreiben,
    z.b ,,kodi mdm166a,, nur das nötigste und umschaltbar (einstellbar) 1 oder 2- Zeilenmodus und Big Schrift und Uhr mehr nicht.

    Vielleicht sogar Lcdproc umgehen und es irgendwie ander‘s lösen. Nur wie ???
    ein Skript mit Pfad zum Display nur wird man da wohl wieder ein Treiber brauchen .

    Das coolste wäre ein Addon wo bei aktualisieren (installieren) schon allesmit installiert wird. :thumbup:

    http://www.opendisplaycase.com/kodidisplayinfo-program.html
    so was vielleicht nur umschreiben und pfad eintragen ,keine Ahnung sieht irgendwie ,,leicht aus,,.

    Das habe ich auch noch gefunden .
    http://www.vdr-portal.de/board60-linux/…lcd-kodi-addon/


    so genug geheult.

  • Ja, das ärgert einen maßlos, wenn man schon so weit gekommen ist.
    Ich mache gerade meine ersten konkreten Gehversuche in Python und merke schnell, dass ich einfach zu wenig Basiswissen habe.
    Einfach nen Code ändern bringt nur neue Fehler, die ich nicht wollte.
    Dann googlet und fragt man herum und ist am Ende nur noch weiter weg vom Ziel.
    Tutorials abgearbeitet, Beispiele noch und nöcher durchgeackert und dennoch: Problem nicht lösbar.
    Da ist irgendwo eine Hürde, die weit zurückliegt.
    Während man andere Dinge durch viel ausprobieren und ein paar Anleitungen erlernt und daraus ausreichend Ableitungen schaffen kann,
    hängt man beim Programmieren schnell einfach hoffnungslos fest. Ein Doppelpunkt mit einem Semikolon vertauscht und das war es.

  • Danke don;

    du triffst es auf den Punkt ,

    genau was du schreibst trifft voll zu 100%. aber so was von gemein!

    Ja das Basiswissen fehlt mir halt.
    Genau das ko... mich an und ist ein Ansporn es jetzt noch zu lernen.Zumindest mehr Wissen mir aneignen.

    Was ja der Hammer ist ich wohne ca. 15km vom größten deutschen Softwareunternehmen weg (SAP).Bei mir wohnen sicher ein paar von denen ganz ,,hellen,, in der nähe. Bei der Volkshochschule gibt es auch einen Kurs in C der ist mir aber mit 178 € zu teuer.

    Ob ich das ,,Problem jemals lösen kann ,weiß ich nicht ,aber in ein paar freien Minuten werde ich mich damit befassen.

    Man wird vielleicht doof geboren ,wer doof stirbt ist selber schuld.

    Falls wir nichts mehr von einander hören wünsche ich dir und natürlich allen anderen einen ,,guten Rutsch,,
    mach weiter so und viel Glück mit Python.
    wünscht dir ,,dein,,

    Bitzer wuff wuff

  • Mediacenter:
    LibreELEC 9.2.3 - Raspberry Pi 4 (4GB)
    Steam Game-Server:
    BitFenix Phenom M - ASRock B250M Pro4 Intel B250 - 16GB Crucial DDR4 - Intel Core i5 7400 - ZOTAC GTX 1050 Ti
    NAS:
    Synology DS218+ - 10GB RAM - TvH Server

    Einmal editiert, zuletzt von noxx (3. Januar 2017 um 08:58)

  • Hallo ( an alle ?? !! ) ,

    da ich nun Aufgebe und das Thema für mich erledigt ist ,möchte ich noch einige Informationen los werden,die vielleicht dem ein oder anderen nützlich sein könnten.


    Ein Python script
    http://www.home.unix-ag.org/simon/files/futaba-vfd.py


    Bei Google folgendes eingeben :

    http://forum.team-mediaportal.com/.../mdm166aa_j-pdf.152525/

    da bekommt man das Datenblatt von dem Display leider als pdf wo ich so sonst noch nicht gesehen habe !!!


    auch sehr intressant:

    https://www.codeproject.com/articles/29461…rolling-display


    außer tierischen Frust gab es auch mal was zum schmunzeln.durch einen Austausch von x++ zu y++ koorinaten in der Sektion unten war mal alles spiegelverkehrt .Habe gerade nicht mein Foto zur Hand aber habe es fotografiert.


    void

      drawchar2fb(Driver *drvthis, int x, int y, unsigned char z)

      {

      int font_x, font_y;

      PrivateData *p = drvthis->private_data;

      if (x < 0 || x >= WIDTH || y < 0 || y >= HEIGHT)

      return;

      x++;

      for (font_y = 0; font_y < 8; font_y++) {

      for (font_x = 5; font_x > -1; font_x--) {

      if ((glcd_iso8859_1[z][font_y] & 1 << font_x) == 1 << font_x)

      p->framebuf[x * 6 - 1 - font_x + (y * 8 + font_y) * MDM166A_XSIZE] = 1;

      else

      p->framebuf[x * 6 - 1 - font_x + (y * 8 + font_y) * MDM166A_XSIZE] = 0; }


    Was ich getestet habe ist:

    http://www.vdr-portal.de/board60-linux/…don/index4.html

    Post nr.67 ist hier sehr intressant und habe ich auch so getestet.


    (Falls auf dem System nicht vorhanden: "apt-get install ngrep" im Terminal eingeben )

    • Während XBMC läuft und auf den Screensaver gewartet wird (ich gehe davon aus, dass XBMC via "localhost" auf LCDproc zugreift), folgendes als Root ausführen:
    Source code
    1ngrep -W byline -d lo port 13666
    • Es sollte jetzt die gesamte Kommunikation zwischen XBMC und LCDproc in Rohform dargestellt werden.
    • Wenn der Screensaver aktiv wird, sollte u.a. folgendes auftauchen:
    Source code
    1screen_set xbmc -backlight off
    • Ausserdem sollten von diesem Zeitpunkt an Commands a la
    Source code
    1widget_set xbmc lineBigDigit...


    auftauchen, die die grossen Zahlen aktualisieren.


    Beenden mit strg+c .


    Bei

    http://trac.kodi.tv/ticket/3953 war auch von der big clock im screensavermodus die Rede.


    Natürlich habe ich verschiedene Treiber geentert und um geschrieben mit mehr oder weniger zweifelhaften Ergebnissen .

    Da ich jetzt mein System neu Aufsetze und mir mittlerweile komplett die Zeit dafür fehlt den Treiber neu-bzw. Umzuschreiben beende ich ich meine Arbeit daran und lösche alles was mir mein Pc ,,zumüllt,,ohne euch aber meine bisherigen Ergebnisse vorzuenthalten.

    Glaubt mir ich habe es wirklich versucht.


    Ende.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!