Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 18.07.06 22:33 
Hallo,

ich habe eine X10 FB und habe von der auch ein Interface (dll) mein Programm fängt die Kommandos jetzt ab.
Wie könnte ich eine Trainingsfunktion programmieren?

Ich habe z,B. eine DVB-S Karte und habe in der GlobeTV anwendung die Buttons für ChanelUp u. ChanelDown.
Jetzt habe ich gedacht machste so, wenn ich an der FB Taste drücke für ChanelUp dann klicke ich sofort auch
in der Anwendung ChanelUp und erfasse es,

nur das Problem ist ja dass die Buttons nicht immer zu sehen sind, z.B. bei Vollbild TV. Würde in dem Fall die
Funktion ausgeführt?

Wird bei einer FB mit Trainingsfunktion - Training on Click - angewendet und die IDs der Buttons in der Anwendung
erfasst, oder läufts anders?
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 19.07.06 08:31 
Das ist ebend das Problem bei Windows, es gibt keine wirkliche Abstraktion Taste-Funktion. Außer vielleicht bei den Tasten von Multimedia-Tastaturen(Vorwärts,Rückwärts,Laut,Leise,...) aber da ist es höchst unterschiedlich ob a) die gerade aktive Anwendung darauf reagiert oder b) sich eine mitgelieferte Anwendung die krallt.

Normalerweise funktioniert das lediglich so, dass man den Benutzer auffordert, die Taste auf der Fernbedienung zu drücken und dann ihn eine an die aktive Anwendung zu sendende Tastenkombination/Windows Message auswählen lässt. Das funktioniert aber nicht immer 100%ig sauber weil es ebend 1000 Wege gibt wie Programmierer irgendetwas in ihrer Anwendung eingebaut haben könnten. Ich glaube die Tutorials von user profile iconAssarbard und Suche in: Delphi-Forum, Delphi-Library SENDKEY sind da ganz nützlich.

Ansonsten schau dir mal Suche bei Google GIRDER an oder such bei www.efb.nu mal nach "Fernbedienung"...
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mi 19.07.06 10:19 
Ich habe dvbcap.dll im Driver unterverzeichnis entdeckt. Kann ich die irgendwie wie auch die x10Interface.dll als ActiveX
in meine Anwendung einbinden? Oder muß ich zum Treiber eine Verbindung aufbauen um ihm die Befehle senden zu können?

Ich habe versucht die dvbcap.dll zu den ActiveX hinzuzufügen aber es kommt die Meldung dass es keine gültige
ActiveX ist.

Ich habe noch nicht verstanden was das WDM ist. Habe ich damit einen einheitlichen Befehlssatz die zu jeder
DVB Karte passt? Also ChanelUp, ChanelDown usw.?

Kann ich vielleicht irgendwie die Methodenadresse von dem anzuklickenden Button holen um dann die Methode aufzurufen?

Ich sehe mir noch deine Links an, vielen Dank!
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 19.07.06 12:18 
WDM(Windows Driver Modell) ist für eine einheitlichere Ansteuerung der Hardware von DVBx Karten notwendig(Suchlauf,...). Aber damit steuerst du direkt die Hardware, das ist vielleicht keine so gute Idee. Besser wäre es die TV Software direkt zu beeinflussen.

dvbcap.dll klingt eher nach einem Capture Treiber um auf den Video-Datenstrom der karte zuzugreifen.

Du meinst den "Pointer der Ereignisses" das ausgelöst wird, wenn der Button der TV-Anwendung gedrückt wird? Nein das ist IMHO nciht so ohne weiteres möglich. Aber du kannst der Anwendung ja Windows Messages schicken z.B. wenn du mit der Pfeil-Nach-Oben Taste den Kanal wechseln willst. Das muss aber für jede Anwendung angepasst werden. Das Problem hat man leider z.B. auch bei Girder.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mi 19.07.06 15:10 
Ich habe jetzt von OdSoft die DVB2000 SCSI Componente für Delphi 5 aber ich habe 2005 PE.
Jetzt bekomme ich die Fehlermeldung dass die VCL50.BPL fehlt. Wie löse ich das Problem?
Ich habe nämlich kein Source, nur eine WinAspi32.pas ist im Untervrzeichniss.

Ich muß das Package DVB2000SCSIComponentV08.bpl installieren und da bekomme ich die
Fehlermeldung.

Man kann also mit den Componenten so ziemlich alles im DVB2000 machen, nur wie bekomme
ich die installiert?
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Do 20.07.06 07:40 
Ich glaube nicht dass das geht, die Komponente müsste mit der neuen VCL des 2005 kompiliert werden. Das ginge natürlich nur, wenn die Komponente im Quellcode vorliegt glaube ich?

Aber SCSI,ASPI,... klingen mehr nach CD Brennen als nach nach DVB...
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 20.07.06 08:42 
user profile icondigi_c hat folgendes geschrieben:
Ich glaube nicht dass das geht, die Komponente müsste mit der neuen VCL des 2005 kompiliert werden. Das ginge natürlich nur, wenn die Komponente im Quellcode vorliegt glaube ich?

Aber SCSI,ASPI,... klingen mehr nach CD Brennen als nach nach DVB...


Ich weiß nicht, hier auf der Seite www.odsoft.de/index....amp;language=deutsch
im Menü links ist dieser SCSI Treiber, dort sind Punkte wie diese aufgeführt, ich will mit der Fernbedienung wenigstens
noch Kanäle schalten können, Lautstärke kann ich schon regulieren.


    SCSI setup
    DVB2000 string
    Displaytext
    OSD Text
    Download general settings (1265 Byte)
    Upload general settings (1265 Byte)
    Upload firmware
    Download DVB2000 image table (56 Byte)
    Convert image table to adr and len arrays
    Download DVB2000 images
    Download Channels
    Upload Channels (max 128KByte)
    Count Channels
    Switch Channel
    Get current channel name
    GetMPEG Resolution
    Upload intro sound
    Upload DVB2000 images
    Memread command
    BigMemread command
    Convert oc2 to fov (Teletext:3190->12800 Bytes)
    Upload Teletext Font (12800 Bytes)
    Upload System Font (4096 Bytes)
    Convert BMP to MEM
    Convert MEM to BMP
    Upload Color Picture (MEM)
    Enable/Disable Remote Control
    Stream init / deinit / read
    GetPID addresses
    GetStreamPID auto switch position
    GetDecoderString
    GetCAMType
    GetCAMVersion
    GetCAMLanguage
    GetCARDSerial
    GetEPGText of current channel (beta test)
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Do 20.07.06 11:58 
Nutze dein IR Objekt um damit die Anwendungen, wie schon gesagt per Tastaturemulation zu steuern. Das ist doof, ich weiß ist aber der einzige gangbare Weg für solche Probleme.

Wenn du die Karte direkt ansteuerst, kann es z.B. sein dass die Software sich verzählt, da sie sich intern den gewählten Kanal merkt und dann bei manueller Bedienung durcheinanderkommt. Oder sie muss selbst noch ein paar Dinge erledigen, bevor sie umschaltet.

Leider ist das nicht alles so einfach, wie es in einem wohldesignten Betriebssystem sein sollte :cry:
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 20.07.06 12:06 
user profile icondigi_c hat folgendes geschrieben:
Nutze dein IR Objekt um damit die Anwendungen, wie schon gesagt per Tastaturemulation zu steuern. Das ist doof, ich weiß ist aber der einzige gangbare Weg für solche Probleme.


Ich habe mal kurz im Programm nachgesehen, es gibt da auf erstem Blick gesehen keine Möglichkeit die
Funktionen per Tastatur anzusteuern, das wäre eigentlich auch der einfachste Weg.
Aber ich suche mal noch nach einer Doku.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Fr 21.07.06 12:03 
Gibt es nicht eine Standardisierte COM Schnittstelle um mit Befehlen "ChannelUp" , "ChannelDown" eine TV Karte anzusteuern?

Ich habe in der ActiveX X10Interface Komponente von der FB ein property "RemoteMachineName" und Connect, Disconnect Befehle
kennt die X10Interface auch + ein property ConnectKind = (ckRunningOrNew, ckNewInstance, ckRemote, usw)

Könnte es sein dass ich dort einfach "DVB 2000" als "RemoteMachineName" eintragen muß und Connect und schon kann ich
Kanäle schalten, Lautstärke regulieren usw.?


Wo finde ich alle registrierten COM Schnittstellen? In der Registry? In der Systemverwaltung habe ich schon was gefunden,
nur für die Ansteuerung der DVB Karte aufs erste nichts. Heißt es anders nicht RPC Server? Vielleicht müßte ich einen für
die TV Funktionalität irgendwo downloaden können?

Das ganze wäre ein Kinderspiel wenn ich einfach mit nem Eintrag in "RemoteMachineName" steuern könnte. Dann könnte man noch
Selbstdefinierte Funktionalität reinbringen wie "shutdown" und "standby" usw. wenn z.B. ein Button auf der FB länger gehalten
wird. Oder ein Untermenü das dann per 1 = Shutdown 2 = standby 3 = ruhezustand 4 = abbrechen z.B.


Was könnte man für "RemoteMachineName" eintragen "DVB 2000" , "GlobeTV Digital" = Anwendungsname oder was kommt da rein?
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 15.08.06 15:48 
user profile icondigi_c hat folgendes geschrieben:
Nutze dein IR Objekt um damit die Anwendungen, wie schon gesagt per Tastaturemulation zu steuern. Das ist doof, ich weiß ist aber der einzige gangbare Weg für solche Probleme.

Wenn du die Karte direkt ansteuerst, kann es z.B. sein dass die Software sich verzählt, da sie sich intern den gewählten Kanal merkt und dann bei manueller Bedienung durcheinanderkommt. Oder sie muss selbst noch ein paar Dinge erledigen, bevor sie umschaltet.

Leider ist das nicht alles so einfach, wie es in einem wohldesignten Betriebssystem sein sollte :cry:


Ich habe es mit der Kanalumschaltung so gemacht:

Funktionsweise: Es wird eine Art Makro ausgeführt die an fest definierten Koordinaten klickt, wie ich das eben selbst mache.

In einer Tabelle werden erst die Programme/Kanäle erfasst -

Kanalname | Y - Koordinate
VOX | 237
Super RTL | 289

wenn ich auf die "Y-Koordinaten" Spalte klicke also in der Zeile des Kanaleintrags dann wird in der
Zelle mit Laufschrift angezeigt dass man die Maus richtung "Kanal-Koordinaten" bewegen soll und dort stehen
lassen. Wenn ich der Mauszeiger auf den entsprechenden Kanaleintrag zeigt, dann wird die X Koordinate, die
gemeinsam für alle Kanäle ist, erfasst und die Y Koordinate in der Zelle automatisch eingetragen.

Wenn ich jetzt auf der Fernbedienung "ChannelUp", "ChannelDown" drücke erscheint eine andere mit großer
Schrift Liste/ListBox - "mit transparentem Hintergrund" und wenn ich 1,5 Sekunden nicht mehr umschalte
dann wird:

1. ein Doppelklick in der Mitte ausgeführt - dabei wechselt das TV Programm in den Fenstermodus wobei die Kanäle sichtbar werden
Sleep(200);
2. ein Doppelklick an den gespeicherten Koordinaten - der Kanal wird umgeschaltet
Sleep(300);
3. ein Doppelklick in der Mitte - ein Wechsel in den Vollbild-Modus

Das Programm braucht also 2 Sekunden zum Umschalten, na ja man könnte noch die Zeiten verkürzen, ich denke wird auch funktionieren
aber so wies jetzt läuft: man hört erstmal an der Sprache das umgeschaltet wurde und dann erst wirds sichtbar.



Ein Problem habe ich noch, das GlobeTV Digital Programm stürzt bei z.B. Prosieben und anderen Kanälen manchmal ab.
Ich muß die neueste Version oder eine andere Software für DVB-S suchen. Kennt jemand eine gute Software?