Brauche die Aktuelle Kanalnummer

  • Hallo.
    Ich benötige für ein C Programm die aktuelle Kanalnummer die der VDR gerade sieht. Wie kann ich die rausbekommen?
    Vielen Dank
    Gruß Patrick

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Willst du den aktuellen Kanal zu bestimmten Zeitpunkten abfragen oder direkt benachrichtigt werden, wenn der Live-TV Kanal wechselt? In dem Fall könnte man die Status-Events von dbus2vdr auswerten: https://github.com/flensrocker…r/blob/master/README#L335

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Moin,


    oder direkt in einem Plugin (ein C Programm ist ja recht allgemein ;) :(


    Code
    cDevice *primaryDevice = cDevice::PrimaryDevice();
    const cChannel *channel = primaryDevice->GetCurrentlyTunedTransponder();
    int channelNumber = channel->Number();


    Ciao Louis

  • Ok, wenn ich mir den Start Beitrag nochmal ansehe muss ich sagen das da sehr wenig infos drin stehen. Sollte man nicht so im halbschlaf schreiben ;)


    Also es geht um folgendes. Ich versuche einen Patch für ein Plugin zu schreiben und möchte folgende Stelle im Plugin ändern:


    Code
    FILE *in,*out;
         in=fopen(ToLoad,"r");
         if (in) {
            Channels.SwitchTo(1);
            TimerList timers;
            timers.SaveTimer();


    Und zwar geht es um das "Channels.SwitchTo(1);". Ich möchte das der nochmal zum aktuellen Kanel schaltet.
    Ich hab es jetzt mit dem Vorschlag von louis folgendermaßen probiert:

    Code
    FILE *in,*out;
         in=fopen(ToLoad,"r");
         if (in) {
            cDevice *primaryDevice = cDevice::PrimaryDevice();
            const cChannel *channel = primaryDevice->GetCurrentlyTunedTransponder();
            int channelNumber = channel->Number();
            Channels.SwitchTo(channelNumber);
            TimerList timers;
            timers.SaveTimer();


    Das lässt sich auch kompilieren aber beim Aufruf bekomme ich an der Stelle "int channelNumber = channel->Number();" immer einen Segfault.


    Ich muss dazu sagen ich bin ein totaler Noob in Sachen c/c++.


    Vielleicht kann mir einer Helfen.
    Danke euch


    Gruß Patrick

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Moin,


    hm...was genau verstehst du unter "nochmal zu einem Kanal schalten". Wenn der Aufruf channel->Number abkackt, dann ist channel ein Null Pointer, d.h. primaryDevice->GetCurrentlyTunedTransponder(); gibt NULL zurück. Hängt ggf. damit zusammen, dass da noch irgendwas aufgrund des ja anscheinend schon vorher da gewesenen Umschaltvorgangs gelockt ist?! Nur so als Vermutung...nix genaues weiss ich ja nicht ;)


    Ciao Louis

  • Hi louis
    Es handelt sich um das channellists Plugin. Nach dem wechsel der Kanalliste schaltet das immer auf Kanal 1. Ich möchte aber das es auf dem selben Kanal bleibt.
    Oder kann man einfach einmal hoch/runter schalten?


    Oder denke ich komplett falsch???


    Also das Plugin schaltet erst auf Kanal 1, dann wechselt es die channels.conf und dann schaltet es wieder auf Kanal 1.

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Dann musst du dir die Kanalnummer früher merken, bevor das Plugin die neue Liste lädt.
    Oder ist das schon die Stelle? Hab heute leider keine Zeit, um in den Code zu sehen.


    Lars

  • Das kann ich mal probieren. Ich setze den Code einfach mal nach oben.

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Also ich komme hier mit meinen fast nicht vorhandenen Kenntnissen nicht weiter. Habe die Abfrage der Kanalnummer nun an den Punkt gelegt wo das Menü sich öffnet, jetzt gibt es keinen Segfault mehr, aber auf die richtige Kanalnummer wird trotzdem nicht geschaltet. Vielleicht hat ja einer der sich damit auskennt mal Lust und Zeit sich das mal anzusehen.



    Gruß Patrick

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!