Seite 1 von 1
Wie Daten an ein Notebook senden (seriell)
Verfasst: Di 14. Mär 2006, 10:54
von gecko1a
Hallo,
seit kurzem bin ich stolzer Eigentümer eines Topfield 5000pVR, nachdem ich
Stundenlang das Forum durchstöbert habe, klasse Forum
.
Mittelfristig möchte ich ein Tap verwirklichen, das ähnlich wie das LCD-TAP von mc2
(danke für die Anregung) die Daten an ein Notebook sendet, anstatt an ein Display.
Da ich noch ein Sub-Notebook Toshiba Libretto verfüge, habe ich mir als Ziel gesetzt,
damit die erweiterte Anzeige, Umsetzung USB -> Netzwerk und fernbedienen meines
Fernsehers (ein/aus, AV und event. Lautstärke) umzusetzen.
Mein Problem ist jetzt, dass ich von C keine Ahnung habe (Assembler, Pascal und Delphi schon)
und die Beispiele beim Topfield zu einfach und die Programme von mc2 zu
gross sind, um mir den Einstieg zu erleichter.
Es wäre klasse, wenn mir vielleicht jemand mal ein minimal Programm für die
serielle Schnittstelle geben könnte (incl. Header) , wie ich einen String mit selbst
eingestellter Baud-Rate gesendet bekomme, damit ich nicht da schon soviel Fehler mache,
was das C-programmieren angeht.
Vielen Dank schon mal für den, der sich die Mühe macht.
Gruß gecko
Verfasst: Di 14. Mär 2006, 11:37
von Harvey
Das geht topfseitig viel einfacher als es beim Display vom mc2 möglich war.
Es gibt die Funktion TAP_Print, die per serieller Schnitstelle eine Zeichenkette ausgibt.
Schwieriger dürfte es als Laie sein, ein PC-Programm zu schreiben, daß die Zeichenkette in Empfang nimmt und gemäß deinen Wünschen darstellt. Vielleicht gibt es sowas aber auch fertig.
Das in Windows eigebaute Hyperterminal könnte das bereits, ist aber alles andere als ein optischer Leckerbissen. Das kannste ausprobieren: Topf seriell per Nullmodemkabel anschließen, Hyperterminal starten, alle Abfragen von wegen Telefonnummer abbrechen, richtigen Comport aussuchen, auf 115200 Bit/s bei 8 Bit, keine Pariät und 1 Stopbit einstellen. Topf rebooten und es sollten Meldungen erscheinen.
Verfasst: Di 14. Mär 2006, 12:25
von Grubix
Hallo Gecko.
Schau mal hier, evtl. hat Softie schon etwas gemacht und ihr könnt euch kurzschließen.
Bis denn dann, Grubix.
Verfasst: Di 14. Mär 2006, 12:41
von Sigittarius-E
Hi gecko1a
Kannst du bitte den Titel "Wie Daten ein ein Notebook senden" korrigieren?
Ist sehr verwirrend worum es lt. Titel geht.
z.B. auf "Wie Daten vom Topf an ein Notebook senden"
Danke!
Verfasst: Di 14. Mär 2006, 13:42
von Sigittarius-E
Danke! (entweder an Gecko1a oder einen Mod)
Edit: Sehe gerade dass Gecko1a ein Edit von 13:35 hat.
Also: Danke Gecko1a!
Verfasst: Di 14. Mär 2006, 13:43
von gecko1a
Harvey hat geschrieben:Das geht topfseitig viel einfacher als es beim Display vom mc2 möglich war.
Es gibt die Funktion TAP_Print, die per serieller Schnitstelle eine Zeichenkette ausgibt.
Schwieriger dürfte es als Laie sein, ein PC-Programm zu schreiben, daß die Zeichenkette in Empfang nimmt und gemäß deinen Wünschen darstellt. Vielleicht gibt es sowas aber auch fertig. ...
Danke, ich war schon etwas verwirrt. Wenn ich aus dem Urlaub bin (z.Z. in Portugal, Sonne und 25 Grad
) werde ich mich mal dransetzen.
Mit dem Frontend für den PC, sehe ich keine Probleme, wenn ich die Daten erstmal auf
PC habe (in Delphi) wird mit der Zeit schon was ansprechendes entstehen.
Danke für die schnelle Antwort und bis dahin
gecko
Verfasst: Mi 15. Mär 2006, 12:07
von gecko1a
So, bin mal ein Stück weiter.
Es sind noch ein paar Fragen offen ( es werden wahrscheinlich auch noch mehr werden):
Würde dieses Programm prinzipiell schon ausreichen, um einen String über die RS232
zu schicken?
Code: Alles auswählen
#include "tap.h"
#define ID_PC-D 0x80000356
TAP_ID( ID_PC-D );
TAP_PROGRAM_NAME("PC-D");
TAP_AUTHOR_NAME("fga");
TAP_DESCRIPTION("Anzeige von Informationen auf dem PC");
TAP_ETCINFO("Ver. 0.0");
bool _exitFlag = FALSE;
int TAP_Main(void)
{
while( _exitFlag == FALSE )
{
TAP_Print( "Test" );
// Wartezeit
// eine Bedingung, die _exitFlag auf true setzt
}
return 0;
}
Wäre dieses Programm automatisch ständig im Speicher / Ausführung (TSR)?
Muss ich Key Kommandos für andere TAPs behandeln, auch wenn ich in meinem
keine Keys "abfange"?
Gibt es eine Systematik für die Vergabe der TAP_ID?
Was muss ich sonst noch beachten, wenn ich ein TSR - TAP mache?
Gibt es noch Richtlinien, die man bei der Veröffentlichung von TAPs beachten muß?
(Oder habe ich das schon überlesen
?)
Wahrscheinlich sind ein paar Fragen richtig dumm, aber ich bitte um Nachsicht, da ich
mich mit den TAP noch nicht allzulange beschäftige.
Danke und Gruß
gecko
Verfasst: Mi 15. Mär 2006, 12:25
von Happy
Hallo,
jedes TAP braucht die Eventhandlerroutine, auch wenn es selbst keine Tasteninformationen braucht. In der Topfielddoku steht auch wie die genau auszusehen hat.
Damit wäre Dein Programm dann lauffähig, aber da du im TAP_Main eine Endlosschleife programmiert hast, wird die Fernbedienung nicht mehr reagieren.
Im TAP_Main macht man normalerweise nur ein paar Initialisierungen.
Die eigentlich Aufgaben des TAPs werden dann im Eventhandler programmiert.
Dieser wird zyklisch aufgerufen, so dass man immer mal wieder etwas Rechenzeit bekommt. Innerhalb eines Aufrufs des Eventhandlers sollte man auch nicht zuviele Dinge machen, da sonst die FB und andere TAPs blockiert werden.
Oft ist es sinnvoll nicht bei jedem Aufruf des Eventhandlers etwas zu machen. Mit TAP_GetTick() kann man einen Zähler abfragen, mit dessen Hilfe sich ein TAP jeweils eine Weile schlafen legen kann.
Für die IDs gibt es nur die Regel dass TAPs mit gleichen IDs nicht gleichzeitig laufen können.
Damit das TAP ein TSR wird muss TAP_Main mit return 1 abgeschlossen werden.
Ich hoffe das hilft erst einmal.
Gruß,
Happy
Verfasst: Mi 15. Mär 2006, 12:53
von gecko1a
Happy hat geschrieben:
...
Ich hoffe das hilft erst einmal.
Gruß,
Happy
Ja klar, danke!
Werde das ganze Beispiel jetzt mal erweitern und hier wieder vorstellen.
Bis dahin, Gruß
gecko
Verfasst: Mi 15. Mär 2006, 13:47
von gecko1a
Nächster Versuch:
Code: Alles auswählen
#include "tap.h"
#define ID_PC-D 0x80000356
TAP_ID( ID_PC-D );
TAP_PROGRAM_NAME("PC-D");
TAP_AUTHOR_NAME("fga");
TAP_DESCRIPTION("Anzeige von Informationen auf dem PC");
TAP_ETCINFO(_Date_);
// Version 0.0
dworld TAP_EventHandler(word event, dword param1, dword param2)
{
static dword tick = 0;
if( tick + 100 < TAP_GetTick() ) // nur jede Sekunde einmal ausführen
{
TAP_Print( "Test" );
tick = TAP_GetTick();
}
return param1
}
int TAP_Main(void)
{
return 1;
}
Wäre das jetzt OK?
Gruß gecko
Verfasst: Mi 15. Mär 2006, 15:18
von Happy
gecko1a hat geschrieben:
Wäre das jetzt OK?
Ich würde mal sagen,
Gruß,
Happy
Verfasst: Mi 15. Mär 2006, 16:39
von gecko1a
Dann kann ich mich ja mal weiter einlesen.
Am Wochenende bin ich aus dem Urlaub und dann wird die Praxis folgen.
Gruß gecko
Verfasst: Mi 15. Mär 2006, 18:38
von Elle4u
gecko1a hat geschrieben:Dann kann ich mich ja mal weiter einlesen.
Am Wochenende bin ich aus dem Urlaub und dann wird die Praxis folgen.
Gruß gecko
Klasse.
Bin ja mal gespannt was von Dir so kommt.
Am Besten lädst Du Dir mal ein paar TAPs runter. In vielen ist der Source dabei und Du kannst mal das Grundgerüst weiter erforschen...
Verfasst: Mi 15. Mär 2006, 18:59
von gecko1a
Elle4u hat geschrieben:
...
Am Besten lädst Du Dir mal ein paar TAPs runter. In vielen ist der Source dabei und Du kannst mal das Grundgerüst weiter erforschen...
Hab ich ja schon gemacht, aber zwei Sachen gleichzeitig lernen ist hat etwas aufwendiger.
(TAP und C
)
Gruß gecko
Verfasst: Mi 15. Mär 2006, 19:27
von Elle4u
gecko1a hat geschrieben:Hab ich ja schon gemacht, aber zwei Sachen gleichzeitig lernen ist hat etwas aufwendiger.
(TAP und C
)
Das kann ich gut verstehen. Ging mit die letzten Monate auch so
Aber hier im Forum bekommt man ja gute Unterstützung...
Verfasst: Do 16. Mär 2006, 08:48
von ibbi
gecko1a hat geschrieben:Hab ich ja schon gemacht, aber zwei Sachen gleichzeitig lernen ist hat etwas aufwendiger.
(TAP und C
)
Für C gibt es immerhin jede Menge gute Literatur, bei der Dokumentation der API kann man leider oft nur raten, was gemeint ist.
Verfasst: Do 16. Mär 2006, 11:40
von gecko1a
ibbi hat geschrieben:Für C gibt es immerhin jede Menge gute Literatur, bei der Dokumentation der API kann man leider oft nur raten, was gemeint ist.
Literatur für C habe ich schon gefunden und es ist ja nicht sooo weit weg von Pascal.
Und für die API gibt es ja ein gutes Forum
Bis dahin, Gruß
gecko