DVB Dream

0
0
Forum übersicht » Developer Zone Alles als alt markieren Forum Rangliste Forum durchsuchen Forum Journal Forum übersicht Forum Hilfe Neuen Account Erstellen Anmelden
Forum
..:: Developer Zone ::..

[Neu] [Ungelesen] [Favoriten] [Aktive]
16848 Beiträge & 3060 Themen in 16 Kategorien

Remote auslesen mit IRRemote.dll (Hauppauge)
Seite (1): (1)
Vorheriges Thema Nächstes Thema
[ Zufalls Thema ]
Medien: 1    Bekanntheit: 0%    Favoriten: 1    Wertung: 0,0   
BewertungssterneBewertungssterneBewertungssterneBewertungssterneBewertungssterne
Beiträge 8    Besucher: 6    Benachrichtigen: 1    Stimmen: 0   
Besuche: 11471   
0%
   
Benutzer: 5    Gesamt: 0,0   
Autor
Beitrag
BhaaL ist offline BhaaL  
Remote auslesen mit IRRemote.dll (Hauppauge) 28.07.2007 - 23:43
Mitglied seit 28.07.2007
Neuling
Posts: 47
Sodala!
Nachdem die Hauppauge WinTV Nova-S-Plus Remote per default nicht unterstützt wird (wies scheint), hab ich mich mal selber an die Arbeit gemacht. Standardmäßig kommt die Nova-S mit WinTV2000, und dem netten kleinen Tool Ir.exe. Das Ding benutzt die irremote.dll, und das können wir auch!

Die irremote.dll exportiert unter anderem folgende Funktionen:
Zitat
// öffnet das IR Device
// HWND hWnd: window handle des owners
// unsigned int someConst: keine Ahnung, wird immer als 0x400 übergeben
// unsigned int verboseLevel: 0 für Ruhe, 1 für paar Message Boxes
// unsigned short devicePort: Art des Sensors
// der Returnwert gibt an, obs funktioniert hat oder nicht
bool __stdcall *IR_Open(HWND hWnd, unsigned int someConst, unsigned int verboseLevel, unsigned short devicePort);
// schließt ein zuvor geöffnetes IR Device
// der Returnwert gibt an, obs funktioniert hat oder nicht
bool __stdcall *IR_Close();
// schaltet den Sensor aus/ein, falls man das Ding mal temporär starten/stoppen will
// unsigned short onOff: 0x12 für an, 0x34 für aus
// der Returnwert gibt an, obs funktioniert hat oder nicht
bool __stdcall *IR_Power(unsigned short onOff);
// returnt die Version des IR Devices
unsigned int __stdcall *IR_GetVersion();
// die beiden Funcs returnen einen Code, der sich aus Remote und Key zusammensetzt
// unsigned char repeatCount: ref Parameter, wird intern runter gezählt
// ist ne Taste gedrückt, wird repeatCount auf 0 gesetzt
// der Returnwert gibt einen gemischten Code aus Remote und Key an,
// der durch IR_GetSystemKeyCode schön handlich aufgeteilt wird. 0x1FFF wenn nichts gedrückt wurde.
unsigned short __stdcall *IR_GetKeyCode(unsigned char &repeatCount);
unsigned short __stdcall *IR_GetKeyCodeEx(unsigned char &repeatCount);
// diese Func returnt alle möglichen Daten in nem verarbeitbaren Format
// unsigned char repeatCount: ref Parameter, siehe oben
// unsigned char remoteUsed: ref Parameter, sagt uns welche Fernbedienung den Key gesendet hat
// unsigned char remoteKey: ref Parameter, der Code vom gedrückten Key
// der Returnwert gibt an, ob etwas gedrückt wurde oder nicht
bool __stdcall IR_GetSystemKeyCode(unsigned char &repeatCount, unsigned char &remoteUsed, unsigned char &remoteKey);



Meine Remote (Remote Type 0) schickt folgende Keys zurück:
Zitat
#define RK_NUM_0 0
#define RK_NUM_1 1
#define RK_NUM_2 2
#define RK_NUM_3 3
#define RK_NUM_4 4
#define RK_NUM_5 5
#define RK_NUM_6 6
#define RK_NUM_7 7
#define RK_NUM_8 8
#define RK_NUM_9 9
#define RK_ASTERISK 10
#define RK_HASH 14
#define RK_COL_RED 11
#define RK_COL_BLUE 41
#define RK_COL_GREEN 46
#define RK_COL_YELLOW 56
#define RK_RADIO 12
#define RK_VIDEOS 24
#define RK_MUSIC 25
#define RK_PICTURES 26
#define RK_TV 28
#define RK_MENU 13
#define RK_GUIDE 27
#define RK_EXIT 31
#define RK_MUTE 15
#define RK_VOL_UP 16
#define RK_VOL_DOWN 17
#define RK_CHAN_PREV 18
#define RK_CHAN_UP 32
#define RK_CHAN_DOWN 33
#define RK_END 30
#define RK_BEGINNING 36
#define RK_KEY_UP 20
#define RK_KEY_DOWN 21
#define RK_KEY_LEFT 22
#define RK_KEY_RIGHT 23
#define RK_KEY_OK 37
#define RK_PAUSE 48
#define RK_REPLAY 50
#define RK_SKIP 52
#define RK_PLAY 53
#define RK_STOP 54
#define RK_RECORD 55
#define RK_POWER 61


Warum ein paar Codes fehlen kann ich mir net wirklich erklären, mehr Tasten hat das Ding net glücklich
Für die PVR/2 kann ich keine Liste machen, weil ich nur eine normale Modern WinTV Remote habe.

Example Code hängt unten am Post, wenn alles gut geht bau ich ein Plugin für DDzwinkern
(Die irremote.dll müsst ihr ins Verzeichnis der Example App kopieren, zu finden in eurem WinTV Ordner)

Edit: (code)-BBTags kaputt, durch Quote ersetzt


Der Beitrag wurde 2 mal editiert, zuletzt von BhaaL am 29.07.2007 - 18:07.
Diesen Beitrag melden   Instant Message an BhaaL senden BhaaL zu Deiner Freundesliste hinzufügen
Beitrags Anhang ir_test.zip anzeigen ir_test.zip (3 KB, 77 Abrufe)
Nach oben
ScanMan ist offline ScanMan  
29.07.2007 - 14:48



ScanMan`s alternatives Ego
Mitglied seit 08.09.2006
Forenlegende
Posts: 2228
Das sieht ja schon mal nicht schlecht aus !
Leider kann ich da nur in so weit helfen, zu sagen wie ich es machen würde, wenn ich so eine Karte mit FB hätte:
1)
Erst mal ein kleines Stand-Alone-Tool basteln, mit dem ich sicher die FB-Codes auslesen. kann. Z.B. über einen Timer periodisch alle 100-200 mS den Status abfragen.
2)
Mit den empfangenen Tastencodes und einer Art Übersetzungstabelle aus der DD-SDK die entsprechenden Tastencodes zuweisen.
3)
Das ganze dann in ein PlugIn-Gerüst schrauben und dann nach jedem empfangen Tastencode einfach ein SendMessage an DD - Fertig.
Ob das Plugin ein Fenster hat oder nicht, scheint insofern egal, das man es ja nicht öffnen muss...

Was ich allerdings ein wenig störend finde: Es werden z.Zt. nur 47 'Tasten' unterstützt und davon auch nicht alle mit Sinn.
Ich hatte mal angefangen etwas zu basteln, was nach einem Tastendruck der FB ein Keyboardsignal auslöäsen soll - also so als wenn man DD mit Tastatur bedient.
Dann könnte man damit erheblich mehr HotKeys von DD nutzen und in geöffnete Fenster mit der FB ala SMS auch einen Text schreiben (na ja...).
Allerdings hakte das derzeit stark und ich habe das noch nicht weiter verfolgt. Werde mich da mal wieder dransetzen.
Übrigens bräuchte man das dann nicht als Plugin ausführen, sondern als ganz normales Programm. Und ander Soft auf dem Rechner könnte man dann damit auch steuern - wenn man den richtigen Fenster-Handle hat.

Vielleicht hat jemand ja Lust mit mir etwas zusammen zu proggen ?

PS: Ich mache hier nur mit Delphi V 7. C ist für mich recht kryptisch und umschreiben nach Delphi kostet mich immer irre viel Zeit.

smoke ScanMan
Diesen Beitrag melden   Instant Message an ScanMan senden ScanMan zu Deiner Freundesliste hinzufügen
Nach oben
BhaaL ist offline BhaaL  
29.07.2007 - 15:05
Mitglied seit 28.07.2007
Neuling
Posts: 47
Jo, ich bastel hier grade an ner Standalone App. Nur isses sinnvoll, da ein Plugin draus zu machen, wenn ichs für andere Sachen benutzen will wird das sowiso davon unabhängig geschehen.

Für die Delphianer unter uns:zwinkern
Zitat
function IR_Open(hWnd: HWND; someConst: LongInt; verboseLevel: LongInt; devicePort: Word) : Boolean; stdcall external 'irremote.dll'
procedure IR_Close; stdcall external 'irremote.dll'
function IR_Power(onOff: Word) : Boolean; stdcall external 'irremote.dll'
function IR_GetVersion : LongInt; stdcall external 'irremote.dll'
function IR_GetKeyCode(var repeatCount: Byte) : Word; stdcall external 'irremote.dll'
function IR_GetKeyCodeEx(var repeatCount: Byte) : Word; stdcall external 'irremote.dll'
function IR_GetSystemKeyCode(var repeatCount: Byte; var remoteUsed: Byte; var remoteKey: Byte) : Boolean; stdcall external 'irremote.dll'


Nicht getestet, sollte aber funktionieren. Die Get(System)KeyCode(Ex) Parameter müssen halt Pointer seinzwinkern


Der Beitrag wurde 4 mal editiert, zuletzt von BhaaL am 29.07.2007 - 18:29.
Diesen Beitrag melden   Instant Message an BhaaL senden BhaaL zu Deiner Freundesliste hinzufügen
Nach oben
ScanMan ist offline ScanMan  
29.07.2007 - 16:02



ScanMan`s alternatives Ego
Mitglied seit 08.09.2006
Forenlegende
Posts: 2228
So würde ich es umschreiben:

function IR_Open(Windowh : hWnd; someConst: cardinal; verboseLevel: cardinal; devicePort: word) : boolean; stdcall external 'irremote.dll' name 'IR_Open';
function IR_Close() : boolean; stdcall external 'irremote.dll' name 'IR_Close';
function IR_Power(onOff : word) : boolean; stdcall external 'irremote.dll' name 'IR_Power';
function IR_GetVersion() : cardinal; stdcall external 'irremote.dll' name 'IR_GetVersion';
function IR_GetKeyCode(var repeatCount : byte) : word; stdcall external 'irremote.dll' name'IR_GetKeyCode';
function IR_GetKeyCodeEx(var repeatCount : byte) : word; stdcall external 'irremote.dll' name 'IR_GetKeyCodeEx';
function IR_GetSystemKeyCode(var repeatCount : byte; var remoteUsed : byte; var remoteKey : byte) : boolean; stdcall external 'irremote.dll' name'IR_GetSystemKeyCode';

Die Funktionen GetKeyCode, GetKeyCodeEx und GetSystemKey müssen dann mit vorher deklarierten Variablen des entsaprechenden Typs aufgerufen werden und der Wert steht dann anschließend da drin.

Schreibst du das in C oder Delphi ?

smoke ScanMan
Diesen Beitrag melden   Instant Message an ScanMan senden ScanMan zu Deiner Freundesliste hinzufügen
Nach oben
BhaaL ist offline BhaaL  
29.07.2007 - 17:19
Mitglied seit 28.07.2007
Neuling
Posts: 47
Huch, bin wohl ein bisschen eingerostet in Delphi :>

GetKeyCode und GetKeyCodeEx rufst du mit nem Counter-wert auf, zb 100. Der zählt intern dann runter (und gibt für nicht erfolgreiche Aufrufe ein 0x1FFF bzw $1FFF zurück). Kannst du benutzen, um beispielsweise 100 Durchläufe zu machen, und dann abzubrechen; wenn eine Taste gedrückt wurde, wird der Wert auch auf 0 gesetzt.
Der Rückgabewert der beiden ist so ne Mischung aus Remote Type (welche Fernbedienung das war), welche Taste gedrückt wurde und ein paar intern verwendeten Sachen, die uns nicht interessieren. Der Remote Type wäre (returnWert and $1F), die gedrückte Taste ((returnWert shr 7) and $7F).
GetSystemKeyCode übernimmt das ganze für dich, und gibt Remote Type bzw. Key Code in den jeweiligen Parametern zurück, analog mit dem Counter. Der Returnwert is brauchbarer, true = Taste gedrückt, false = keine Taste.
Dachte Anfangs die GetKeyCode/Ex Funktionen sind wichtiger, aber die GetSystemKeyCode func macht das ganze wesentlich einfacher.

Bin momentan dabei, meine C++ GUI-Klassen ein wenig auszubauen, von daher werd ich erst mal auf der C-Schiene bleiben. Wenns nix wird kann ich ja immer noch rüber zu Delphi, is ja net viel Aufwand.
Hab dir btw ne Mail geschickt.

Mfg BhaaL
Diesen Beitrag melden   Instant Message an BhaaL senden BhaaL zu Deiner Freundesliste hinzufügen
Nach oben
2undefined ist offline 2undefined  
08.07.2008 - 02:03
Mitglied seit 08.07.2008
Einmalposter
Posts: 1
Hat sich hier etwas getan? Falls nicht, werde ich das Ding in den kommenden Semesterferien proggen, da es mich etwas ärgert, meine Fernbedienung nicht nutzen zu können.

MfG!
Diesen Beitrag melden   Instant Message an 2undefined senden 2undefined zu Deiner Freundesliste hinzufügen
Nach oben
void ist offline void  
18.04.2009 - 22:38
Mitglied seit 18.04.2009
Einmalposter
Posts: 1
Wollte mal hören ob das ganze hier noch jemanden interessiert.
Ich habe den source mal ausprobiert - leider bekomme ich immer die nachricht "Could not open device".

Könnte es sein das es an dem devicePort liegt ? habe alle aufgeführten varianten ausprobiert.
Auch Auto detect konnte mir nicht weiterhelfen (Habe eine Hauppauge Win TV HD DVB-S )
Diesen Beitrag melden   Instant Message an void senden void zu Deiner Freundesliste hinzufügen
Nach oben
tomix ist offline tomix  
18.06.2009 - 19:31
Mitglied seit 18.06.2009
Einmalposter
Posts: 1
habe das gleiche Problem.

allerdings hab ich auch die NOVA-S-Plus

EDIT:
Fehler gefunden:
Ir.exe darf nicht mehr laufen!


Der Beitrag wurde 1 mal editiert, zuletzt von tomix am 18.06.2009 - 19:48.
Diesen Beitrag melden   Instant Message an tomix senden tomix zu Deiner Freundesliste hinzufügen
Nach oben
[Baum Struktur] [ Signaturen anzeigen ] [ Benutzer Info anzeigen] [ Medien anzeigen] [Zufalls Thema] [vorheriges Thema] [nächstes Thema]
Seite (1): (1)
Gehe nach:  
Es ist / sind gerade kein registrierte(r) Benutzer und 47 Gäste online. Neuester Benutzer: hugomontenegro
Mit 580 Besuchern waren am 06.01.2010 - 18:31 die meisten Besucher gleichzeitig online.


 Administrator   Moderator   Member   User
  Add to Google  


[Neu] [Gelesen] [Ungelesen] [Erstellt] [Beiträge] [Favoriten] [Mitteilung] [Aktiv] [Topliste] [Das Team] [Forum-Hilfe] [Medien Rangliste] [Benutzer Rangliste]
Alles gute zum Geburtstag    Wir gratulieren ganz Herzlich zum Geburtstag:
heinerle1960 (52), trolli02 (68), revolmaps (47), anwireg (62), BerndFVD (56), BlaZoR (25), buttermilch1704 (45), Sille (25), John_Archer (46), djvienyl (28), Dogidog2001 (44), Anneliese (53), mjonat007 (65), gompie1 (35), nubira25 (33), nokia2002 (38), Chevy Van (47), Bemmy02 (47), rokoblitz (55), levy (27), fethiyeli (48), blaauw (70)
0
0
0
0
- DVBDREAM.DE wird gesponsort von Daten.de Partnersuche mit Erfolg -
Computer
erstellt mit PHPKIT Version 1.6.03 © 2002 - 2003 by moonrise
C.C.P. 1.9.1 by www.phpkit.at