Seite 1 von 2

Nice Display API, Standalone/TAPCOM

Verfasst: So 26. Nov 2006, 11:55
von Happy
Hallo,

hier die Datei, die man einbinden muss, um Nice Display fernzusteuern.
Vielen Dank an Jag, von dem ich das Prinzip und etwas Sourcecode ausleihen durfte.

Es gibt bisher 2 Möglichkeiten:
1. Ersetzen der ersten beiden Textzeilen von ND (z.B. Sender und Titel)
2. kurze Einblendung einer Meldung

Das Prioritätsmanagement, wenn mehrere TAPs auf die API zugreifen ist noch nicht sehr ausgeklügelt.
Hat ein TAP die Kontrolle, dann können die anderen nicht, ausgenommen ist die kurze Meldung.

Download ND API Standalone

-----------------------------------------------------------------

Es gibt nun ab Version 1.8 beta 7 auch die Möglichkeit ND mit TAPCOM fernzusteuern. Mit der Beispielimplementierung ist es fast kompatibel zur Standalone-API. Es wurde nur der TAP-ID Parameter bei allen Aufrufen entfernt.

Download ND API auf TAPCOM-Basis


Vorläufig funktionieren beide Fernsteuerungs-Methoden parallel.
Wobei immer nur ein TAP gleichzeitig darauf zugreifen kann

Gruß,
Happy

AW: Nice Display API

Verfasst: So 26. Nov 2006, 12:00
von StevieC
[quote=""Happy""]Hallo,

hier die Datei, die man einbinden muss, um Nice Display fernzusteuern.

Es gibt bisher 2 Möglichkeiten:
1. Ersetzen der ersten beiden Textzeilen von ND (z.B. Sender und Titel)
2. kurze Einblendung einer Meldung

Das Prioritätsmanagement, wenn mehrere TAPs auf die API zugreifen ist noch nicht sehr ausgeklügelt.
Hat ein TAP die Kontrolle, dann können die anderen nicht, ausgenommen ist die kurze Meldung.

Download ND API

Gruß,
Happy[/quote]

Super, danke Happy...ich denke für *piep kann man da einiges einbauen.

Wäre es für die Zukunft auch möglich, Symbole anzeigen zu lassen? z.Bsp. Warnhinweise usw.?

Gruß

StevieC

AW: Nice Display API

Verfasst: So 26. Nov 2006, 12:07
von Happy
[quote=""StevieC""]
Wäre es für die Zukunft auch möglich, Symbole anzeigen zu lassen? z.Bsp. Warnhinweise usw.?
[/quote]
Möglich ist wohl fast alles. Sinnvoll sollte es halt sein.
Jetzt alles im Display anzuzeigen, was man auf dem Bildschirm viel besser sieht,
fände ich nicht so doll .

Gruß,
Happy

AW: Nice Display API

Verfasst: So 26. Nov 2006, 12:11
von ibbi
Wäre es nicht sinnvoller, alle Funktionen mit NDAPI_ anfangen zu lassen?

AW: Nice Display API

Verfasst: Fr 6. Apr 2007, 11:21
von rugi
Ein dickes Dankeschön für das tolle API!

Hier meine Erfahrungen zum API / Minianleitung:
1) Initialize_ND_API() z.B. im TAP_Main()
2) ShowDisplay_NDAPI(....)
3) im TAP_Eventhandler:
if (event==EVT_IDLE) SetHeartBeat_NDAPI(ID_POINTER_ARRAY);
// nur wenn SetHeartBeat passiert, bleibt der Text; sonst ist nach Durchscrollen wieder Originalanzeige vom ND
4) am Ende CancelDisplay_NDAPI(ID_POINTER_ARRAY)

ShowMessage_NDAPI() ist auch supernützlich
Bemerkung ---> Damit scrollt der Text nicht?!!

Hier die wichtigen Ausschnitte meines Test-TAPs (Mit TSRCommander Support); ich kann es Interessierten komplett geben, weiss aber noch nicht wo ich es ablegen soll (wenn wer einen Tipp hätte...)

:) rugi

dword TAP_EventHandler(word event, dword param1, dword param2)
{
if (event==EVT_IDLE) {
SetHeartBeat_NDAPI(ID_POINTER_ARRAY);
}
return param1;
}
void TSRCommanderConfigDialog()
{
ShowDisplay_NDAPI("Zeile 1","Zeile 2 etwas länger damit es scrollt", CmdUseBothLines, ID_POINTER_ARRAY);
return;
}
bool TSRCommanderExitTAP (void)
{
CancelDisplay_NDAPI(ID_POINTER_ARRAY);
return TRUE;
}
int TAP_Main(void)
{
Initialize_ND_API();
return 1;
}

AW: Nice Display API

Verfasst: Fr 6. Apr 2007, 11:27
von Elle4u
Dieser Thread ist ja noch ganz an mir vorbei gegangen :oops:

Da lässt sich ja sicherlich einiges machen :D

AW: Nice Display API

Verfasst: Sa 7. Apr 2007, 13:36
von rugi
Hier für Interessierte mein TestTAP zum Download, das die ND API 1.0 nutzt:
Es nennt sich NDsendtext V0.1a
Es zeigt in der 2. Zeile des ND die verfügbaren Audiokanäle des aktuellen TV Kanals an.
z.B. "0 deu,fra" beim ARTE oder "0 deu,ddDB" (DB steht beim Dolbykanal)
Das 1. Zeichen "0" ist ein Zähler 0-9 (modulo 10), der die im Source einstellbare Updaterate sichtbar macht.
Diese Info sieht man recht gut, wenn man den 2-Zeilenmodus einschaltet.

Bitte vorm Start unbedingt ND 1.8 starten; ich hab nichts eingebaut, um Abzufangen, wenn ND nicht gestartet ist.
Kann derzeit nach Start NUR mit TSRCommander-Exit beendet werden!

Wer das NDsendtext.c compilieren will, braucht neben ND_API100.c auch TSRCommander.inc

Downloadlinks:
http://www.file-upload.net/download-241 ... t.tap.html
http://www.file-upload.net/download-241 ... ext.c.html

Viel Spaß :) rugi

AW: Nice Display API

Verfasst: Di 10. Apr 2007, 16:42
von Elle4u
Mal eine Frage zur API:

Es funktioniert soweit, wenn ich die API nur in einem c-File include.
Wenn ich dann aber die Funktion in einem anderen c-File nutzen will sagt der Compiler:

Code: Alles auswählen

yesno.c: In function `YesNo_Show':
yesno.c:446: warning: implicit declaration of function `ShowDisplay_NDAPI'
yesno.c:446: `CmdUseBothLines' undeclared (first use in this function)
yesno.c:446: (Each undeclared identifier is reported only once
yesno.c:446: for each function it appears in.)

Wenn ich die API dann im zweiten c-File ebenfalls include erscheint:

Code: Alles auswählen

yesno.o: In function `ShowDisplay_NDAPI':
TAPCOM/ND_API100.c(.rodata+0x0): multiple definition of `ND_CONTROL'
filer.o(.rodata+0x0):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `ShowDisplay_NDAPI':
TAPCOM/ND_API100.c(.text+0x0): multiple definition of `ShowDisplay_NDAPI'
filer.o(.text+0x0):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `GetStatus_NDAPI':
TAPCOM/ND_API100.c(.text+0x1c8): multiple definition of `GetStatus_NDAPI'
filer.o(.text+0x1c8):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `SetHeartBeat_NDAPI':
TAPCOM/ND_API100.c(.text+0x234): multiple definition of `SetHeartBeat_NDAPI'
filer.o(.text+0x234):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `GetHeartBeat_NDAPI':
TAPCOM/ND_API100.c(.text+0x2f4): multiple definition of `GetHeartBeat_NDAPI'
filer.o(.text+0x2f4):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `CancelDisplay_NDAPI':
TAPCOM/ND_API100.c(.text+0x360): multiple definition of `CancelDisplay_NDAPI'
filer.o(.text+0x360):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `ShowMessage_NDAPI':
TAPCOM/ND_API100.c(.text+0x428): multiple definition of `ShowMessage_NDAPI'
filer.o(.text+0x428):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `Check_ND_API_Signature':
TAPCOM/ND_API100.c(.text+0x538): multiple definition of `Check_ND_API_Signature'

filer.o(.text+0x538):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `Search_ND_API_Signature':
TAPCOM/ND_API100.c(.text+0x700): multiple definition of `Search_ND_API_Signature
'
filer.o(.text+0x700):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `Initialize_ND_API':
TAPCOM/ND_API100.c(.text+0x92c): multiple definition of `Initialize_ND_API'
filer.o(.text+0x92c):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `ND_API_Status':
TAPCOM/ND_API100.c(.text+0xa0c): multiple definition of `ND_API_Status'
filer.o(.text+0xa0c):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `Disable_ND_API':
TAPCOM/ND_API100.c(.text+0xacc): multiple definition of `Disable_ND_API'
filer.o(.text+0xacc):TAPCOM/ND_API100.c: first defined here
yesno.o: In function `strncmp_JagsEPG':
TAPCOM/ND_API100.c(.text+0xb0c): multiple definition of `strncmp_JagsEPG'
filer.o(.text+0xb0c):TAPCOM/ND_API100.c: first defined here

Kann mir jemand helfen?

AW: Nice Display API

Verfasst: Di 10. Apr 2007, 18:25
von rugi
Hi Elle4u,

also ich vermute:
im ND_API100.c sind anfangs die function prototypes und danach bei "FOR INTERNAL USAGE ONLY" die function implementierungen.
Letztere dürfen nicht mehrfach dem Compiler gegeben werden, was ja passiert, wenn du 2x das nd_api100.c includierst.

-> Ich würde das nd_api100.c splitten in ein nd_api100.h, wo alles nur bis "FOR INTERNAL USAGE ONLY" drin ist - dieses kann man mehrfach includieren;
und ein den Rest, den man nur 1x includiert.

Dann dürfte es klappen. Ich will das nicht selbst machen und hier posten, da das ND_API100.c ja nicht von mir stammt ;)

hope this helps :) rugi

AW: Nice Display API

Verfasst: Di 10. Apr 2007, 19:10
von Happy
[quote=""rugi""]
also ich vermute:
im ND_API100.c sind anfangs die function prototypes und danach bei "FOR INTERNAL USAGE ONLY" die function implementierungen.
Letztere dürfen nicht mehrfach dem Compiler gegeben werden, was ja passiert, wenn du 2x das nd_api100.c includierst.
[/quote]

Hi,

genauso ist es. Ich habe das der Einfachheit wegen so gemacht.
Sauber wäre, es zu splitten, wie rugi gesagt hat. Die C-Datei muss dann aber separat kompiliert und gelinkt werden.

Gruß,
Happy

AW: Nice Display API

Verfasst: Di 10. Apr 2007, 20:16
von rugi
Ich hab mir doch erlaubt das ND_API100.inc File von Happy anzupassen, sodaß es mehrmals includiert werden kann.
Das geschieht mit #ifndef statements.
Im Anhang als ND_API100.h gezipped.
:) rugi

AW: Nice Display API

Verfasst: Di 10. Apr 2007, 20:28
von Elle4u
[quote=""rugi""]Ich hab mir doch erlaubt das ND_API100.inc File von Happy anzupassen, sodaß es mehrmals includiert werden kann.[/quote]

Danke, werde es mal ausprobieren :)

AW: Nice Display API

Verfasst: Di 10. Apr 2007, 20:32
von Elle4u
[quote=""Elle4u""]Danke, werde es mal ausprobieren :) [/quote]

Funktioniert leider nicht :cry: :

Code: Alles auswählen

yesno.o: In function `ShowDisplay_NDAPI':
TAPCOM/ND_API100.h(.rodata+0x0): multiple definition of `ND_CONTROL'
filer.o(.rodata+0x0):TAPCOM/ND_API100.h: first defined here
yesno.o: In function `ShowDisplay_NDAPI':
TAPCOM/ND_API100.h(.text+0x0): multiple definition of `ShowDisplay_NDAPI'
filer.o(.text+0x0):TAPCOM/ND_API100.h: first defined here
yesno.o: In function `GetStatus_NDAPI':
TAPCOM/ND_API100.h(.text+0x1c8): multiple definition of `GetStatus_NDAPI'
filer.o(.text+0x1c8):TAPCOM/ND_API100.h: first defined here
yesno.o: In function `SetHeartBeat_NDAPI':
TAPCOM/ND_API100.h(.text+0x234): multiple definition of `SetHeartBeat_NDAPI'
filer.o(.text+0x234):TAPCOM/ND_API100.h: first defined here

AW: Nice Display API

Verfasst: Mi 11. Apr 2007, 00:05
von Happy
Habe ich schon erwähnt, dass die nächste Version wahrscheinlich TAPCOM unterstützen wird ? :u:
Wenn ich nur mal Lust zum Testen hätte, gäbe es das schon längst. Programmiert ist es schon lange.

Gruß,
Happy

AW: Nice Display API

Verfasst: Mi 11. Apr 2007, 00:26
von FireBird
[quote=""Happy""]Habe ich schon erwähnt, dass die nächste Version wahrscheinlich TAPCOM unterstützen wird ? :u: [/quote]
Ahhhh.... :up:

AW: Nice Display API

Verfasst: Mi 11. Apr 2007, 09:24
von Elle4u
[quote=""Happy""]Habe ich schon erwähnt, dass die nächste Version wahrscheinlich TAPCOM unterstützen wird ? :u:
Wenn ich nur mal Lust zum Testen hätte, gäbe es das schon längst. Programmiert ist es schon lange.[/quote]

Klasse :up:

Muss ich dann wieder alles umstellen oder werden dann nur die Befehle ersetzt?
Bzw. OpenChannel etc.?

AW: Nice Display API

Verfasst: Mi 11. Apr 2007, 09:25
von Elle4u
@rugi: Irgend eine Idee, warum es so auch nicht funktioniert?

[quote=""Elle4u""]Funktioniert leider nicht :cry::[/quote]

AW: Nice Display API

Verfasst: Mi 11. Apr 2007, 09:59
von Happy
[quote=""Elle4u""]Klasse :up:

Muss ich dann wieder alles umstellen oder werden dann nur die Befehle ersetzt?
Bzw. OpenChannel etc.?[/quote]
Ich versuche einfach, eine neue aber kompatible API-Datei bereitzustellen. Diese kapselt dann die Befehle aus der TAPCOM wie Openchannel usw.

Gruß,
Happy

AW: Nice Display API

Verfasst: Mi 11. Apr 2007, 10:01
von Elle4u
[quote=""Happy""]Ich versuche einfach, eine neue aber kompatible API-Datei bereitzustellen. Diese kapselt dann die Befehle aus der TAPCOM wie Openchannel usw.[/quote]

Danke. :up:

Hoffentlich kann ich diese dann mehrfach einbinden :und_weg:

:D

AW: Nice Display API

Verfasst: Mi 11. Apr 2007, 10:20
von Happy
[quote=""Elle4u""]
Hoffentlich kann ich diese dann mehrfach einbinden :und_weg:

:D [/quote]
Ich fürchte nein.
Wenn Du die ND-API an mehreren Stellen im Programm verwenden willst, dann lohnt es sich doch ein eigenes Modul dafür zu machen. Nur dieses Modul muss dann das API-File einbinden.
Zu Deinem Problem: Offensichtlich hast Du immer noch mehrfache Deklarationen.
In einem C-File sollten die Prozedur-Prototypen nur einmal deklariert werden.
Der eigentliche Sourcecode dieser Prozeduren darf im Projekt nur einmal kompiliert und dazugelinkt werden.
Variablen dürfen nur einmal deklariert werden.

Gruß,
Happy