Jump to content
Sign in to follow this  
e-schrott

COM Interface

Recommended Posts

e-schrott

Hallo,

das COM Interface ist echt super, endlich kann ich bei meinem XC-Cube auf dem Display signalisieren, ob eine Aufnahme aktiv ist, welches Programm wiedergegeben wird ...

 

Es gibt nur ein Problem:

Wird eine Aufnahme manuell abgebrochen, z.B. durch Deaktivierung des Timers, so wird die stopre.vbs nicht aufgerufen.

 

Noch eine weitere Frage:

Ist es irgendwie möglich bei Medienwiedergabe (DVD oder CD) bzw. DVD oder CD Wiedergabe den aktuellen Titel zu ermitteln?

 

Gruß

Share this post


Link to post
Guest Lars_MQ
Wird eine Aufnahme manuell abgebrochen, z.B. durch Deaktivierung des Timers, so wird die stopre.vbs nicht aufgerufen.

Das ist richtig und beabsichtigt. Ansonsten würde bei jedem deaktivieren eines timers die aktion aufgerufen, selbst wenn der Timer nicht aktiv war, sondern nur abgeschaltet wird, weil man ihn im moment nicht braucht.

Worüber ich mal nachdenken werde, ob ein manuelles stoppen die aktion auslösen sollte, aber da muss ich erstmal schauen, was da alles dranhängt.

 

Ist es irgendwie möglich bei Medienwiedergabe (DVD oder CD) bzw. DVD oder CD Wiedergabe den aktuellen Titel zu ermitteln?

Nur bei Audio-CD bei DVD gibt es sowas nicht.

 

aktuelle Titelnummer:= DVBViewer.Playlistmanager.CurrentTitle +1;

Sofern ein titelname vorhanden:

Titelname:=DVBViewer.propGetValue('#Media.title');
Titelfile:=DVBViewer.propGetValue('#Media.file');

 

Bei DVD wiedergabe steht im '#Media.title' der name der DVD (sofern vorhanden).

 

Das sind die Daten, die auch im Mediaplaywindow angezeigt werden.

 

Hmm, je mehr ich drüber nachdenke, desto mehr lücken seh ich da noch.

- Warum hab ich die Titelnummer nicht auch mit reingepackt.

- Und die playtime

- und das Kapitel bei DVD

 

Ok, ich seh schon, da muss ich einiges nachbessern :) Manchmal ist man betriebsblind :(

 

lars

Share this post


Link to post
e-schrott

Hallo Lars,

danke für die kompetente Auskunft.

vielleicht ist es ja besser ein vb-script paralell zum Viewer laufen zu lassen, welches mit dem DVBViewer kommuniziert und das Cube-Display ansteuert.

Hierzu bräuchte ich aber etwas Unterstützung:

- kann man dieses Script automatisch mit dem Viewer starten (also auch wenn der viewer nach dem Standby automatisch durch den taskscheduler gestartet wird)?

- wie kann diese Script ermitteln dass der Viewer geschlossen wird (vbs Syntax)

- wie ermitteln man ob gerade eine Aufnahme läuft (vbs Syntax)

- wie ermittet man ob gerade TV wiedergeben wird oder eine Medienwiedergabe aktiv ist (vbs Syntax)

 

Gruß

Share this post


Link to post
Guest Lars_MQ

OK ich geh davon aus das du vbs grundsätzlich kennst und aus den scripten von admi-ral weisst, wie Du dir das DVBViewer object angelst :)

 

- Feststellen ob der DVBViewer noch läuft.

Schwierige sache, flappsig gesagt, sobald du eine fehlermeldung bekomst beim zugriff auf das object ist er aus.

Eleganter ist die Windows-API methode

i = FindWindow(null, 'DVBViewer')

wenn die <> 0 ist gibt es den viewer noch. Ob und wie das mit vbs geht, keine ahnung.

 

- kann man dieses Script automatisch mit dem Viewer starten

Ja, dafür würde ich das script per script starten. Nimm die windowload.vbs und prüfe auf WindowID=0, das ist das Homewindow, wenn das geladen wird, ist der viewer gestartet und dein script kann gestartet werden.

 

- wie ermitteln man ob gerade eine Aufnahme läuft (vbs Syntax)

if DVBViewer.TimerManager.Recording = True then
 'er nimmt auf
end if

 

- wie ermittet man ob gerade TV wiedergeben wird oder eine Medienwiedergabe aktiv ist (vbs Syntax)

if DVBViewer.CurrentChannelNr>-1 then
  'TV-Wiedergabe
else
 ' Mediawiedergabe
end if

Achtung: Recording und Mediawiedergabe schliessen sich nicht aus :(

 

Du wirst den Viewer ja sicherlich pollen (abfragen in einem bestimmten interval).

Wähle den interval nicht zu klein, um deine systemlast niedrig zu halten (alle 2 sekunden oder eventuell alle 5 sekunden) da musst du etwas probieren.

Share this post


Link to post
e-schrott

Hallo lars,

vielen Dank für deine Hilfe.

Ich habe jetzt ein script geschrieben, welches parallel zum Viewer läuft.

Dies hat den Vorteil, dass ich nicht auf das vb_scripting des Viewers angewiesen bin.

Folgende Funktionen konnte ich realisieren:

- Laufschriftausgabe des aktuellen Senders bzw. Media-Titels

- Signalisierung einer Aufnahme durch ein rotes Symbol

- Start des DVB-Viewers nach Start des vb-Scripts

- Start des DVB-Viewers nach Standby des PCs (ist leider aktuell nötig, da bei der 3.12er Version bei laufendem TaskScheduler die "bestägigen beim Beenden-Nachfrage" fäschlicherweise auftaucht)

 

Folgendes wäre noch nett:

Beim Abspielen einer CD den Titel des aktuellen Tracks über Internet ermitteln und diesen Ausgeben (keine Ahnung wie ob das machbar ist).

 

Gruß

 

Falls es jemanden interessieren sollte habe ich das Script mit angehängt.

dvbviewer_script.zip

Edited by e-schrott

Share this post


Link to post
Guest Lars_MQ
Beim Abspielen einer CD den Titel des aktuellen Tracks über Internet ermitteln und diesen Ausgeben (keine Ahnung wie ob das machbar ist).

Das kommt noch, Du kannst es jetzt schon mit dem freedbInterface selber machen.

 

Für die näöchste version will ich die freedb abfrage auch bei autoplay einbinden, da muss ich nur sehen, das ich das ganze voneinander entkopple, da man sonst zu lange warten muss, bis die CD startet... Auch weiss ich noch nciht wie man es lösen soll, wenn für eine CD mehrere einträge da sind. Eine abfrage wäre schon störend (wenn man den TV nicht an hat).

Share this post


Link to post
yaRincewind

Bei mehreren Einträgen:

 

Alle CD-Namen anzeigen lassen

den ersten als Default setzen

eine User-definierte Zeit warten, in der man einen anderen aussuchen kann

nach Ablauf der Wartezeit Default spielen oder eben mit der Userwahl loslegen :)

 

So kann man sichs aussuchen wie sich der Viewer verhalten soll

Share this post


Link to post
Guest Lars_MQ
eine User-definierte Zeit warten,

Oh man noch mehr optionen. :)

Share this post


Link to post
yaRincewind

Na ja, die eine Option mehr oder weniger macht das Kraut nicht fett :(

 

[ironie]

Vielleicht wäre dann langsam eine Suchfunktion im Viewer gut, womit man suchen kann wo sich die Einstellung die man grade braucht versteckt :)

[/ironie]

Share this post


Link to post
Hartwig
ist leider aktuell nötig, da bei der 3.12er Version bei laufendem TaskScheduler die "bestägigen beim Beenden-Nachfrage" fäschlicherweise auftaucht
Dafür gibts im Servicecenter eine Betaversion vom Taskscheduler. Mit dem sollte das Problem beseitigt sein.

 

Edit: Ach ja, du warst ja der, bei dem es nicht klappte...

Share this post


Link to post
e-schrott

Hallo Lars,

noch ein kleines Problem, ich versuche gerade über FreeDB den aktuellen CD-Titel zu ermitteln.

Es funktioniert in so weit, ich bekomme z.B. den Albumtitel mit

Album = DVBViewer.Utils.FreeDB.ReturnDiscInfo.DiscTitle

bei folgender Anweisung kommt jedoch die Fehlermeldung "objekt erforderlich"

Titel = DVBViewer.Utils.FreeDB.ReturnDiscInfo.Track(0).TrackTitle

 

mache ich irgend was falsch oder stimmt vielleicht die Doku nicht.

 

Gruß und Dank im Vorraus

 

Ausschnitt aus dem code:

 

if DVBViewer.Playlistmanager.CurrentPlaylist = 2 then ' Bei Audio Wiedergabe

TitelNr = DVBViewer.Playlistmanager.CurrentTitle +1

DVBViewer.Utils.FreeDB.ReadCDData("d:")

if DVBViewer.Utils.FreeDB.DoQuery and (DVBViewer.Utils.FreeDB.MatchCount>0) then

if DVBViewer.Utils.FreeDB.DoRead(0) then

Titel = DVBViewer.Utils.FreeDB.ReturnDiscInfo.Track(TrackNr).TrackTitle

Share this post


Link to post
Guest Lars_MQ

Versuchs mal mit

Titel = DVBViewer.Utils.FreeDB.ReturnDiscInfo.Track(TitelNr).TrackTitle

 

woher bekommst du die TrackNr? oder sollte das TitelNr sein?

 

Ich werd mir das morgen mal genauer anschauen. Für heute ist erstmal schicht im schacht :idiot:

Share this post


Link to post
e-schrott
Versuchs mal mit

Titel = DVBViewer.Utils.FreeDB.ReturnDiscInfo.Track(TitelNr).TrackTitle

 

woher bekommst du die TrackNr? oder sollte das TitelNr sein?

 

Ich werd mir das morgen mal genauer anschauen. Für heute ist erstmal schicht im schacht :idiot:

 

z.B. TitelNr = DVBViewer.Playlistmanager.CurrentTitle +1

Funktionier aber auch mit

DVBViewer.Utils.FreeDB.ReturnDiscInfo.Track(1).TrackTitle

nicht

Share this post


Link to post
Guest Lars_MQ

Es scheint ein vbscript problem zu sein. ich habs mit vba mal gegengetestet, läuft wunderbar. VBscript scheint mit den datentypen nicht zurecht zu kommen :idiot: , da muss ich erstmal sehen was da genau los ist.

 

lars

Share this post


Link to post
Frosch
Falls es jemanden interessieren sollte habe ich das Script mit angehängt.

Ich habe es zwar schon vor Ewigkeiten über Girder hinbekommen, die XCube-Fernbedienung über das Serial-Plugin zu nutzen, nur fehlt mir jetzt der Weg "zurück" (also das Display anzusteuern).

 

Kannst Du mal erklären, was man alles benötigt, um Dein Skript ans funktionieren zu bekommen?

Share this post


Link to post
e-schrott
Falls es jemanden interessieren sollte habe ich das Script mit angehängt.

Ich habe es zwar schon vor Ewigkeiten über Girder hinbekommen, die XCube-Fernbedienung über das Serial-Plugin zu nutzen, nur fehlt mir jetzt der Weg "zurück" (also das Display anzusteuern).

 

Kannst Du mal erklären, was man alles benötigt, um Dein Skript ans funktionieren zu bekommen?

 

Hallo Frosch,

ich schau mal, dass ich dir am Wochenende was zusammenstelle.

Soviel vorab:

Das Girder Plugin, darfst du dann auf jeden Fall nicht benutzen, da dann die com2 bereits besetzt ist.

Ich nutze die skystar Fernbedienungskommandos in Girder mit winlirc plugin (über eine lernbare Fernbedienung), lediglich die Power-Funktion der CUBE-Fenbedienung habe ich eingelernt.

Bei den Energieoptionen in der Systemsteuerung muß du bei der Aktion "Drücken des Netzschalters am Computer" die Option "nichts unternehmen" wählen, damit du definiert über VB-Sript herunterfahren kannst.

Das VB-Script empfängt dann die Kommandos der Fronttasten wie Ausschalten ... und und ruft die entsprechenden DVBViewer COM-Routinen auf.

Was natürlich voraussetzt dass der DVBViewer läuft damit du über Fernbedienung bzw. Fronttaste ausschalten kannst.

Dann brauchst du noch das NETCommOCX Tool, welches im Net als Freeware verfügbar ist (ich schau mal nach dem Link)

Mein akutelle vb-script werde ich auch anhängen (mit Ausgabe von Sendername, Musiktitel, RDS-Info ...)

 

 

Gruß

Share this post


Link to post
Frosch
Das Girder Plugin, darfst du dann auf jeden Fall nicht benutzen, da dann die com2 bereits besetzt ist.

Hmm, das ist aber genau das, was ich tun wollte.

 

Ich nutze die skystar Fernbedienungskommandos in Girder mit winlirc plugin (über eine lernbare Fernbedienung), lediglich die Power-Funktion der CUBE-Fenbedienung habe ich eingelernt.

Du benutzt also nicht die Original-XCube Fernbedienung?

 

Was natürlich voraussetzt dass der DVBViewer läuft damit du über Fernbedienung bzw. Fronttaste ausschalten kannst.

Und was passiert, wenn der DVBViewer nicht läuft? Wie bekommst Du den Rechner dann in den Ruhemodus?

Share this post


Link to post
e-schrott
Ich nutze die skystar Fernbedienungskommandos in Girder mit winlirc plugin (über eine lernbare Fernbedienung), lediglich die Power-Funktion der CUBE-Fenbedienung habe ich eingelernt.

Du benutzt also nicht die Original-XCube Fernbedienung?

Ich benutze nur das Power Kommando (eingelernt bei der oneforall) zum aus und einschalten.

Was natürlich voraussetzt dass der DVBViewer läuft damit du über Fernbedienung bzw. Fronttaste ausschalten kannst.

Und was passiert, wenn der DVBViewer nicht läuft? Wie bekommst Du den Rechner dann in den Ruhemodus?

 

 

Der DVBViewer läuft bei mir dauernd, da der Cube bei mir als HTPC im Wohnzimmer steht. Falls ich doch mal was anderes damit mache starte ich anschließend den Viewer mit der FB über Girder und schicke dann den PC über die FB in den Ruhezustand. Das Runterfahren in den Ruhezustand funktioniert natürlich auch über die Taskleiste.

 

Hier der Link zum notwendigen NetComOCX ActiveX Control:

NetCommOCX ActiveX Control

DVB_SCRIPT.zip

Share this post


Link to post
Frosch
Der DVBViewer läuft bei mir dauernd, da der Cube bei mir als HTPC im Wohnzimmer steht. Falls ich doch mal was anderes damit mache starte ich anschließend den Viewer mit der FB über Girder und schicke dann den PC über die FB in den Ruhezustand. Das Runterfahren in den Ruhezustand funktioniert natürlich auch über die Taskleiste.

Dann benutzt Du aber zum Herunterfahren eine andere Taste als die angelernte Funktion zum Ein/Ausschalten des Cubes, oder?

 

Benutzt Du einen anderen (zusätzlichen) IR-Empfänger, als den eingebauten?

 

 

Hier der Link zum notwendigen NetComOCX ActiveX Control:

NetCommOCX ActiveX Control

Danke (auch für Dein Script), ich werd´s mir mal anschauen ...

Share this post


Link to post
e-schrott
Der DVBViewer läuft bei mir dauernd, da der Cube bei mir als HTPC im Wohnzimmer steht. Falls ich doch mal was anderes damit mache starte ich anschließend den Viewer mit der FB über Girder und schicke dann den PC über die FB in den Ruhezustand. Das Runterfahren in den Ruhezustand funktioniert natürlich auch über die Taskleiste.

Dann benutzt Du aber zum Herunterfahren eine andere Taste als die angelernte Funktion zum Ein/Ausschalten des Cubes, oder?

 

Benutzt Du einen anderen (zusätzlichen) IR-Empfänger, als den eingebauten?

 

 

Hier der Link zum notwendigen NetComOCX ActiveX Control:

NetCommOCX ActiveX Control

Danke (auch für Dein Script), ich werd´s mir mal anschauen ...

 

Ich benutze den Technisat IR-Empfänger (winlirc)

Zum Ein- bzw. Ausschalten benutze ich auch die CUBE Power-Taste (es wird das gleiche Kommando über COM2 gesendet wie bei der Fernbedienungstaste).

 

 

 

Zum Ein-

Share this post


Link to post
Frosch
Ich benutze den Technisat IR-Empfänger (winlirc)

Zum Ein- bzw. Ausschalten benutze ich auch die CUBE Power-Taste (es wird das gleiche Kommando über COM2 gesendet wie bei der Fernbedienungstaste).

Hmm, den habe ich leider nicht mehr. Ich werde dann mal sehen, ob ich das Ganze über den Umweg mit dem LUA-Scrpting im Girder hinbekomme. Irgendwo hatte ich da mal eine Lösung für den Cube gesehen, jedoch hatte ich gehofft, das SerialPlugin des Girder "von außen" ansteuern zu können.

 

Aber Dein Skript ist ja ganz schön gewachsen. Alle Achtung!

Edited by Frosch

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...