Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Da immer mehr Zusi User von einem 1:1 Führerstand mit träumen, soll es zumindest an Datenaustausch nicht hapern.
Nachricht
Autor
Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#121 Beitrag von Johannes »

... und wenn du die Payloads von Paket 28 und 31 zusammenhaengst, hast du den korrekten gewueschten ACK_HELLO-Befehl, wie er in der Dokumentation angegeben ist (fast -- der Versionsstring ist ein Byte laenger und lautet jetzt " 3.1.0.0" -- ich sehe, man plant schon fuer zweistellige Zusi-Major-Versionen :D).

Edit: Deine PrintAck()-Funktion scheint ueberhaupt nur die ersten 7 Zeichen der Antwort zu lesen und auszugeben. Durch den Protokollaufbau bei Zusi 3 muss man hier etwas komplizierter denken, etwa so (Pseudocode):

Code: Alles auswählen

function EmpfangeKnoten():
    result = new Knoten
    loop:
        laenge = lies 4 Bytes
        if laenge == 0x00000000:
          // Knoten
          result.kindknoten.add(EmpfangeKnoten())
        else if laenge == 0xFFFFFFFF:
          // Ende Knoten
          break;
        else
          // Attribut
          attribut_id = lies 2 Bytes
          attribut_wert = lies (laenge - 2) Bytes
          result.attribute.add(new Attribut(attribut_id, attribut_wert))
Zuletzt geändert von Johannes am 04.03.2016 11:16:56, insgesamt 1-mal geändert.

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#122 Beitrag von Arne aus dem Norden »

Ja, das sehe ich jetzt ähnlich.

Aber wenn wir mal davon ausgehen, das mein verwendetes altes Zusi2-Scriptfragment dann nur noch Trümmer im Protokoll einliest und der Rest vom Server aber aktzeptiert wurde, müßte sich der Fahrpult Client dann nicht in der Liste am Zusi Server zeigen?

(wobei ich insgesamt jetzt davon ausgehe, das ich das für den Arduino nicht wirklich zum laufen bekommen werde)
Das wird jemand basteln müssen, der wirklich was davon versteht...
Zuletzt geändert von Arne aus dem Norden am 04.03.2016 11:28:14, insgesamt 1-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#123 Beitrag von Arne aus dem Norden »

Johannes hat geschrieben:Edit: Deine PrintAck()-Funktion scheint ueberhaupt nur die ersten 7 Zeichen der Antwort zu lesen und auszugeben. Durch den Protokollaufbau bei Zusi 3 muss man hier etwas komplizierter denken, etwa so (Pseudocode):
Danke, das sind schonmal ein paar gute Tipps.
Trotzdem nochmal die Frage: ab wann müßte der Client in der Liste am Server auftauchen?
Nach dem NEEDED_DATA?
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#124 Beitrag von Johannes »

Vermutlich nach NEEDED_DATA, ja.

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#125 Beitrag von Arne aus dem Norden »

Johannes hat geschrieben:Vermutlich nach NEEDED_DATA, ja.
Ja,

so ist es *uff* *puhh*

Bild
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#126 Beitrag von Arne aus dem Norden »

Johannes hat geschrieben:Edit: Deine PrintAck()-Funktion scheint ueberhaupt nur die ersten 7 Zeichen der Antwort zu lesen und auszugeben.
Gut, ich hab jetzt mal die Schleifendurchläufe auf 51 hochgestellt, das reicht um alles auszulesen.
Dieses Script-Schnipsel kommt glaub ich von Andy damals noch.
Es sieht jetzt komplett aus, aber er liest die ganzen Leerdaten mit ein

Code: Alles auswählen

-> Server connecting...
connected
-> Server: 
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 
(HELLO)
<- Server: 
00 00 00 00 FFFF FFFF FFFF FFFF FFFF FFFF FFFF 01 00 00 00 00 00 02 00 0A 00 00 00 01 00 20 33 2E 31 2E 30 2E 30 03 00 00 00 02 00 30 03 00 00 00 03 00 00 FFFF FFFF FFFF FFFF 
(ACK_HELLO)

-> Server: 
00 00 00 00 02 00 00 00 00 00 03 00 00 00 00 00 0A 00 04 00 00 00 01 00 01 00 FF FF FF FF FF FF FF FF FF FF FF FF
(NEEDED_DATA)
<- Server: 
FFFF FFFF FFFF FFFF 00 00 00 00 FFFF FFFF FFFF 02 00 00 00 00 00 04 00 03 00 00 00 01 00 00 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
(ACK_NEEDED_DATA)
Das ganze war ja auch damals nur für eine optische Kontrolle am Terminal als Ausgabe gedacht.
Hat jemand hier ne Ahnung wie man das besser schreiben könnte um nicht den ganzen Leerdatenmüll mit auszulesen bzw. solange Daten kommen die zur Antwort gehören?

Code: Alles auswählen

void PrintACK()
{
  char buffer[16];
  for(int i=0; i<51; i++)
    {
    char c = client.read();
    sprintf(buffer, "%02X ", c);
    Serial.print(buffer);
    }
}
Zuletzt geändert von Arne aus dem Norden am 04.03.2016 16:18:12, insgesamt 1-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#127 Beitrag von Carsten Hölscher »

Hast Du sicher schon entdeckt, aber es werden ja auch Programmierbeispiele mit Quellcodes mitgeliefert.

Carsten

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#128 Beitrag von Arne aus dem Norden »

Also,

ich hab mir die Beispiele angesehen, aber nicht wirklich verstanden. Liegt vermutlich daran, das ich nie wirklich programmieren gelernt hab in C.
Ich versuche nun seit einer Woche irgendwas zum laufen zu bekommen, das die Daten zur Auswertung einliest, aber scheitere bisher an der neuen Struktur.
Das Script verbindet sich problemlos, fordert Daten an und liest auch ein was vom Server kommt.
Aber ich brauche jemanden, der hier ev. einen Teil ergänzen könnte der die Daten auswertet. Also die Attribute erkennt und die Werte zurückgibt. Ich vermute, die Ausgabe auf die Pins des Arduino würde sich sogar dann wieder teilweise vom Zusi2 Arduino-Script übernehmen lassen.

Es geht also eigentlich nur um einen sehr überschaubaren Scriptteil in C. Wer würde helfen? Näheres dann per Mail, das ginge einfacher und schneller...

LG, Arne
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#129 Beitrag von jonathanp »

In der Zusi-Dokumentation gibt es ein Beispiel von DATA_FTD Befehl, mit den Rohdaten und eine Erklärung.
Der einzige Unterschied ist, dass es mehrere Datenvariablen sein.
Autor - Zusi 3 C++ Client, zusidatenbank.de - Das Zusi3 Addon-Datenbank

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#130 Beitrag von F. Schn. »

Wenn es dir hilft, schau mal im .Net-Code: https://github.com/FSchn/ZusiTCP.NET" target="_blank
Der ist allerdings objektorientiert, weiß also nicht, wie sehr es dir weiterhilft.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#131 Beitrag von Arne aus dem Norden »

Also,

es scheint als wenn sich erstmal eine Übergangslösung für das Arduino Script abzeichnet.
Wer es selber in den Nachbarthreads nicht verfolgt hat: unter
https://github.com/AndreasKarg/ZusiTCP. ... xamples/cs" target="_blank
von Andreas Karg und F.Schn. gibt es einen Converter von Zusi 3 auf das Zusi 2 TCP Protokoll.
Näheres auch im Thread unter
http://forum.zusi.de/viewtopic.php?f=73 ... 54#p260054" target="_blank
Im großen und ganzen scheint das hier bekannte Zusi2 Script für den Arduino nun damit zu laufen, ausführlich muß ich es aber selber noch testen.

Ein in Teilen fertiges Zusi 3 Script für den Arduino ist darüber hinaus auch vorhanden, wer Lust hat sich da einzubringen kann sich immer noch gerne mit mir in Verbindung setzen. Mittelfristig könnte ohnehin eine ev. kommende direkte Unterstützung des Arduino über USB aus Zusi 3.x die Ethernetgeschichte überflüssig werden lassen.

Bild
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#132 Beitrag von Arne aus dem Norden »

Die Lösung mit dem Converter läuft inzwischen sehr zufriedenstellend am Arduino Mega mit Ethernet, hier ein Beispiel im Betrieb über den "alten" Zusi Server 1.4a. Der Sendeintervall von Zusi 3 stand beim Filmen noch auf 0,5 sec., deswegen ist der Tacho und einige Leuchtmelder manchmal minimal verzögert.

https://www.youtube.com/watch?v=7V73z-w4UyY

Bild
Zuletzt geändert von Arne aus dem Norden am 28.03.2016 17:23:28, insgesamt 1-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#133 Beitrag von L-Vosje »

L-Vosje ( L.Fox )
Zusi2 Benutzer seit 3 Jahre
Neu im forum.
Entschuldigung für evt Schreibfehler.

Hallo zusammen,

Leider, ich habe Converter auf drei Systemen versucht mit immer dem gleichen Ergebnis, siehe Bilder.
Wenn es erfolgreich bei anderen ist Was mache ich dann falsch ?

Grüße aus den Niederlanden.

Bild

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#134 Beitrag von F. Schn. »

Der Zusi-3-TCP-Server (Fenster rechts oben) muss gestartet werden.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#135 Beitrag von L-Vosje »

@ F. Schn. Danke für die Antwort.

Leider, gleichen Ergebnis.

Bild
Zuletzt geändert von L-Vosje am 29.03.2016 14:14:53, insgesamt 1-mal geändert.

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#136 Beitrag von Arne aus dem Norden »

Hier nochmal eine Komplettanleitung...

Zu allererst das ganze Zip holen unter
https://github.com/FSchn/ZusiTCP.NET/ar ... server.zip" target="_blank

Daraus den kompletten Ordner "ConverterDemo" aus dem Verzeichnis "/examples/cs/" nehmen.
Nie nur die ConverterDemo.exe alleine.

Dann einen Zusi 2 Server starten und z.B. den Arduino mit dem Ethernetshield & Script wie gehabt anmelden.
Zusi 3 starten und den internen Server starten.

Dann erst die ConverterDemo.exe als letztes aufrufen. Der Converter muß jetzt in der Liste am Zusi 2 und am Zusi 3 Server erscheinen.

Bei langsamer Übertragung: auf den in Zusi 3 eingestellten Sendeintervall schauen wenn irgendwie träge wirkt, oft ist der zu niedrig. Der alte Server in Zusi 2 war nach meinem Wissen auf 0,2 sec. eingestellt.

Fehler bei der PZB können ggf. am Converter liegen, da noch nicht alle Bauarten getestet.
Dann hier melden: http://forum.zusi.de/viewtopic.php?f=73&t=12751" target="_blank
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#137 Beitrag von L-Vosje »

@Arne aus dem Norden

Ach, es ist jetzt klar warum es nicht funktioniert, diese Datei hatte ich nicht. :O
Lesen und versuchen, wird eine Weile dauern. Und ich melden mich dan wieder.

Vielen Dank für Ihre Antwort.

Grüße aus den Niederlanden.

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#138 Beitrag von L-Vosje »

@Arne aus dem Norden

Es funktioniert, Vielen Dank.

Benutzeravatar
Jeff Becker
Beiträge: 364
Registriert: 16.05.2015 10:26:52
Aktuelle Projekte: Fahrpultbau, mich mit Blender anfreunden und über eine CFL Strecke für Zusi träumen...

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#139 Beitrag von Jeff Becker »

Hallo erstmal ich hatte schon mit Arne über mein Problem gesprochen jedoch wusste er nicht mehr weiter da er kein windows spezialist ist. So mein Problem ist es dass ich die Verbindung zwischen Arduino und dem Zusi 2 Server hinbekomme. Trainboy hatte ein ähnliches Problem und hatte mir mal alles durch gelesen hier jedoch erfolglos. Ich habe das Arduino direkt mit dem Pc verbunden und den Dhcp auf null gesetzt und die ip im cmd gesucht und den port habe ich im antivirus auch freigegeben.

Nun hoffe ich auf Hilfe

Mit freundlichen Grüßen Jeff
Mein Projekt: Mein eigenes Fahrpult. Schaut doch mal vorbei
https://m.youtube.com/channel/UCrpDMup3YWCyJkPzLzLuf2w

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#140 Beitrag von F. Schn. »

Hallo,

könntest du die Ergebnisse von ipconfig sowie diese 5 Einstellungen im Arduino mal posten?

Gruß
F. Schn.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Antworten