Tap Programmierung > Abfrage des aktuellen Play Dateinamen

TAPs für die SRP- und CRP-Serie
Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#1

Beitrag von omue » Di 11. Feb 2014, 08:48

Hallo,

wie bekomme ich den Dateinamen, wenn ich gerade etwas abspiele ?

Über "TAP_Hdd_GetPlayInfo > TYPE_TapEvent > eventName" bekomme ich die Infos aus der aktuellen Play Datei.
Aber wie frage ich den Filenamen ab ?

ich finde nix :confused:

Olaf
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 29048
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#2

Beitrag von FireBird » Di 11. Feb 2014, 09:01

Die Antwort versteckt sich im file-Parameter.

Code: Alles auswählen

typedef struct 
{
    dword   info;
    dword   time;   // mjd << 16 | h << 8 | m
    long64  size;
    char    name[ MAX_FILE_NAME_SIZE + 1];
    void*   handle;
} TYPE_File;

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#3

Beitrag von omue » Di 11. Feb 2014, 09:25

Da muß man erst drauf kommen :D

Vielen Dank !

jetzt klappts :)

Olaf
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#4

Beitrag von omue » Mo 17. Feb 2014, 19:20

Die Abfrage von "name" klappt ja dank FireBird.

TYPE_PlayInfo isPlay;

sprintf( Estr, "%s", isPlay.file->name);
TAP_Osd_PutString1622( rgn, 120, yMenu -90, 710 , Estr, RGB( 200, 200, 240), COLOR_Black );


Nun habe ich versucht "size" abzufragen:


sprintf( Estr, "%d", isPlay.file->size);
TAP_Osd_PutString1622( rgn, 120, yMenu -90, 710 , Estr, RGB( 200, 200, 240), COLOR_Black );



Da bekomme ich falsche Werte.
Egal was gerade läuft, der Wert ist gleich. :confused:
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 29048
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#5

Beitrag von FireBird » Mo 17. Feb 2014, 19:27

Code: Alles auswählen

typedef struct 
{
    dword   info;
    dword   time;   // mjd << 16 | h << 8 | m
    long64  size;
    char    name[ MAX_FILE_NAME_SIZE + 1];
    void*   handle;
} TYPE_File;
size ist ein 64-Bit Integer, %d aber ein 32-Bit Formatzeichen. Damit von sprintf() alle 64 Bit ausgewertet werden, musst Du %lld (2x Lima, nicht India) verwenden.

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#6

Beitrag von omue » Mo 17. Feb 2014, 20:05

Danke für Deine schnelle Antwort !

Sorry ich hatte das falsch gepostet.
Auch wenn ich die 64bit Int erst durch 1048576 teile um MB herauszubekommen komm Mist raus.

Deinen Vorschlag hatte ich auch schon probiert.

wenn ich:
sprintf( str, "%lld", isPlay.file->size);
TAP_Osd_PutString1419( rgn, 110, 10, 310 , str, RGB( 200, 200, 240), COLOR_Black);


benutze, kommt auch der gleiche Wert egal welches File gerade abgespielt wird. :confused:
Zuletzt geändert von omue am Mo 17. Feb 2014, 20:10, insgesamt 1-mal geändert.
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
Twilight
Zauberküchencheflehrling mit extra Butter
Zauberküchencheflehrling mit extra Butter
Beiträge: 64949
Registriert: Fr 9. Dez 2005, 09:17
Receivertyp: 1 x SRP 2100(TMS) TFIR und .1 x SRP 2410 M
Wohnort: Wien Umgebung

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#7

Beitrag von Twilight » Mo 17. Feb 2014, 20:15

versuch es mal mit tap_sprint, anstatt sprintf :thinker:

twilight

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 29048
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#8

Beitrag von FireBird » Mo 17. Feb 2014, 20:19

omue hat geschrieben:Auch wenn ich die 64bit Int erst durch 1048576 teile um MB herauszubekommen komm Mist raus.

Das Ergebnis ist trotzdem 64 Bit und somit nicht mit dem 32-Bit-Formatzeichen kompatibel.
sprintf( str, "%lld", isPlay.file->size);
TAP_Osd_PutString1419( rgn, 110, 10, 310 , str, RGB( 200, 200, 240), COLOR_Black);
Da würde ich schon erwarten, dass das funktioniert.
Zuletzt geändert von FireBird am Mo 17. Feb 2014, 20:25, insgesamt 1-mal geändert.

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 29048
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#9

Beitrag von FireBird » Mo 17. Feb 2014, 20:29

Ich habe es gerade ausprobiert und das Problem ist, dass das File-Struct nicht auf die .rec, sondern auf die .inf zeigt und somit erhältst Du auch die Größe der inf.

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#10

Beitrag von omue » Mo 17. Feb 2014, 20:34

[quote="FireBird"]Ich habe es gerade ausprobiert und das Problem ist, dass das File-Struct nicht auf die .rec, sondern auf die .inf zeigt und somit erhältst Du auch die Größe der inf.[/quote]

ok, dann ist es klar, warum das nicht geht.
Dann muß ich es wohl anders machen.

Danke für alle Antworten !


Olaf
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 29048
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#11

Beitrag von FireBird » Mo 17. Feb 2014, 20:46

Ich kann Dir aus ein paar FBLib-Funktionen eine Möglichkeit basteln, wie Du trotzdem an die Größe der Rec kommst. Hängt halt davon ab, was Du im Endeffekt erreichen möchtest.

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#12

Beitrag von omue » Mo 17. Feb 2014, 20:57

FireBird hat geschrieben:Ich kann Dir aus ein paar FBLib-Funktionen eine Möglichkeit basteln, wie Du trotzdem an die Größe der Rec kommst. Hängt halt davon ab, was Du im Endeffekt erreichen möchtest.


Ich bastele gerade an einer Infobox die nicht nur die Programminfos anzeigt, sondern beim Abspielen auch die Fileinfos.
Das geht schon:
-Programminfos jetzt/next mit Zeiten und Fortschrittsbalken.
- Zusatzinfos >Verschlüsselt usw
- Playinfos mit Zeiten und Fortschrittsbalken ( auch bei Timeshift ) Wenn keine Playevents da sind nehme ich den Dateinamen zur info.
( Daher auch die erste Frage im Thread)
- Sprungfunktionen 1Min vor 1 Min zurück usw.

Das ganze ist noch sehr Einfach ohne Grafik Design.
Nun hatte ich mir überlegt beim Abspielen noch die Dateigröße mit anzuzeigen und war etwas verzweifelt :D

FBLib wäre gut, aber da lerne ich ja nix :D :
Viel mehr helft Ihr mir, wenn Ihr meine Fragen beantwortet.

Und dafür :hello: :hello: :hello: :hello:
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 29048
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#13

Beitrag von FireBird » Mo 17. Feb 2014, 21:01

Du kannst natürlich auch das .inf vom Dateinamen abschneiden, die daraus gewonnen .rec öffnen und schon hast Du die Größe. Es gibt nur ein Problem: Du kennst das Verzeichnis nicht, aus der die Datei abgespielt wird.

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#14

Beitrag von omue » Di 18. Feb 2014, 10:28

FireBird hat geschrieben:Du kannst natürlich auch das .inf vom Dateinamen abschneiden, die daraus gewonnen .rec öffnen und schon hast Du die Größe. Es gibt nur ein Problem: Du kennst das Verzeichnis nicht, aus der die Datei abgespielt wird.


Danke nochmal.

Stimmt :(

Ich lege das erst mal auf Eis.
Jetzt habe ich erst noch mit TAP_EPG_GetExtInfo und der Ausgabe zu tun.
Den Text hab ich schon mal. Nun muss ich den auch irgendwie Anzeigen, Abschnippeln usw.
Die Bildausgabe von mehreren Zeilen muß ich noch kapieren.

Olaf
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
Gerti
Nicht mehr bei Topfield-Europe
<b>Nicht mehr bei Topfield-Europe</b>
Beiträge: 15742
Registriert: Fr 9. Dez 2005, 00:16
Receivertyp: Vu+ Uno 4k
Wohnort: Hürth
Kontaktdaten:

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#15

Beitrag von Gerti » Di 18. Feb 2014, 11:06

Hi!

Das musst Du zu Fuß erledigen.
So lange die einzelnen Wörter hinzufügen, wie diese noch in die aktuelle Zeile passen (die Länge kannst Du ja abfragen) und dann eine neue Zeile erzeugen und so weiter...

Gruß,
Gerti

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#16

Beitrag von omue » Di 18. Feb 2014, 12:21

Gerti hat geschrieben:Hi!

Das musst Du zu Fuß erledigen.
So lange die einzelnen Wörter hinzufügen, wie diese noch in die aktuelle Zeile passen (die Länge kannst Du ja abfragen) und dann eine neue Zeile erzeugen und so weiter...

Gruß,
Gerti


Danke für den Tipp.
Mit Strings habe ich mich eigentlich gezankt :D
Aber da muss ich halt mal durch :D :

Olaf
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
Gerti
Nicht mehr bei Topfield-Europe
<b>Nicht mehr bei Topfield-Europe</b>
Beiträge: 15742
Registriert: Fr 9. Dez 2005, 00:16
Receivertyp: Vu+ Uno 4k
Wohnort: Hürth
Kontaktdaten:

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#17

Beitrag von Gerti » Di 18. Feb 2014, 14:11

Hi!

Code: Alles auswählen

int texttolines (char *description) {
  char *ptr;
  char delimiter[] = " ";
  int line = 0;
  int foundlines = 0;
  int addline=0;
  int linelength=0; 
   
  ptr = strtok(description, delimiter);      
  lines[0][0]=0x00;
  
  while (ptr != NULL && line < 220) {
    addline=FM_GetStringWidth( ptr, &Franklin_Gothic_Medium_14_FontData);
  	// naechsten Abschnitt erstellen
   	if (addline+linelength > 485) {
   	  line++;
      TAP_SPrint(lines[line],"%s",ptr);
      linelength=FM_GetStringWidth( lines[line], &Franklin_Gothic_Medium_14_FontData);
    }
    else {
      if (linelength == 0) TAP_SPrint(lines[line],"%s",ptr);
      else TAP_SPrint(lines[line],"%s %s",lines[line],ptr);
      linelength=FM_GetStringWidth( lines[line], &Franklin_Gothic_Medium_14_FontData);
      if (ptr[(strlen(ptr)-1)] == 0x0A){
        line++;
        lines[line][0]=0x00;
        linelength=0;
      }
    }
    ptr = strtok(NULL, delimiter);
  }
  foundlines=line;
  line++;
  while (line < 220) {
    lines[line][0]=0x00;
    line++;
  }
  return foundlines; 
}

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#18

Beitrag von omue » Di 18. Feb 2014, 15:14

Danke Gerti !

Du hast mir jetzt sicherlich einige Stunden grübeln erspart.
Ich werde das mal durchgehen und für mich anpassen.


Die Hilfe hier ist 1A !!!


Olaf
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 29048
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#19

Beitrag von FireBird » Di 18. Feb 2014, 15:32

Vorsicht, da werden ein paar pöse FBLib-Funktionen verwendet. :und_weg:

Benutzeravatar
Gerti
Nicht mehr bei Topfield-Europe
<b>Nicht mehr bei Topfield-Europe</b>
Beiträge: 15742
Registriert: Fr 9. Dez 2005, 00:16
Receivertyp: Vu+ Uno 4k
Wohnort: Hürth
Kontaktdaten:

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

#20

Beitrag von Gerti » Di 18. Feb 2014, 16:29

Hi!

Die kann er aber relativ einfach gegen die API-Funktionen austauschen. Betrifft ja nur FM_GetStringWidth oder habe ich etwas übersehen?

Gruß,
Gerti

Antworten

Zurück zu „SRP/CRP TAP-Bereich“