Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

Das Unterforum für Diskussionen rund um die Technik, Bedienung, Konfiguration usw. Das ist auch die erste Anlaufstelle für Bastler mit Fragen zu den Editoren.
Antworten
Nachricht
Autor
Benutzeravatar
fabiandb
Beiträge: 10
Registriert: 02.03.2019 15:34:29

Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#1 Beitrag von fabiandb »

Hallo zusammen,

in dem Thema TCP bin ich ein Wenig anfängermäßig eingelesen, komme jedoch nicht auf den Sprung, wie der Zusi HELLO-Befehl abgesendet wird.
Ich möchte mich mit dem "Hercules"-Programm (Siehe https://www.hw-group.com/software/hercu ... up-utility) mit Zusi verbinden und Daten abfragen.
Das Ziel ist es ein Datenaustausch herzustellen - für den Anfang.

Die Zusi-Doku (Seite 718ff) ist nicht anfängerfreundlich geschrieben, ich verstehe nicht wie sich der Befehl HELLO, um den Clienten in Zusi anzumelden, zusammensetzt.
"00 01 00 01 00 01 00 02 00 03 00 04" kann es nicht sein, da fehlen ja die benötigten Infos wie Indentifikation des Anwenders. Wie lautet dieser Befehl dann richtig?

Ich danke euch für die Hilfe oder jegliche Links zum Weitereinlesen.
Viele schöne Grüße,
Fabi.

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#2 Beitrag von Johannes »

Schau mal in der Doku unter "11.3.4 Beispielprotokoll". Da ist ein kommentierter Datenaustausch abgedruckt.

Benutzeravatar
fabiandb
Beiträge: 10
Registriert: 02.03.2019 15:34:29

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#3 Beitrag von fabiandb »

Vielen Dank für den Hinweis,

leider werde ich dümmer wie davor.
Also

"01 00 01 00 02 00 02 00 46 61 68 72 70 75 6C 74 32 2E 30" oder
"01 01 02 02 00 46 61 68 72 70 75 6C 74 32 2E 30"

funktionieren schonmal nicht, da kommt keine Antwort.
Ich verstehe leider nicht, wie ich das Beispiel lesen soll?

Fehlen mir Grundlagen? Kann ich mich noch weiter einlesen ?

Viele Grüße

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#4 Beitrag von Alwin Meschede »

Im Programmverzeichnis liegt Beispiel-Quellcode im Ordner _Docu\demos.
Es gibt auch einen Wireshark-Dissector, falls man sehen will was über den Draht geht: https://github.com/zusitools/tcp_dissector
Mein Youtube-Kanal: youtube.com/echoray1

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#5 Beitrag von Johannes »

fabiandb hat geschrieben: 02.05.2022 13:58:02 Ich verstehe leider nicht, wie ich das Beispiel lesen soll?
In der mittleren Spalte steht ein kompletter Bytestring, der zum besseren Verständnis umbrochen und eingerückt ist. Was du an Zusi schickst, ist also z.B. "00 00 00 00 01 00 00 00 00 00 01 00 […] 32 2E 30 FF FF FF FF FF FF FF FF"
fabiandb hat geschrieben: 02.05.2022 13:58:02 Fehlen mir Grundlagen?
Ja. In den Tabellen ist nur die ID von Knoten und ID und Datentyp von Attributen vermerkt. Wie du die als Bytes serialisierst, erklärt dir "11.3.1 Aufbau des Datenformats".

Es gibt auch fertig implementierte TCP-Clients in diversen Sprachen: viewtopic.php?f=73&t=12650

Benutzeravatar
fabiandb
Beiträge: 10
Registriert: 02.03.2019 15:34:29

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#6 Beitrag von fabiandb »

Johannes hat geschrieben: 02.05.2022 14:03:49 In der mittleren Spalte steht ein kompletter Bytestring, der zum besseren Verständnis umbrochen und eingerückt ist. Was du an Zusi schickst, ist also z.B. "00 00 00 00 01 00 00 00 00 00 01 00 […] 32 2E 30 FF FF FF FF FF FF FF FF"
Vielen Dank hierfür, damit funktioniert schonmal die Verbindung und ich kann mich voranarbeiten.
PS: Mein Ziel ist die Einarbeitung einer TCP-Verbindung zwischen Android und Zusi, um am Tablet in einer eigens programmierten App Daten aus Zusi anzuzeigen. (Klingt simpel, der Weg dahin ist schwer wie ich jetzt schon merke.)

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#7 Beitrag von Johannes »

fabiandb hat geschrieben: 02.05.2022 14:10:24 PS: Mein Ziel ist die Einarbeitung einer TCP-Verbindung zwischen Android und Zusi, um am Tablet in einer eigens programmierten App Daten aus Zusi anzuzeigen. (Klingt simpel, der Weg dahin ist schwer wie ich jetzt schon merke.)
So was wie hier also? https://github.com/nonesense84/QDmi (aus viewtopic.php?f=73&t=15777)


Benutzeravatar
F. Schn.
Beiträge: 6630
Registriert: 24.10.2011 18:58:26

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#9 Beitrag von F. Schn. »

Für den Arduion gibt es hier eine fertige MessageLoop: viewtopic.php?p=274144#p274144
Aber für ein FIS-Display hat das noch niemand probiert.

Für das Protokoll gibt es hier ein Wireshark-Plugin: viewtopic.php?f=73&t=12635
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
fabiandb
Beiträge: 10
Registriert: 02.03.2019 15:34:29

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#10 Beitrag von fabiandb »

Ich bin seit gestern nur am Tüfteln, weil - egal wie - die Zusi-Meldung "Protokoll-Version 2 erwartet" auftaucht und ich somit keine Verbindung herstelle.
Dabei müsste ich das Prinzip doch verstanden haben ...

Code: Alles auswählen

//00 00 00 00 01 00 00 00 00 00 01 00 04 00 00 00 01 00 02 00 04 00 00 00 02 00 02 00 0A 00 00 00 03 00 46 61 68 72 70 75 6C 74 05 00 00 00 04 00 32 2E 30 FF FF FF FF FF FF FF FF
//000000000100000000000100040000000100020004000000020002000A00000003004661687270756C74050000000400322E30FFFFFFFFFFFFFFFF

byte[] test = {(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x04,(byte)0x00,(byte)0x00,(byte)0x00
,(byte)0x01,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x04,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x0A,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x03
,(byte)0x00,(byte)0x46,(byte)0x61,(byte)0x68,(byte)0x72,(byte)0x72,(byte)0x75,(byte)0x6C,(byte)0x74,(byte)0x05,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x04
,(byte)0x04,(byte)0x00,(byte)0x32,(byte)0x2E,(byte)0x30,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF};
Von Zusi bekomme ich aufs Handy eine Antwort von 0 Bytes-Länge.
Vielleicht kennt sich zufällig jemand mit Java / in dem Gebiet aus :rolleyes:

jonathanp
Beiträge: 284
Registriert: 01.06.2015 14:11:25
Aktuelle Projekte: http://www.zusidatenbank.de/
Wohnort: BW Schöneweide

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#11 Beitrag von jonathanp »

Ich würde dir raten, das bereits erwähnte Wireshark-Tool zu verwenden, um die von deinem Programm gesendeten Bytes mit das Paket von ein andere Programme zu vergleichen, wie z.b. ZusiMeter oder das TCPOutput Demo. Ein identische Nachricht muss funktionieren, dann kannst du anfang, etwas zu ändern.

Das hat mir sehr geholfen, als ich anfing, das Protokoll zu verwenden.
Autor - Zusi 3 C++ Client, zusidatenbank.de - Das Zusi3 Addon-Datenbank

Benutzeravatar
fabiandb
Beiträge: 10
Registriert: 02.03.2019 15:34:29

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#12 Beitrag von fabiandb »

Danke für die Empfehlung.
Ich lass es gut sein, nachdem ich mir das in Wireshark angeguckt habe.

Ist mir etwas zu kompliziert und demotiviert mich nur, keine Fortschritte machen zu können.
Werde versuchen eine autarke Lösung für das FIS zu finden.

Viele Grüße.

Benutzeravatar
F. Schn.
Beiträge: 6630
Registriert: 24.10.2011 18:58:26

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#13 Beitrag von F. Schn. »

Wenn du in Java programmierst, solltest du dir auf jeden Fall eine Zwischenschicht bauen und den Header auf keinen Fall von Hand schreiben. Das solltest du wirklich nur machen, wenn du mit sehr Hardwarenahen Sprachen programmierst.

Wenn du in Java programmierst, solltest du eventuell versuchen, ob du den Autor von dem alten Java-Client (-> viewtopic.php?f=73&t=13648 ) erreichst, oder alternativ kannst du auch versuchen, dieses Programm von C# sinngemäß auf Java zu übertragen. -> viewtopic.php?f=73&t=18049

Wenn du doch den Handshake von Hand zusammenstellen musst, bietet es sich an, ihn wie folgt zu formatieren:

Code: Alles auswählen

byte[] test = {
(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
(byte)0x01,(byte)0x00,
(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,
(byte)0x01,(byte)0x00,
(byte)0x04,(byte)0x00,(byte)0x00,(byte)0x00,
(byte)0x01,(byte)0x00,
(byte)0x02,(byte)0x00,
(byte)0x04,(byte)0x00,(byte)0x00,(byte)0x00,
(byte)0x02,(byte)0x00,
(byte)0x02,(byte)0x00,
(byte)0x0A,(byte)0x00,(byte)0x00,(byte)0x00,
(byte)0x03,(byte)0x00,
(byte)0x46,(byte)0x61,(byte)0x68,(byte)0x72,(byte)0x72,(byte)0x75,(byte)0x6C,(byte)0x74,
(byte)0x05,(byte)0x00,(byte)0x00,(byte)0x00,
(byte)0x04,
(byte)0x04,(byte)0x00,(byte)0x32,(byte)0x2E,(byte)0x30,
(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,
(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF};
Du kannst hier sehen, dass ich ab dem 0x05 nicht mehr so genau weiß, was du da vor hast. Ich glaube, die Länge stimmt nicht und vielleicht ist das 0x04 doppelt.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#14 Beitrag von Johannes »

fabiandb hat geschrieben: 03.05.2022 14:39:16 Vielleicht kennt sich zufällig jemand mit Java / in dem Gebiet aus :rolleyes:
Ja, du hast einen Tippfehler in deinem Bytestring. An der 13. Position von rechts steht zweimal 0x04, statt einmal wie im Beispiel aus 11.3.4. Am besten nochmal aus der Doku rauskopieren.

Wolfgang E.
Beiträge: 569
Registriert: 28.10.2021 12:16:41
Aktuelle Projekte: https://github.com/machinae-vectoriae-ductor/
Wohnort: Köln
Kontaktdaten:

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#15 Beitrag von Wolfgang E. »

Ein funktionierendes Python-Programm kann ich Die gerne schicken. Auch einen Programmablaufplan habe ich dazu. Da es noch nicht komplett fertig, möchte ich es nur noch nicht allgemein veröffentlichen.

Viele Grüße Wolfgang

Benutzeravatar
fabiandb
Beiträge: 10
Registriert: 02.03.2019 15:34:29

Re: Suche Hilfe für TCP-Anfänger, Verbindung von "Hercules" mit Zusi herstellen und HELLO Befehl ausführen

#16 Beitrag von fabiandb »

Guten Morgen,

ist mit Sicherheit eine große Hilfe um mir das mal von der anderen Seite anzuschauen.

Viele Grüße

Antworten