TouchTFT-Plugin: Lassen wirs raus...

  • ###################################################################################
    Unsere Nutzer werden Furcht und Achtung vor unserer Software haben. Laßt die Software los! Laßt sie los, auf daß die Nutzer wie die Hunde fliehen, die sie sind!


    Irgendwie scheints jetzt tatsächlich zu funktionieren (jedenfalls unter einem SUSE-Testsystem).


    Link Plugin
    Theme:
    Link Theme (conf)


    Zur Installation: Siehe unten im Thread:


    egalax-treiber installieren (Im Kernel 2.6.15: touchkitusb)
    evdev und touchkitusb "modproben"


    Siehe auch touchkit minihowto


    Plugin installieren wie jedes andere auch.


    Bei fehlern: Motzt nicht an Sascha oder Lars rum, die können da gar nix für, auch wenn sie in den Headern auftauchen. Motzt auch nicht an mir rum, ich habs ja nicht böse gemeint ;-).


    Frank


    PS: Hat jemand zufällig die PANINI-Briefmarke?
    ###################################################################################
    Ich habe mir vor geraumer Zeit den Touchscreen von Pollin gekauft und will den jetzt an den LinVDR bringen. Zur Anbindung habe ich das GraphTFT-Plugin und das Powermate-Plugin verheiratet und etwas erweitert.


    Die Porblemstelle ist die Anbindung des Touch-Treibers an LinVDR, da hierfür ein Kernelmodul eingebunden werden muss.


    Mir stellt sich jetzt die Frage, ob ich auf einen eigenen Kernel umsteige oder ob man Dr. Seltsam dazu überreden kann, seinen Kernel um den Touchscreen-Treiber zu erweitern. Also: Wie siehts denn in der Gemeinde so aus mit Touchscreen-TFT's???

  • also


    wenn ich dass richtig sehe, bestand da bei einigen leuten interesse. viele haben die idee, wegen der hürden, dann aber nicht weiterverfolgt.


    Interessiert mich übrigens auch.


    gruß m

  • Ich brauche es zwar noch nicht - aber wenn es ein Plugin gibt würde so ein Touch-TFT ganz nach oben auf meine Einkaufsliste wandern - insofern ein lautes JA :D


    Pit

    VDR2: ASRock J4105-ITX, DVBSky S952, openSUSE Tumbleweed, VDR 2.4.7

    softhddevice/vaapidevice, DFAtmo, xmltv2vdr, tvscraper, tvguideng, VDRAdmin-AM (alles git, aber alt)

  • Hätte ich auch gern ;)


    Robsta


    Hardware: Antec Fusion Remote Black, Asus P5N7A-VM, E5200, Mystique SaTiX-S2 Dual V2, Stereo-Atmo
    TV: Samsung UE32B6000, BenQ W1070
    Software: yaVDR


  • So, ich hab mich mal an den Treiber gemacht. Der Kernel bietet ja einen "touchkitusb", der für die eGalax-Touchkits sein soll. Einmal korrekt installiert rührt sich auch schon mal was im powermate-Teil. Leider weiss ich nicht, wie ich an die Koordinaten des Touchdevices komme. Den eGalax-Treiber möchte ich eigentlich nicht nehmen, da er nicht im Kernel enthalten ist.


    Der Device ist als /dev/input/event3 und /dev/input/mouse1 verfügbar.
    Im Treiber werden die Koordinaten bei eintreten des irq ausgelesen und per input_report_abs zur Verfügung gestellt. Es müsste also in /dev/input/mouse1 zur Verfügung stehen. Da kann ich auch was auslesen, es macht aber keinen Sinn.


    Weiss jemand, wie ich den Device korrekt auslesen kann (Koordinaten und Touchstatus?)

  • Hier im DirectFB-Code ist ein Beispiel dafür:


    http://www.directfb.org/index.php/viewcvs.cgi/DirectFB/inputdrivers/linux_input/linux_input.c?rev=1.47&content-type=text/vnd.viewcvs-markup


    Ich habe dieses Touchscreen-Device (eGalax) in der Version mit PS/2 Anschluß, brauchte einen extra Treiber hierfür: http://lkml.org/lkml/2005/10/10/5


    Unter DirectFB habe ich das zum Testen am Laufen gehabt.
    Die Koordinatenumrechnung nach der Kalibrierung ging ungefähr so

  • ok, soweit gelöst. Jetzt spricht der Touchscreen mit mir.


    Beim Plugin habe ich folgende Lösung implementiert:


    a) Powermate-Anteil: Läuft als eigener Thread, jetzt unter dem Namen TouchScreenDriver. Liest die Event-Schnittstelle aus und ermittelt die Rohkoordinaten. Übertragung der Daten per Methodenaufruf an :


    b)GraphTFT-Anteil:
    Aufgrund der Namenskonflikte habe ich die Bezeichung GraphTFT komplett umbenannt in TouchTFT.
    Das Plugin erweitert die Themestruktur um zwei (eigentlich 4, aber die kommen später) Parameter: "buttonindex" und "key".
    Die "cTouchableObjects" sind zunächst auf Buttons beschränkt. Der key ist der Menübefehl, der dem Button hinterlegt wird. Wenn also ein GraphThemeItem angelegt wird, welches "Touchable" ist, also einen Key ungleich kNone hat, wird es im TouchScreen-Anteil als TouchableObject eingefügt. Bei jedem Clear fürs Display wird die Liste wieder geputzt, da dann die Objekte auf dem Bildschirm wieder neu aufgebaut werden.


    Man sollte also durch die Definition der Theme`s für die einzelnen ThemeItems bestimmen können, welches key vom Touchanteil aufgerufen wird und damit, welcher Befehl dann ausgeführt wird (wie von der Fernbedienung).


    Soweit zur Theorie. Im Trockentest funktioniert das Ganze sogar (Ohne tasächlich prodiktiven VDR mit TextRenderer), aber für den "realen Einsatz" muss ich erstmnal einen eigenen Kernel backen, da ich den touchkitusb-Treiber einbinden muss.


    Wer den gleichen Touchscreen hat und eventuell schon mal probieren will:
    Plugin_hier
    standard-theme


    Nochwas:
    Im Setup gibt man die MIN und MAX-Koordinaten sowie die tatsächliche Bildschirmauflösung zur Zeit noch händisch ein. Eine Autokalibrierung ist angedacht, aber noch nicht implementiert. Wer den blauen Buttoin im Menü drückt, wird in einen Kalibriermodus entlassen, in welchem die Koordinaten auf dem TFT abgefahren werden können. Die Extremwerte werden dann übernommen. Durch erneuten Setup-Aufruf und dortige blaue Taste wird der Kalibriermodus verlassen.

  • Hi Frankman,
    Auja - Interesse ist da.
    Toll das Du Dich der Sache annimmst.
    Ein Graphtft mit Touchscreenunterstützung wäre echt der Hammer.
    Planst Du auch im Menü mit dem Touchscreen zu navigieren - so als
    vollwertigen Ersatz zur Fernbedienung ?


    Vielen Dank für Deinen Einsatz, ich werde die Tage mal versuchen Dein Plugin an den Start zu bringen.


    Jörg

    VDR1: Gigabyteboard, P-IV 1,8GHz, 512 MB Ram, 2x DVB-S FF 1.3(1:mit CAM, 2:als Primärkarte mit AVBoard 1.3), 1*60GB HDD, DVR-109
    Software: SuSE 9.3, Kernel 2.6.15, vdr-1.4.0-bp Plugins: remote, powermate ,text2skin,graphtft,mp3,mplayer,dvd,extrecmenu Addon:dvdconvert-2.0, vdradmin, tvmovie


    VDRHD: ASUS M3N78 PRO, Athlon Dual Core 2, 6GHz,1GB RAM, DVB TT-3200 mit CAM), 320GB HDD
    Software yaVDR 0.1.1 + graphtft

  • Hallo


    Wenn das mal richtig läuft, wäre das eine SEHR feine Sache.
    Vielleicht dann noch ein HOW-TO und die Touchscreen Welt
    ist in Ordnung.
    Super, das sich jemand diesem Thema annimmt.


    Grüsse
    Spookie

    Registrierter VDR - User #1322
    Gepanschtes LinVDR 0.7 mit VDR 1.4.0 MT20050528; Silver Stone Gehäuse; 2x Nexus-s; AMD Duron 1600MHz; 512MB; LiteOn Brenner; Platten: Western Digital 40GB und Hitachi 160GB; 12" TFT über fbtv

  • Zitat

    Originally posted by Frankman
    ok, soweit gelöst. Jetzt spricht der Touchscreen mit mir.


    Wer den gleichen Touchscreen hat und eventuell schon mal probieren will:
    Plugin_hier
    standard-theme


    Wie übersetzt Du das Ding?
    Ich mußte erstmal die angehängten Änderungen im Makefile machen, damit das hier mit vdr-1.3.48 compiliert. Wird die Option -fPIC gesetzt, damit die Warnung:

    Code
    g++ -O3 -Wall -Woverloaded-virtual -shared touchtft.o display.o i18n.o setup.o osd.o theme.o common.o touch.o touchdriver.o memcpy.o cpu_accel.o txtrenderer/txtrenderer.o -o libvdr-touchtft.so
    /usr/lib/gcc/i386-pc-linux-gnu/3.4.5/../../../../i386-pc-linux-gnu/bin/ld: warning: creating a DT_TEXTREL in object.


    verschwindet, so gibt es andere Fehlermeldungen:

    Code
    g++ -O3 -Wall -fPIC -Woverloaded-virtual -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"touchtft"' -DHAVE_TXTRENDERER -DHAVE_FAST_MEMCPY -I/vdr/include -I../../../include -I../../../../../DVB/include -I. -I./imlibrenderer -I./imlibrenderer/fbrenderer -I./imlibrenderer/dvbrenderer -I./dfbrenderer -I./txtrenderer -o cpu_accel.o cpu_accel.c
    cpu_accel.c: In function `uint32_t detect_accel()':
    cpu_accel.c:74: error: can't find a register in class `BREG' while reloading `asm'
    cpu_accel.c:80: error: can't find a register in class `BREG' while reloading `asm'
    cpu_accel.c:91: error: can't find a register in class `BREG' while reloading `asm'
    cpu_accel.c:95: error: can't find a register in class `BREG' while reloading `asm'
    make[1]: *** [cpu_accel.o] Error 1
    make[1]: Leaving directory `/usr/local/src/video/vdr-1.3.48/PLUGINS/src/touchtft-0.0.1'


    Mal sehn ob ich morgen weiter komme und ob das überhaupt mit softdevice funktioniert. Also 2. Anschluß an TV, 1. an miniTFT für Touchscreen.


    Stefan Lucke

  • ... er touched, er reagiert auch schon. er sendet bereits Kommandos an den VDR, ab und zu gibts mal nen Absturz und die Skins müssen überdacht werden. Letzteres gestaltet sich recht aufwändig.


    Mit welchem debugger geht man unter linvdr dem ganzen eigentlich am besten an den Kragen?


    Außerdem ist gerade WM und das Wetter ist gut. Das verzögert zusätzlich... :D


    Der oben genannte Codeschnipsel ist übrigens noch nicht aktualisiert!

  • Hallo,
    bin gerade dabei das PLUGIN für den C´t-VDR zu bauen.


    Brauche noch nen Hinweis wohin das Standard-Theme hingehört?


    Deb-Packet wurde zumindest gerade gebaut und ich fange mal mit den Testen an:-)


    Tschau, Karsten.

    Mein VDR: LianLi-Gehäuse, AMD X2 64 5200+ auf Biostar TA690G, 768MB Ram, 250 GB HD, TT S3200, ne Airstar2 DVB-T und nen Touchpanel:-), Ubuntu Karmic , VDR 1.7.12 Extensionpatch mit x-vdr gebaut.

  • Hallo,
    Selbstantwort: :)
    /var/lib/vdr/plugins/TouchTFT/themes/


    Oki. Plugin löppert tut aber nichts:-(


    Meine Fragen: Muss ich plugin-graphtft deinstallieren oder laufen beide PLugins parallel?


    Das Powermate-Plugin muss nicht separat installiert werden?


    Braucht das touchtft-plugin zum laden irgendwelche Parameter? ...ala Graphtft ?


    Mmmh, ne kurze Howto wäre wirklich nicht schlecht. Viele Unklarheiten um das ganze zu testen :rolleyes:


    Zumindest legt udev mittels touchkitusb das Device /dev/tkpanel0 beim booten selbständig an!


    Tschau, Karsten.

    Mein VDR: LianLi-Gehäuse, AMD X2 64 5200+ auf Biostar TA690G, 768MB Ram, 250 GB HD, TT S3200, ne Airstar2 DVB-T und nen Touchpanel:-), Ubuntu Karmic , VDR 1.7.12 Extensionpatch mit x-vdr gebaut.

  • Hallo,


    ja, ich wäre auch seeehr daran interessiert.

    ----------------------------------------------------------------------
    mein vdr: Celeron 1GHz - 384 MB RAM - MSI 6178 Board -TT 2300S - PVR150 - 120 GB HD - 240x128 GLCD T6963c - FB OfA 7555 mit IR an COM1 - easyvdr 0.5b4
    vdr Keller: M3N78-EM - 2 GB RAM - Athlon X2 235e - Technisat Skystar HD2 - yaVDR 0.1.1
    vdr Eltern: 800 MHz Athlon - 256 MB RAM - Asrock K7S8X Rev. 3.0/BIOS 2.30 - TT 1.6ff - TT budget - 2 X 160 GB Samsung - Pollin 4X27 LCD - FB OfA 7555 - easyvdr 0.5RC1

  • habe auch intresse .. habe das selbe touch - tft von pollin ;)

  • Das ist wiklich genau das was mir noch fehlt! :] Wird das dann mal mit allen TFTs laufen oder ist das ganz speziell für das Pollin-Teil? Also anders gesagt, gibt es da eine standardisierte Schnittstelle?


    Gruß


    Toxic

    Registrierter VDR-User #1275


    VDR-Server: Proxmox 7.1 - LXC Container - Debian 11.5 - eTobi-VDR 2.6.0

    DVB-Hardware: Digital Devices - Cine S2 V5.5 und V6

    VDR-Clients: FireTV Sticks 2 bis 4K Max und Kodi 19.4

  • Also,


    nur, damit die Motivation in dieser motivationsreduzierenden Zeit (Sommer, WM) nicht nachlässt: Auch ich wollte am Samstag Richtung Pollin aufbrechen und mir dort so ein TFT-Display mit VGA-Eingang einverleiben.


    Könnte ich dann auch direkt das mit Touchscreen nehmen :)


    Sollte aus dem Paket -ich hab's mir noch nciht angeschaut- einigermassen klarwerden, wie das ganze zu installieren und zu konfigurieren ist, würde ich dann auch ein kleines HowTo verfassen. Und das auch zwecks besserer Übersichtlichkeit nicht nur hier im Portal in irgendeinem Thread verstecken, sondern direkt auch ins WIKI einstellen.


    Frankman: Kann man das "wirklcih" nur durch die Infos im Paket ans Laufen bringen? Ich meine, ohne jetzt JEDE Zeile Code durchackern zu müssen?


    rael

  • Frankman


    vielleicht habe ich es ueberlesen: von welchem display sprichst du genau? gibt es das noch? was kostet es? wie schliesst man es an? vga oder cvbs?


    danke ize|man

    produktiv: intel dh67bl, sat>ip, octopusnet, 16gig boot-ssd, yavdr 0.6.1, cir lirc
    testing: zotac ion-f itx, 1x tt s2-3600 usb, 8gig boot-ssd, yavdr 0.5 testing
    tv: samsung 75" amp:denon avr-x1300

  • Ist der TM 868 von Pollin. Die Schnittstelle ist USB, das ganze läuft über den evdev und sollte daher auch mit anderen Touchscreens funktionieren. Hier kommts auf den Versuch an. Es gibt wohl nur nicht allzuviele Hersteller. Es wird ein Kernel mit touchkitusb benötigt, der ist derzeit im Dr. Seltsam-Kernel nicht drin.


    Ich setze mich auf jeden Fall in der nächsten zeit wieder dran, die Spiele sind jetzt ja langsam aber sicher seltener...


    Die Installation ist wie bei GraphTFT. Beide Plugins nebeneinander machen keinen Sinn, da das Plugin TouchTFT eine eigenständige Weiterentwicklung des GraphTFT ist. Kurz gesagt, habe ich die Sourcen von GraphTFT und Powermate geklaut, zusammengeführt und mit einem Touchalgorithmus versehen. Ich kann mir sehr gut vorstellen, dass der Touchalgorithmus später (bei serienreife) ins graphTFT-Plugin zurückgeführt wird.


    Die Themes müssen unter $CONF/plugins/TouchTFT/themes angelegt sein. Ein Themeeintrag wird mit einem Zusatz "key" versehen.


    Beispiel:
    Item=MenuButtonOther,x=620,y=170,width=80,height=80,red=255,green=255,blue=255,transperents=255,font=Vera,size=14,align=1,key=0, buttonindex=4;


    Die Items habe ich erweitert um "MenuButtonOther", um beliebige Buttons einzuführen (nicht nur rot, gelb, grün und blau". Die Buttons haben einen Buttonindex (0..3 sind reserviert für r,ge, gr, b). Der Index kann auch noch angehängt werden. Er muss nur eindeutig sein. Über diesen Parameter bin ich mir aber noch nicht ganz schlüssig, ob er nicht automatisiert werden kann. Jedes Item mit einer Ausdehnung x0,y0 - x1,y1 sendet dann bei Touchereignis einen Remote-Befehl per cRemote::Put ab, und zwar genau den, der in key hinterlegt ist.


    Ein weiterer neuer eintrag ist "TouchPoint"
    Item=TouchPoint,x=580,y=5,width=140,height=20,lines=1,font=Vera,size=10,align=1,red=255,green=255,blue=255;


    Ist dieser in einem Menü definiert, erscheint der letzte Touchpunkt auf dem Display als kleiner Punkt. Gut zum Kalibrieren. (Siehe xmin, xmax, ymin und ymax-Parameter)


    Aus keys.h:
    enum eKeys { // "Up" and "Down" must be the first two keys!
    kUp=0,
    kDown=1,
    kMenu=2,
    kOk=3,
    kBack=4,
    kLeft=5,
    kRight=6,
    kRed=7,
    kGreen=8,
    kYellow=9,
    kBlue=10,
    k0=11,
    k1=12,
    k2=13,
    k3=14,
    k4=15,
    k5=16,
    k6=17,
    k7=18,
    k8=19,
    k9=20, // 20
    kInfo=21,
    kPlay=22,
    kPause=23,
    kStop=24,
    kRecord=25,
    kFastFwd=26,
    kFastRew=27,
    kNext=28,
    kPrev=29,
    kPower=30, // 30
    kChanUp=31,
    kChanDn=32,
    kChanPrev=33,
    kVolUp=34,
    kVolDn=35,
    kMute=36,
    kAudio=37,
    kSchedule=38,
    kChannels=39,
    kTimers=40, // 40
    kRecordings=41,
    kSetup=42,
    kCommands=43,
    kUser1=44,
    kUser2=45,
    kUser3=46,
    kUser4=47,
    kUser5=48,
    kUser6=49,
    kUser7=50,
    kUser8=51,
    kUser9=52,
    kNone=53,
    kKbd=54,
    // The following codes are used internally:
    k_Plugin,
    k_Setup,
    // The following flags are OR'd with the above codes:
    k_Repeat = 0x8000,
    k_Release = 0x4000,
    k_Flags = k_Repeat | k_Release,
    };


    Zur Installation ist folgendes notwendig:
    a) Kernel mit touchkitusb und evdev
    b) modprobe touchkitusb und modprobe evdev
    c) Device ermitteln, auf dem der TouchTFT sitzt:
    d) TouchTFT als Plugin mit angeben
    e) im Setup.conf den device einstellen (/dev/input/event3)


    Die setup.conf-Parameter sind weitgehend wie die von graphTFT:
    touchtft.DumpImage = 0
    touchtft.DumpImageX = 720
    touchtft.DumpImageY = 576
    touchtft.DumpRefresh = 5
    touchtft.DvbRefresh = 20
    touchtft.HideMainMenu = 0
    touchtft.Iso2Utf = 1
    touchtft.Level = 2
    touchtft.Logger = 3
    touchtft.OSDMessageTime = 30
    touchtft.OSDOffsetX = 50
    touchtft.OSDOffsetY = 400
    touchtft.ShowMutePermanent = 0
    touchtft.Theme = 0
    touchtft.UseStillPicture = 1
    touchtft.VdrHeight = 5
    touchtft.VdrWidht = 25
    touchtft.VdrX = 0
    touchtft.VdrY = 0


    Neu sind:
    touchtft.xmax = 1875 : Maximal Ausdehnung des Dispalys in Rohkoordinaten
    touchtft.xmin = 162 : Nullpunkt des Dispalys in Rohkoordinaten
    touchtft.ymax = 1931 :: Das gleiche vertikal
    touchtft.ymin = 370
    touchtft.realx = 720 :: Skalierung in Pixel... Wie übersetze ich die Rohkoordinaten in Theme-Koordinaten: x = x0 + (x - x0)/(x1-x0) * xmax
    touchtft.realy = 576
    touchtft.TouchDevice = /dev/input/event3 : Der input-device
    touchtft.maxtouchcount = 1 : Anzahl der Touchevents bis ereignis angenommen wird
    touchtft.entprell_ms = 100 : Entprellzeit: Zeit in ms zwischen zwei Touchereignissen


    Den aktuellen Stand habe ich noch nicht online gestellt, da er offensichtlich noch einen gravierenden Fehler beinhaltet, beim Drücken eines Buttons schmiert der VDR sofort ab.


    Soviel zur Lage,


    heute abend ist erstmal Achtelfinale....

  • Zitat

    Original von Frankman
    Die Themes müssen unter $CONF/plugins/TouchTFT/themes angelegt sein. Ein Themeeintrag wird mit einem Zusatz "key" versehen.


    Morgen


    Kleiner Dreher.


    Code
    $CONF/plugins/TouchTFT/themes != $CONF/plugins/touchTFT/themes
                  ^                                ^


    ------


    Danke, ein Glück das ich noch gewartet habe, mit einem LCD-Display ;D


    MFG Ronny

Jetzt mitmachen!

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