Notice: This forum has been recovered from an old backup, so some content, links, and dates may be outdated. The forum is currently read-only while we restore sign-in and registration functionality. Details

If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.

FB von Hauppauge

Allgemeines zum Thema EventGhost
Tomchieur
Posts: 2
Joined: Thu Oct 25, 2007 2:57 pm

FB von Hauppauge

Post by Tomchieur »

Hallo Miteinander,

ich habe eine Frage:

Wird die FB, die zu meiner TV-Karte (Hauppauge WinTV Nova S+) geh├Ârt von Eventghost ebenfalls unterst├╝tzt.

Ich habe die Hauppauge FB nicht in der Liste gefunden.

Gruß
Tomchieur
Tomchieur
Posts: 2
Joined: Thu Oct 25, 2007 2:57 pm

Re: FB von Hauppauge

Post by Tomchieur »

Gibt es niemanden, der mir zu meiner Frage antworten kann?

Gruß
Tomchieur
Bartman
Plugin Developer
Posts: 881
Joined: Sun Feb 12, 2006 9:03 am

Re: FB von Hauppauge

Post by Bartman »

wahrscheinlich bestenfalls indirekt, indem man die Fernbedienungssoftware von Hauppauge EventGhost mit Startparamter starten lässt.
Prinz
Plugin Developer
Posts: 194
Joined: Mon Apr 07, 2008 4:58 am

Re: FB von Hauppauge

Post by Prinz »

Hallo,

da mir der Weg über den Kommandozeilenaufruf von EventGhost (Parameter -e) zum Anbinden von Fernbedienungen einfach zu träge ist, habe ich für meine Fernbedienung, welche mit der Hauppauge PVR350 mitgeliefert wurde, ein Plugin geschrieben.

Ich vermute, auch f├╝r andere TV-Karten von Hauppauge ist dieses Plugin geeignet.


Das Plugin ist folgendermaßen zu installieren:

1. Auspacken des Plugins ins Plugin-Verzeichnis. Im Plugin-Verzeichnis m├╝sste dann ein Ordner mit dem Namen "HauppaugeIR" liegen.

2. In den "HauppaugeIR"-Ordner muss die Datei "irremote.DLL" aus dem urspr├╝nglichen Hauppauge-Verzeichnis kopiert werden (meist unter "C:\Programme\WinTV" zu finden).

Im HauppaugeIR-Plugin-Verzeichnis m├╝ssten nun folgende Dateien liegen:
- irremote.DLL: Aus dem Hauppauge-Paket
- __init__.py: Das Plugin
- icon.png: Icon f├╝r das Plugin

Wichtig:
Die orginale Hauppauge-IR-Installation wird danach nicht mehr ben├Âtigt. Daher muss zumindest der Aufruf von ir.exe aus dem Auto-Ordner entfernt werden!

Momentan ist die Repeat-Funktion noch nicht eingebaut, da hier die Hardware bzw. der Hauppauge-Treiber zumindest bei der PVR350 keine vernünftige Info liefert. Vielleicht habe ich (oder jemand anders) noch eine Idee, wie man die noch funktionsfähig einbauen kann.


Viel Spaß damit

Gruß
Prinz

EDIT: Plugin wurde gel├Âscht, neuere Version befindet sich weiter hinten.
Last edited by Prinz on Sun Apr 13, 2008 7:00 am, edited 2 times in total.
Mein HTPC:
Mainboard: Gigabyte GA-G33M-DS2R
CPU: Intel E5200
OS: WinXP SP3
Graphic card: NVIDIA GeForce 210 512MB
TV-Cards: 2 * Digital Everywhere FloppyDTV-C, Terratec Cinergy 1200 DVB-C
HTPC software: DVB Viewer / EventGhost
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Re: FB von Hauppauge

Post by Bitmonster »

Gerade mal den Source ├╝berflogen. Sieht nach guter Arbeit aus.

Statt:

Code: Select all

keyHit = self.IR_GetSystemKeyCode(pointer(v), pointer(systemCode), pointer(keyCode) );
sollte auch gehen:

Code: Select all

keyHit = self.IR_GetSystemKeyCode(byref(v), byref(systemCode), byref(keyCode) );
byref ist schneller als eine komplette Pointer-Konvertierung. Kannst du ja mal ausprobieren.

Zu den Repeat-Codes:
Kommen die denn immer wenn sie sollen? Also kriegst du zuerst ein normales Ereignis mit der richtigten Taste und dann etwas unsinnige Repeat-Codes, die aber zumindest aufh├Âren, wenn man die Taste losl├ñsst? Dann sollte sich was machen lassen, weil du nur TriggerEnduringEvent() benutzen brauchst und dann, nachdem die Repeat-Codes aufgeh├Ârt haben, EndLastEvent() (braucht nur einen kleinen Timeout-Timer). Oder gibt es sogar sowas wie einen Stop-Code?

PS: Ich glaube ich sollte Code zum Erzeugen so eines MessageWindow mal in den Core-Code mit aufnehmen. Gibt schon ein paar Plugins, die das brauchen und dann muss nicht jeder das Rad wieder neu erfinden.
Please post software-related questions in the forum - PMs will only be answered, if really private, thanks!
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Re: FB von Hauppauge

Post by Bitmonster »

Ach noch was:
Gibt es da vielleicht einen Registry-Schlüssel, mit dem man die Hauppauge-IR-Installation finden kann? Damit man den dann zum Öffnen der DLL verwenden kann, ohne dass der User sie umkopieren muss. Ich glaube Hauppauge hatte sogar einem anderen Projekt mal die Erlaubnis erteilt die DLL zu verbreiten, aber ich würde es trotzdem gerne vermeiden die DLL mit in den Installer zu packen.
Please post software-related questions in the forum - PMs will only be answered, if really private, thanks!
Prinz
Plugin Developer
Posts: 194
Joined: Mon Apr 07, 2008 4:58 am

Re: FB von Hauppauge

Post by Prinz »

Hallo Bitmonster
Bitmonster wrote: Statt:

Code: Select all

keyHit = self.IR_GetSystemKeyCode(pointer(v), pointer(systemCode), pointer(keyCode) );
sollte auch gehen:

Code: Select all

keyHit = self.IR_GetSystemKeyCode(byref(v), byref(systemCode), byref(keyCode) );
byref ist schneller als eine komplette Pointer-Konvertierung. Kannst du ja mal ausprobieren.
Danke f├╝r den Hinweis. War mir bisher nicht bewusst, da ich durch das Plugin das erste Mal mit Python etwas programmiert habe. Da ich i.A. unter C/C++ programmiere und dort der Unterschied zwischen Pointer und Referenz nur von der Programmierung her gravierend ist (nicht intern), habe ich mir hierzu keine Gedanken gemacht.

Bitmonster wrote: Zu den Repeat-Codes:
Kommen die denn immer wenn sie sollen? Also kriegst du zuerst ein normales Ereignis mit der richtigten Taste und dann etwas unsinnige Repeat-Codes, die aber zumindest aufh├Âren, wenn man die Taste losl├ñsst?
Das ist eben das Problem. Wenn ich die Fernbedienung ständig drücke liefert mir die Methode "IR_GetSystemKeyCode" folgende Infos:
diff = 203 para1 = c_long(0) para2 = c_long(31) para3 = c_long(32)
diff = 204 para1 = c_long(0) para2 = c_long(31) para3 = c_long(32)
diff = 203 para1 = c_long(0) para2 = c_long(31) para3 = c_long(32)
diff = 406 para1 = c_long(2) para2 = c_long(31) para3 = c_long(32)
diff = 203 para1 = c_long(0) para2 = c_long(31) para3 = c_long(32)
diff = 203 para1 = c_long(0) para2 = c_long(31) para3 = c_long(32)
diff = 204 para1 = c_long(0) para2 = c_long(31) para3 = c_long(32)
diff = 406 para1 = c_long(2) para2 = c_long(31) para3 = c_long(32)
diff = 203 para1 = c_long(0) para2 = c_long(31) para3 = c_long(32)
Du siehst also, dass die Erkennung immer mal ins Stottern kommt, obgleich die Taste st├ñndig gedr├╝ckt war (hervorgehobene Stellen). Das mach mir momentan Kopfzerbrechen. Ich wei├ƒ nicht, ob das nur durch meine FB kommt. Ich habe noch die kleine handliche, die mir eigentlich sehr gut gef├ñllt. Eine kontextabh├ñngige FB ist m.E. deutlich einfacher zu bedienen, als die gro├ƒe die momentan bei den Hauppauge-Karten mitgeliefert werden. Der WAF ist bei der kleinen doch deutlich h├Âher. Gerade mit dem EventGhost kann ich die Bedienung sehr gut an meine Bed├╝rfnisse anpassen.
Bitmonster wrote: Gibt es da vielleicht einen Registry-Schl├╝ssel, mit dem man die Hauppauge-IR-Installation finden kann?
Gute Idee, leider habe ich in der Registry keinen Eintrag gefunden, aus dem man den Installationspfad der Fernbedienung erkennen kann. Ich habe aber nur noch den geringst m├Âglichen Teil der Hauppauge-Software installiert.

Ich werde aber noch weiter suchen, ob es noch andere M├Âglichkeiten gibt.

Wenn man die Dll ind Plugin-Verzeichnis kopiert hat, kann man die Hauppauge-IR-Software wieder deinstallieren.

Als Anhang noch eine neue Version mit der obigen Änderung und einem Bugfix (ResetTimer hatte ich vergessen, ist aber laut Hauppauge erforderlich).

Aktuelle Version weiter unten

Gruß
Prinz


PS: Mit welchem Tool kann man eigentlich das Icon direkt in das Plugin einbinden?
Last edited by Prinz on Mon Apr 14, 2008 7:02 pm, edited 2 times in total.
Mein HTPC:
Mainboard: Gigabyte GA-G33M-DS2R
CPU: Intel E5200
OS: WinXP SP3
Graphic card: NVIDIA GeForce 210 512MB
TV-Cards: 2 * Digital Everywhere FloppyDTV-C, Terratec Cinergy 1200 DVB-C
HTPC software: DVB Viewer / EventGhost
Prinz
Plugin Developer
Posts: 194
Joined: Mon Apr 07, 2008 4:58 am

Re: FB von Hauppauge

Post by Prinz »

Hallo,
Prinz wrote:Du siehst also, dass die Erkennung immer mal ins Stottern kommt, obgleich die Taste ständig gedrückt war (hervorgehobene Stellen).
ich habe die Ursache für dieses Problem wohl gefunden. Leider dürfte es sich dabei um ein Hardwareproblem des Empfängers handeln. Trifft das Lesen des IRCodes und der Empfang eines neuen IR-Codes zusammen, wird der neue IR code vergessen. Hier fehlt wohl offensichtich ein Hardwarebuffer.

Meine FB sendet bei gedr├╝ckter Taste alle 109ms den Tastencode. Die Hauppauge-Software fragt alle 200ms die Schnittstelle ab. Nach einer gewissen Zeit gibt es jedoch den oben beschriebenen Konflikt, der erneut gesendete Tastendruck wird nicht erkannt.

Ich werde ├╝berlegen, ob man das Problem doch umgehen kann (Zumindest bei der Repeat-Erkennung).

Interessant wäre es zu wissen, ob dieses Verhalten nur meine äteren PVR 350 Karten zeigen und das Problem bei den neuen Karten behoben ist. Hat da jemand schon Erfahrung?

Das Verhalten kann man am leichtetsten dadurch feststellen, in dem man eine Taste lange gedr├╝ckt h├ñlt, welche beispielsweise in einer Liste den markierten Eintrag weiterschaltet. Durch den Fehler erscheint dieses durchsteppen durch die Tabelle unregelm├ñ├ƒig, dabei treten gr├Â├ƒere Pausen auf.

Gruß
Prinz
Mein HTPC:
Mainboard: Gigabyte GA-G33M-DS2R
CPU: Intel E5200
OS: WinXP SP3
Graphic card: NVIDIA GeForce 210 512MB
TV-Cards: 2 * Digital Everywhere FloppyDTV-C, Terratec Cinergy 1200 DVB-C
HTPC software: DVB Viewer / EventGhost
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Re: FB von Hauppauge

Post by Bitmonster »

Was passiert denn, wenn man IR_GetSystemKeyCode() ├Âfters aufruft als es WM_TIMER Events gibt? Also wenn man einen eigenen Thread aufmacht, der z.B. alle 50ms die Routine pollt. Das Streamzap Plugin l├ñuft auf diese Art.

Und dann k├Ânnte man vielleicht noch die Thread-Priority hochdrehen.
Please post software-related questions in the forum - PMs will only be answered, if really private, thanks!
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Re: FB von Hauppauge

Post by Bitmonster »

Ich hab hier noch was vom Mediaportal Projekt gefunden:
http://www.google.de/codesearch?hl=de&q ... cs&start=1
Dort suchen sie den RegKey:
HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Hauppauge WinTV Infrared Remote
Please post software-related questions in the forum - PMs will only be answered, if really private, thanks!
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Re: FB von Hauppauge

Post by Bitmonster »

Und f├╝r das Icon nehme ich dieses Makro:

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="1375">
    <Macro Name="Convert PNG to Python">
        <Action Name="Convert PNG to Python">
            EventGhost.PythonScript(u'import base64\nimport wx\n\ndef Main():\n    dialog = wx.FileDialog(None, wildcard="PNG files (*.png)|*.png")\n    dialog.ShowModal()\n    filePath = dialog.GetPath()\n    dialog.Destroy()\n    if not filePath:\n        return\n    \n    fd = open(filePath, "rb")\n    data = base64.b64encode(fd.read())\n    fd.close()\n\n    maxLength = 68\n    res = []\n    res.append(\'    icon = (\')\n    for i in range(0, len(data), maxLength):\n        res.append(\'        "%s"\' % data[i:i+maxLength])\n    res.append(\'    )\')\n    eg.result = "\\r\\n".join(res)\n\n\neg.CallWait(Main)\n\n')
        </Action>
        <Action>
            System.SetClipboard(u'{eg.result}')
        </Action>
    </Macro>
</EventGhost>
Please post software-related questions in the forum - PMs will only be answered, if really private, thanks!
Prinz
Plugin Developer
Posts: 194
Joined: Mon Apr 07, 2008 4:58 am

Re: FB von Hauppauge

Post by Prinz »

Hallo,
Bitmonster wrote:Was passiert denn, wenn man IR_GetSystemKeyCode() ├Âfters aufruft als es WM_TIMER Events gibt? Also wenn man einen eigenen Thread aufmacht, der z.B. alle 50ms die Routine pollt. Das Streamzap Plugin l├ñuft auf diese Art.

Und dann k├Ânnte man vielleicht noch die Thread-Priority hochdrehen.
Es gibt sogar einen Registry-Eintrag, mit dem man die Poll-Rate ver├ñndern kann. Leider hat eine Erh├Âhung der Poll-Rate bei meiner PVR350 zwar den Effekt, dass die Reaktionszeit deutlich k├╝rzer wird. Leider f├╝hrt das dazu, dass noch h├ñufiger Tastenbet├ñtigungen einfach verschluckt werden. Bei einer h├Âheren Poll-Rate wird leider auch die Wahrscheinlichkeit gr├Â├ƒer, dass man gerade in dem Zeitfenster auf die Taste dr├╝ckt, in dem durch die Interface-Abfrage der neue Tastendruck einfach ignoriert wird.

Wenn ich die Poll-Rate auf 50ms runtersetze, wird ca. jeder 4. Tastendruck verschluckt, das ist einfach zu hoch.

Anhand dieses Anhaltspunktes liegt die Gr├Â├ƒe dieses Fensters bei ca. 10ms. Bei der urspr├╝nglichen Pollrate von 200ms wird also im Mittel jeder 20 Tastendruck verschluckt.

Das entspricht auch meiner Erfahrung, ich hatte bisher eigentlich immer angenommen, dass ich die Taste nicht richtig gedr├╝ckt hatte. Es scheint hier bei meiner Hardware-Version jedoch ein handfestes Hardwareproblem vorzuliegen, das man leider durch Software nicht umgehen kann.

Ich werd erst mal den Abfrage-Teil und die Poll-Rate so belassen, vielleicht haben neuere Karten oder die anderen Karten von Hauppauge nicht mehr dieses Harwareproblem. Meine PVRs sind aus dem Jahre 2003.

Ich warte daher erst mal auf Erfahrungen anderer User.
Bitmonster wrote: Ich hab hier noch was vom Mediaportal Projekt gefunden:
http://www.google.de/codesearch?hl=de&q ... cs&start=1
Dort suchen sie den RegKey:
HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Hauppauge WinTV Infrared Remote
Danke, das werd ich noch reinbringen und das Icon direkt einbinden.

Gruß
Prinz
Mein HTPC:
Mainboard: Gigabyte GA-G33M-DS2R
CPU: Intel E5200
OS: WinXP SP3
Graphic card: NVIDIA GeForce 210 512MB
TV-Cards: 2 * Digital Everywhere FloppyDTV-C, Terratec Cinergy 1200 DVB-C
HTPC software: DVB Viewer / EventGhost
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Re: FB von Hauppauge

Post by Bitmonster »

Also das wäre ja wirklich erstaunlich, wenn sie eine solche nicht funktionierende DLL verwenden würden. Da muss doch eigentlich irgendwas nicht stimmen. Basiert die Karte auf einem Brooktree Chip? Vielleicht wäre dann der Ansatz etwas:
http://www.eventghost.org/forum/viewtop ... f=10&t=576
Please post software-related questions in the forum - PMs will only be answered, if really private, thanks!
Prinz
Plugin Developer
Posts: 194
Joined: Mon Apr 07, 2008 4:58 am

Re: FB von Hauppauge

Post by Prinz »

Hallo,

das Problem mit dem Verschlucken der Tasten tritt nur bei der Betätigung der gleichen Taste auf. Drücke ich unterschiedliche Tasten, funktioniert es einwandfrei. Daher kann es doch kein Hardwarekonflikt sein. Vielleicht liegt es auch an meiner Fernbedienung.

Ich werde versuchen es mal mit der Emulation der MCE-Fernbedienung ├╝ber die Harmony 525 auszuprobieren. Die MCE Fernbedienung sollte der Hauppauge Empf├ñnger auch erkennen k├Ânnen. Dazu werde ich aber f├╝hestens erst n├ñchstes Wochenende kommen.

Ich habe das Plugin noch etwas verbessert. Nun braucht die Dll nicht mir in das Plugin-Verzeichnis kopiert zu werden (Bitmonster, danke f├╝r den Hinweis) und speziell einen Standby/Resume-Bug gefixt.

Als Anhang daher den aktuellen Stand 1.01

Zur Installation muss man nur noch die Zip-Datei in das Plugin-Verzeichnis vom EventGhost auspacken.

Wichtig ist noch die "Ir.exe" im Autostart-Ordner zu deaktivieren, da diese nicht mehr ben├Âtigt wird.


Gruß
Prinz
Mein HTPC:
Mainboard: Gigabyte GA-G33M-DS2R
CPU: Intel E5200
OS: WinXP SP3
Graphic card: NVIDIA GeForce 210 512MB
TV-Cards: 2 * Digital Everywhere FloppyDTV-C, Terratec Cinergy 1200 DVB-C
HTPC software: DVB Viewer / EventGhost
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Re: FB von Hauppauge

Post by Bitmonster »

Das die MCE geht, halte ich eher f├╝r unwahrscheinlich, denn die benutzen RC6 Codes. Die alten Hauppauge FBs hatten RC5.

Kleinigkeit noch:
Dein Source verwendet Tabs und Spaces zur Einrückung. Das kann bei Python recht fatal enden, da nicht immer klar ist, welche Einrückung man bei Tabs beabsichtigt hat. Fast jeder Editor hat aber eine Option um Spaces statt Tabs zu verwenden und die sollte man einschalten. Für so gelegentliches Editieren von (u.a.) Python Quelltexten, nehme ich z.B. Programmer's Notepad. Der ist noch recht einfach, aber leistungsfähig und Open Source.
Please post software-related questions in the forum - PMs will only be answered, if really private, thanks!
Post Reply