PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FMS32 dll-Datei als Schnittstelle



FirefighterAC
30.06.2009, 17:56
Moin,

ich hab da ne Idee, weiss aber nicht wie ich diese Umsetzen könnte. Es geht sich um folgendes:
Ich möchte gerne eine Art Statustafel mit FMS32 koppeln, um die aktuellen Statusmeldungen bzw. den Status eines Fahrzeuges anzuzeigen (z.B. 8-44-1 Kennung 3). Das Ganze wollte ich dann über ein kleines VB-Programm steuern. Was mir natürlich dafür noch fehlt, ist die Schnittstelle zwischen meinen VB-Prog und FMS32 in der Form einer DLL o.ä..

Wer hat ne Idee? Oder gib es das schon?

Gruss
Lorenz

Newty
30.06.2009, 19:23
Öhm.. ne, Daten kommen aus FMS nur über Aktionen mit Parametern oder übers TCP/IP Interface raus. Du solltest dich also eher aufs TCP/IP stürzen. Einfach mal mit Telnet aufm FMS im Serverbetrieb einloggen und gucken, was da rauspurzelt. Ist sehr gut verständlich und menschenlesbar ^^

FirefighterAC
30.06.2009, 22:39
Ok. Und ab welcher FMS Version gibs das TCP/IP Interface.
ich glaub meine Version is schon Asbach

Mister-X
01.07.2009, 06:51
Da du es denke ich legal hast doch kein problem die neuste Version zu laden... entweder via Mail an Herr Jahn, oder wenn bei dir schon auf der Rechnung mit deinen Zugangsdaten für den Download bereich.

FirefighterAC
02.07.2009, 14:50
Soo, hab noch mal nachgeschaut. Ich hatte da noch ne CD-Sammlung von nem AFU "geerbt". Unteranderem mit FMS32 Pro.
@Newty: kannst du mir kurz erklären, wie du das meinstest mit Telnet und dem TCP/IP?

Newty
03.07.2009, 21:12
okay...

In der Software kannste im Servermodus ja nen Port einstellen, der steht normalerweise auf 9300. Auf diesem TCP-Port kannst du dich mit dem Server verbinden. Das ganze ist ne ASCII-Basierende Verbindung, also vom Menschen lesbar, von daher können wir uns mit Telnet das ganze mal näher anschauen.

Also Start->Ausführen(unter Vista einfach die Windows-Taste auf der Tastatur und gleichzeitig R)

dort dann telnet localhost 9300 eingeben. Das erzeugt eine Verbindung übern loopback, daraufhin kommt dann ein schwarzes Fenster. Wenn nicht, Servereinstellungen und Firewall prüfen.

In diesem Fenster kannst du nun mit dem Server kommunizieren - oder einfach warten, bis Telegramme auflaufen, um das Format von denen zu sehen.

Normalerweise gibt help dir alles aus, was du wissen musst. Version 3.2.1 ist da noch schweigsam, ich meine aber, dass 3.2.2 mehr Befehle(unter anderem ein Dump der letzten Auswertungen) möglich macht. Eine genauere Anleitung, was da durch durchpurzelt, ist in der neues321.pdf (http://www.heirue-soft.de/neues321.pdf). Dort ist wie gesagt nicht alles enthalten, die Befehle, die vom Client gegeben werden können, sind dort nicht dokumentiert. Einfach mal mitm telnet spielen

FirefighterAC
03.07.2009, 23:03
Danke
ich versuch mal mein glück

Newty
04.07.2009, 00:02
Nicht vertippen und mit Backspace korrigieren, mag der Server nicht :-)
Also einfach Enter und nochmal versuchen
Wenn er keine Befehle annimmt, einfach einmal Tab und danach Enter drücken, das löst das ganze meist. Ist nicht dafür geschrieben, dass man da per Hand drangeht :P

FirefighterAC
05.07.2009, 01:31
Ich hab mal en bissl rumgespielt und das
"FMSTlg 69610411 6 9 6961 0411 3 0 0 0 0 0 0 0 0"
rausbekommen
jetzt muss ich nur das hinkriegen, dass das Prog mit die kennung und den Status rausfiltert und z.b. in einer Textbox ausgibt.

Newty
05.07.2009, 01:35
Das sollte doch keine Sache sein, da mal eben den String an \t zu splitten :-)
Das bisschen Grafik, was da folgt, ist dann Spielkram :D
Was wo steht ist unter Punkt 3.1 in der neues321.pdf

FirefighterAC
05.07.2009, 16:05
Ich gebs auf ;-)
ich jetzt zwar wie die Felder getrennt sind. Aber wie man das in VB6 aufteilt und in z.b. einzelne Variablen schreibt, das wird irgendwie nix.
Ich hab das mal vor Jahren gelernt und dann nur einmal angewendet und dannach nie wieder.

Ralf
05.07.2009, 19:14
Hallo,

schau mal in der Hilfe nach MID.

Gruß Ralf

FirefighterAC
05.07.2009, 19:54
Mid$ ist mir bekannt, das Problem was ich da nur sehe ist, das wenn die kennung oder der Status eine andere Länge besitzt als sonst.

Newty
05.07.2009, 22:00
Ich hab keine Ahnung von VB, aber täte nicht das hier genau das, was gesucht is?
http://www.vbarchiv.net/commands/Split.php

FirefighterAC
05.07.2009, 23:14
Jetzt funtz. Mann bin ich en Depp

rescue_90
08.07.2009, 23:44
sorry das ich das Thema wieder aufreiße, aber ich habe noch Probleme, habe vor den Alarmierungstext zu untergliedern in: Alarmierte RIC, Einsatzstichwort, Straße und Besonderes wie kann ich diese Daten aus folgendem Telnet-Text in VB6 Textfelder einfügen lassen, sodass sich mein Programm öffnet und die Daten in den einzelnen Textfeldern stehen...
Hier mal ein Beispieltext:
Einsatznummer/Einsatzstichwort)Uhrzeit/Ort:(Name)/Musterstraße(Hausnummer)//weitere Infos
Hoffe ihr versteht was ich meine...Danke

Newty
09.07.2009, 02:32
Uih... Mit Telnet ists nur zum Spielen geeignet oder wird ne Fummellösung. Telnet ist ne eigenständige Software, die zur Bildschirmausgabe in der Konsole gedacht ist.

Variante 1 wäre, dass du dich in TCP/IP Verbindungen mit VB6 einliest(Stichwort fürn Beispiel wäre dann TCP Client). Dann biste den ganzen Telnet-Kram los und hast ne Software, die AdHoc und ohne Spielereien funktioniert. Vorsicht: In den Java Beispielen zu diesem Thema wird sehr simpel gekocht - zu simpel für meinen Geschmack. Die Beispiele dort tun zum Beispiel wirklich nix anderes, als auf eingaben vom Server zu warten und bei Verbinungsabbruch zu terminieren. Was anderes können die nicht und hängen dann auch brav so lange mit viel Prozessorlast beim warten auf den Server. Dort also am besten erstmal wieder in nem anderen Projekt spielen und wenn das rund läuft, in dein laufenden Projekt integrieren.

Variante 2, die sicherlich Fehler produzieren wird und auch nicht so ohne weiteres OutOfBox funktionieren wird, ist, die Ausgabe von Telnet in eine Textdatei umzuleiten.

Aufruf wäre dann zum Beispiel telnet 9300 > C:\DeinOrdner\DeineTelegramme.txt
Mit diesem Aufruf schreibt Telnet alles, was es empfängt, in die Datei. Die kannst du dann relativ simpel auswerten. Ob du da Ärger ausm Dateisystem bekommst, wenn du gleichzeitig zu lesen und zu schreiben versuchst(Der Fall wird früher oder später auftreten), kann ich dir nicht sagen. Auch wird halt alles auf der Festplatte zwischengespeichert, sicherlich keine sonderlich effektive und schnelle Lösung, erst recht, wenn der Rechner noch zum Arbeiten benutzt wird. Problematisch ist hier auch, dass du dich auf Einwegkommunikation vom Server zum Client beschränken musst.

rescue_90
09.07.2009, 20:38
vielen dank erstmal, werde mich mal reinlesen auch was Delphi angeht... Bei Fragen weiss ich ja jetzt wo mir geholfen wird...:) lg

Ralf
09.07.2009, 22:05
Hallo,

schau dir mal den Forenbeitrag "Übergabe nach Access" an.

Ist zwar VBA, aber das sollte in VB6 gleich sein. Ist auch nicht POCSAG, haben wir hier (noch) nicht, aber die Vorgehensweise solte sich Dir erschließen. Den hinteren Teil der Meldung kannst Du mit der SPLIT-Funktion zerlegen, es gibt dort ja keine festen Feldlängen.

Gruß Ralf

rescue_90
16.07.2009, 23:30
danke dir erstmal...