Automatische Programmumschaltung aus TV-Genial via Infrarot

Hier können Sie Verbesserungsvorschläg für TVgenial einbringen und diskutieren.
SmartEIB
Beiträge: 25
Registriert: 14.01.2004, 19:15

Beitragvon SmartEIB » 19.07.2004, 20:58

Zu TV UID:
Wenn ich das richtig verstanden habe geht es darum die übertragene Senderkennung TV UID der eigenen individuellen Programmnummer zu zuordnen. Die Tabelle gibt es ja unter http://www.arakon-systems.de. Ich denke eine eigene Scriptdatei wäre doch die einfachste Lösung. Einfach der obigen Tabelle eine Spalte mit der eigenen Programmnummer hinzufügen.
Wenn bereits der Ansatz falsch ist, so führt strenge Logik unweigerlich zum falschen Ergebnis. Nur Unlogik gibt Dir jetzt noch die Chance, wenigstens zufällig richtig zu liegen.

ArnF
Beiträge: 3553
Registriert: 16.10.2001, 20:51
Wohnort: Schwaigern, Deutschland

Beitragvon ArnF » 19.07.2004, 20:59

Woher weißt du, dass IPSend zu IRTrans kompatibel ist. Laut deinen Beschreibungen kommen mir da starke Zweifel. IRTrans erwartet nicht einfach nur ASCII-Texte. Zudem kommt, dass IRTrans TCP/IP benutzt. UDP kenn ich kaum, sollte aber nicht kompatibel sein.

So wie ich hier die Schnittstelle beschrieben hab, ist sie rein für den Aufruf von Programmen + Parameter. In deinem Fall kommt als Problem die zwei Parameter Fernbedienung und Taste.
Da gibt es zwei Möglichkeiten:
1. verschiedene Fernbedienungen: Da irclient.exe FB + Taste hintereinander erwartet, kann man in der Tabelle beide Parameter eingeben (durch Leerzeichen getrennt oder "Fernbedienung" "Taste")
2. immer die gleiche Fernbedienung: Problem besteht nicht, da man die FB konstant im Befehl angeben kann.

Jetzt hab ich noch eine Frage zu WLAN. Hat der Rechner mit dem IRTrans-Server eine feste IP. Ich weiß nicht, ob irclient.exe mit Rechnernamen zurechtkommt.

zum Ereignis:
Hab erst gestern ein kleines Testprogramm geschrieben, dass einfach nur dieses Ereignis abfängt. Das Ereignis wird ausgelöst, sobald man links in der Liste oder im Kopfbereich klickt. Ein Klick in der Übersicht bewirkt nichts, zumindest bei aktivierter Mausschiebefunktion. Bei deaktivierter Mausschiebefunktion (also wenn die Sendung markiert wird) hab ich nicht getestet.
Computer lösen Probleme, die es ohne sie überhaupt nicht geben würde.

SmartEIB
Beiträge: 25
Registriert: 14.01.2004, 19:15

Beitragvon SmartEIB » 19.07.2004, 21:27

IPSend/IRTrans
Ich hatte mich ja schon auf IRClient.exe eingestellt. Sonst hätte man IPSend anpassen können. Also wenn man mit IPClient senden kann bleibt es kompatibel.
TCP/IP ist auch kein problem muss nur vorher einen gezielten Verbindungsaufbau machen und ist daher langsamer. UDP ist verbindungslos und schneller (würde bei IR eigentlich besser passen). Aber dürfte auch kein Problem sein. Die Kommunikation läuft innerhalb von IPTrans und ist damit erstmal IO.

Die Zuordung hast du auch schon gelöst. Eben zwei Parameter in der Tabelle. Also auch IO.

Ich benutze eine feste IP-Adresse. Die Namensauflösung wird eigentlich übers Netz zur verfügung gestellt und sollte fürs erste auch kein Problem sein.

Die von die beschriebene Ereignisauslösung sieht doch auch gut aus. Das er schon umschaltet wenn mann links in der Sendertabelle klickt würde ich mir zwar nicht wünschen (dient ja eher der Sendersuche). Aber erstmal Ok.

Also bisher alles im grünen Bereich.

Gruß Bruno
Wenn bereits der Ansatz falsch ist, so führt strenge Logik unweigerlich zum falschen Ergebnis. Nur Unlogik gibt Dir jetzt noch die Chance, wenigstens zufällig richtig zu liegen.

ArnF
Beiträge: 3553
Registriert: 16.10.2001, 20:51
Wohnort: Schwaigern, Deutschland

Beitragvon ArnF » 19.07.2004, 21:38

UDP wäre wohl zum Senden perfekt, aber IRTrans kann mehr. Wie sollte der Server ohne Verbindung den Client mitteilen, welche Taste auf der FB gedrückt wurde. Außerdem kann man noch Informationen des Gerätes abfragen. Es muss also bidirektional sein. So viel ich weiß, besteht die Verbindung zwischen Server und Client die ganze Zeit, also so lange wie der Client läuft.

Deine Zuordnung ist fertig, wenn man vom fertigen Programm ausgeht.
Mit dem Zuordnungsproblem meinte ich aber die Erkennung, welcher Sender nun aktiv ist.

Dann fehlt dir nur noch das fertige Programm. Denke mal, es wird in den nächsten Tagen fertig. Muss mal schauen, wie viel ich auf meine letzte Prüfung am Freitag noch lernen muss. Ein wenig Zeit werd ich aber auf jeden Fall haben.
Erst mal musst du auch dein IRTrans haben und die Fernbedienun(en) einlesen.
Computer lösen Probleme, die es ohne sie überhaupt nicht geben würde.

ArnF
Beiträge: 3553
Registriert: 16.10.2001, 20:51
Wohnort: Schwaigern, Deutschland

Beitragvon ArnF » 22.07.2004, 19:09

So, die erste Verison des Programms ist nun fertig und kann unter
http://mitglied.lycos.de/arnf/Foren/TVg ... Change.zip
geladen werden.

Das Programm verwendet ein eigenes Script. Dieses ist eine ini-Datei. Damit wird der Umgang für mich deutlich leichter, dafür muss aber ein bisschen was beachtet werden:
- Kommentare sind immer ganze Zeilen und beginnen statt mit // mit ;
- jeder Wert muss einen Bezeichner haben (Bezeichner = Wert)
- weiteres steht in der Setup.ini

Es werden folgende Optionen unterstützt:
- everyMessage=0/1 (in der Setup.ini):
TVgenial sendet bei jedem Klick auf einen Sender eine Nachricht. Bei der Einstellung 0 werden nur Senderwechsel weitergegeben, bei 1 werden die entsprechenden Befehle bei jeder Nachricht ausgeführt.

- Autostart (im Menü)
Wenn ein Haken davor ist, wird TVGChannelChange automatisch mit Windows gestartet (nur aktueller Benutzer). Für mehrere User, die Option für jeden User wählen, oder den Registry-Eintrag für jeden User selber setzen

- Aktiv (im Menü)
Befehle werden nur ausgeführt, wenn ein Haken davor ist.



Befehle:
Es werden mehrere Befehle unterstützt. Jeder Befehl braucht einen Bezeichner (wegen ini-Format). Der Bezeichnur wird zur Ausführungsreihenfolge benutzt. Die Befehle werden in alphabetischer Reihenfolge der Bezeichner ausgeführt.
Bis auf den Bezeichner und das fehlende Schlüsselwort (DoRecord,...) sind die Befehle mit denen im TVgenial-Script identisch.


Tabelleneinträge:
Da ich auf die IDs im Originalscript keinen Zugriff habe, bzw. ich sie nicht richtig zuordnen kann, musste eine eigene Tabelle her.
In dieser Tabelle stehen als Bezeichner die TVUID (siehe TVUID.txt im TVgenial-Verzeichnis) und als Wert ein Text.
Der Text kann auch für mehrere Einträge stehen. Die Einträge werden durch || getrennt. Das ist sinnvol, wenn z.B. per Infrarot zwei Tasten (oder mehr) gedrückt werden sollen. Der Text für Kanal 12 heißt dann z.B. Num1||Num2.
Jeder Befehl wird einmal pro Parameter ausgeführt.

Ich denke, das sollte fürs erste reichen. Ist zwar jetzt schon recht gut einsetzbar, aber noch kein 100%iger Ersatz für so eine Funktion in TVgenial.
Computer lösen Probleme, die es ohne sie überhaupt nicht geben würde.

SmartEIB
Beiträge: 25
Registriert: 14.01.2004, 19:15

Super Proggi

Beitragvon SmartEIB » 22.07.2004, 21:49

Hallo ArnF,

Danke für diese Spitzenleistung.
Habe es gerade mal kurz getestet und das Grundsätzliche ging auf Anhieb. Ein langer Traum geht wohl damit in Erfüllung.
Eine kleine Unsicherheit hab ich noch in Bezug auf das Senden von 2 IR Befehlen. Dein Beispiel 12 bei mir WDR. Kannst du mir ein konkretes Beispiel machen für den Tabelleneintrag (WDR) und die Befehlsaufruf mit IRclient.exe.

Gruß

Bruno
Wenn bereits der Ansatz falsch ist, so führt strenge Logik unweigerlich zum falschen Ergebnis. Nur Unlogik gibt Dir jetzt noch die Chance, wenigstens zufällig richtig zu liegen.

Gebby
Beiträge: 2049
Registriert: 16.06.2002, 15:49
Wohnort: Neusechsland

Beitragvon Gebby » 22.07.2004, 22:48

Der Download funktionierte erst beim 2. Mal, aber das Programm funktionierte auf Anhieb und sehr gut mit WinTV2K zusammen. War aber auch nicht anders zu erwarten :wink:
Genauso hatte ich mir das gewünscht und vorgestellt. Das Anpassen der Senderliste an WinTV ist allerdings eine weitere Tabelle, die man anpassen muss. Das sehe ich noch als kleines Manko an.

Eins habe ich festgestellt. In der Top-Ansicht funktioniert ein Klick auf den Sender nicht, erst wenn man dort die Details wählt und dort klickt. Liegt aber sicher TVgenial.

Eine Frage habe ich noch. Warum nimmt die TVGChannelChance.exe 3,3 MB im Arbeitsspeicher ein, wo doch die Exe plus ini nur 383 kB groß sind?

Klasse Arbeit, Danke sehr :)

ArnF
Beiträge: 3553
Registriert: 16.10.2001, 20:51
Wohnort: Schwaigern, Deutschland

Beitragvon ArnF » 23.07.2004, 00:36

Der Download ist auf einer Freenet-Seite. Die haben generell Probleme beim Download verschiedener Dateitypen. Hatte es einmal getestet und es funktionierte. Solange es beim 2. Mal geht, sollte es ok sein.

Eine Frage habe ich noch. Warum nimmt die TVGChannelChance.exe 3,3 MB im Arbeitsspeicher ein, wo doch die Exe plus ini nur 383 kB groß sind?

Ist bei mir genauso. Man könnte vielleicht ein paar Byte einsparen, aber das wird auch nicht so leicht.
Die Exe ist so groß, da es ein Delphi-Programm ist. Delphi bindet immer sehr viel eigene Bibliotheken ein.
Im Speicher habe ich alle verfügbaren Kanäle, jeweils mit TVUID als Ganzzahl und Text, den Namen als Text und den Tabelleneintrag (falls vorhanden, sonst leerer Text). Macht schon fast 1 MB. Dazu noch die Befehle. Da die Messages recht häufig auftreten können werden die Befehle so weit wie möglich vor der Ausführung decodiert. Also eine Liste mit Texten und Parametern in der Reihenfolge, wie sie im Befehl kommen. Texte können 1:1 übernommen werden, Parameter werden beim Ausführen gesetzt. Braucht eigentlich nicht viel. Mit Programm wär ich dann auf 1,5 MB. Wo der Rest herkommt, kann ich so nicht erklären. Die laufenden Instanzen (unsichtbaren Formular im Hintergrund und weitere kleinere Objecte) brauchen auch noch ein wenig. Ich denk mal, die Bibliotheken von Delphi nehmen auch nochmal 1 MB weg.
Genau kann ich es auch icht sagen. Aber mal anders, was sind schon 3 MB Arbeitsspeicher. Von 65 Prozessen hab ich nur 5 unter 1 MB Speicher laufen. Ich weißt nicht, in wie weit du dich mit Speicher auskennst. Es ist nicht so, dass all diese benötigten Resourcen gleichzeitig im RAM sind. Ein Großteil wird ausgelagert.

Edit: Oh man, was hab ich da heut morgen für eine ... geschrieben. War wohl doch zu spät und ein Bier zu viel...
Die geladenen Sender-Daten sind nicht 1 MB, sondern 1 kb. Da wundert es dann schon mehr, wie man auf 3 MB kommt. Werd man ein paar Dinge zum Testen weglassen und schauen, wie dich die Speicherauslastung ändert.



Wegen der Top-Ansicht: Das muss an TVgenial liegen. Ich empfang jede Message von TVgenial. Hab bisher nur mit der Übersicht experimentiert. Muss aber ein Bug in TVgenial sein. Werds mal genauer untersuchen.

Aber immerhin funktioniert das Programm soweit ganz gut. Mit irclient.exe (was hier ja erst der Wunsch war) sollte es auch funktionieren. Habe zwar IRTrans, aber ich kann schlecht gleichzeitig empfangen und senden. Mit anderen Geräten als Empfangsquelle hat es ganz gut funktioniert. Man merkt nur eine kleine Verzögerung zwischen Klick und Programmaufruf (<500ms). Kann man wohl auch noch verkraften.
Computer lösen Probleme, die es ohne sie überhaupt nicht geben würde.

SmartEIB
Beiträge: 25
Registriert: 14.01.2004, 19:15

Beitragvon SmartEIB » 23.07.2004, 07:36

ArnF hat geschrieben:Habe zwar IRTrans, aber ich kann schlecht gleichzeitig empfangen und senden. Mit anderen Geräten als Empfangsquelle hat es ganz gut funktioniert.


Klar kannst du das machen einfach die eigene IP-Adresse eintragen.
Wenn bereits der Ansatz falsch ist, so führt strenge Logik unweigerlich zum falschen Ergebnis. Nur Unlogik gibt Dir jetzt noch die Chance, wenigstens zufällig richtig zu liegen.

ArnF
Beiträge: 3553
Registriert: 16.10.2001, 20:51
Wohnort: Schwaigern, Deutschland

Beitragvon ArnF » 23.07.2004, 13:00

Die IP ist nicht das Problem. Wenn ich meinen Fernseher (= WinTV) testen will, muss IRTrans empfangen. Das Programm sendet die korrekten Signale. Es ist aber so programmiert, dass entweder nicht gleichzeitig gesendet und empfangen werden kann, oder das gesendete wird beim empfang gefiltert.
Endlos schleifen wie bei Empfang von Taste X sende X sind damit also ausgeschlossen.

Andere IR-Geräte (Receiver, Videorekorder,...) hab ich erfogreich getestet.
Computer lösen Probleme, die es ohne sie überhaupt nicht geben würde.

Gebby
Beiträge: 2049
Registriert: 16.06.2002, 15:49
Wohnort: Neusechsland

Beitragvon Gebby » 25.07.2004, 13:26

@ArnF
Im Kontextmenü deines kleinen Programmes ist der Eintrag Autostart vorhanden. In welchem Verzeichnis muss man dein Tool installieren, damit der Autostart funktioniert? Oder muss man gar im Autostartordner per Hand eine Verknüpfung anlegen?

Habe heute festgestellt, das trotz des Hakens bei Autostart, das Tool nicht automatisch gestartet wurde.

Danke

ArnF
Beiträge: 3553
Registriert: 16.10.2001, 20:51
Wohnort: Schwaigern, Deutschland

Beitragvon ArnF » 25.07.2004, 13:57

Habe den Autostart nicht selber getestet, aber der Eintrag in der Reg wurde bei mir erfolgreich gesetzt. Da ich mein PC 24/7 laufen lass, hab ich nicht neugestartet.

Zum Prinzip:
Beim Programmstart wird in der Registry nach dem Eintrag "HKEY_CURRENT_USER\Software\Microsoft\CurrentVersion\Run\TVGChannelChange" gesucht. Wenn er vorhanden ist, wird der Haken gesetzt, ansonsten nicht.

Beim Beenden des Programms wird entweder der Autostart-Eintrag gesetzt oder gelöscht.

Der Ordner ist egal. Das Programm kennt seinen aktuellen Ordner und verwendet diesen.

Bei dir gibt es jetzt mehrere Möglichkeiten:
- Windows fährt zu schnell runter und die Befehle werden nicht ausgeführt
- Du hast in deiner Registry Rechte vergeben, so dass nicht jeder einfach so Autostart-Einträge setzen darf.
- Das Programm wurde verschoben

Du kannst ja mal probieren, das Programm gleich nach dem Setzen des Hakens zu beenden und dann nachschauen, ob der Eintrag in der Registry gesetzt wurde.
Computer lösen Probleme, die es ohne sie überhaupt nicht geben würde.

Gebby
Beiträge: 2049
Registriert: 16.06.2002, 15:49
Wohnort: Neusechsland

Beitragvon Gebby » 25.07.2004, 19:22

Diesen Schlüssel gibt es bei mir gar nicht. Also bis "HKEY_CURRENT_USER\Software\Microsoft" ist noch alles da, aber ab "CurrentVersion" :?: :?: :?: , weder vor, noch nach setzen des Hakens. Ich habe sogar festgestellt, setze ich den Haken, verschwindet der automatisch irgendwann wieder von selber. Nach welchem Zeitraum habe ich noch nicht erfassen können.

- Also, mein Windows fährt sicher nicht zu schnell runter, ganz im Gegenteil :cry:
- Auch als Admin habe ich keine Rechte vergeben, die ein Arbeiten einschränken würden, definitiv nicht.
- Auch habe ich das Programm nach dem Start nicht verschoben.

ArnF
Beiträge: 3553
Registriert: 16.10.2001, 20:51
Wohnort: Schwaigern, Deutschland

Beitragvon ArnF » 25.07.2004, 19:40

Ups, meine Angabe des Schlüssels war falsch. Es muss statt
Microsoft\CurrentVersion
Microsoft\Windows\CurrentVersion
heißen.

Wenn der Schlüssel Run nicht existiert solltest du den anlegen. Normalerweise existiert er, aber anscheinend kann es vorkommen, dass Uninstallier ihn löschen, wenn er leer ist. Mein Programm erstellt nur den Eintrag darin, nicht den Schlüssel. Kann ich vielleicht auch noch ändern.

Der Haken wird eigentlich nur gesetzt, wenn das Hauptformular (unsichtbar) erzeugt wird. Ich wüsste keinen Grund, warum das während des laufenden Programms nochmal passieren sollte. Bei erneutem Start ist es klar, dass der Haken nicht gesetzt ist.
Computer lösen Probleme, die es ohne sie überhaupt nicht geben würde.

Gebby
Beiträge: 2049
Registriert: 16.06.2002, 15:49
Wohnort: Neusechsland

Beitragvon Gebby » 25.07.2004, 20:29

Also, dieser Schlüssel "Microsoft\Windows\CurrentVersion" existiert. Auch der Eintrag deines Tools darin. Dennoch, es geht noch weiter. Habe soeben festgestellt, das dein Tool aus dem Systray einfach so verschwindet. Ich habe den Rechner nicht neu gestartet, sondern seit etwa 13 Stunden damit gearbeitet. Soeben ist der Systrayeintarg verschwunden. Auch der Taskmanager zeigt es nicht mehr an. Und ich habe es nicht selbst gekillt. Sagt dir das etwas?


Zurück zu „Verbesserungsvorschläge“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste