Aktuelle Zeit: 31.10.2020 04:50:59

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: TCP Bibliothek für C++
BeitragVerfasst: 05.03.2016 12:29:58 
Offline

Registriert: 01.06.2015
Beiträge: 145
Wohnort: BW Schöneweide
Aktuelle Projekte: http://www.zusidatenbank.de/
Ich habe schnell eine TCP Bibliothek für C++ geschrieben: https://github.com/jonathanp0/zusi3tcp. Es ist nur einfach, aber vielleicht ist es nützlich für jemanden.

Ich werde Johannes kopieren, weil der Status ähnlich oder schlechter als seine Rust-Bibliothek ist :). Diese Bibliothek war auch nützlich für mich, das Protokoll zu verstehen.
Zitat:
Sie enthaelt momentan wenig Protokollspezifisches, neben dem generischen Senden und Empfangen von Knoten und Attributen ist nur HELLO und NEEDED_DATA implementiert.

06.03 ClientConnection.sendInput() für INPUT-Befehle hinzugefügt
15.03 Visual Studio Projekt hinzugefügt
26.03 Zusi 3 Server Emulator hinzugefügt

_________________
Autor - Zusi 3 C++ Client, http://www.zusidatenbank.de/ - Das Zusi3 Addon-Datenbank


Zuletzt geändert von jonathanp am 01.04.2016 18:39:23, insgesamt 3-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 05.03.2016 17:43:00 
Offline
Benutzeravatar

Registriert: 04.11.2001
Beiträge: 5472
Wohnort: 32U 0294406 5629020
Mit C++11-Elementen, nett. :)

Zitat:
zusi::Socket - Abstract interface for a network communications class

C++ kennt ja keine echten Interfaces wie Java oder C#. In C++ ist es immer eine Basisklasse, und ein Basisobjekt wird mit instantiiert. Daher sollte auch eine "Interface"-Klasse immer einen virtuellen Destruktor haben, sonst gibt es ggf. Memory-Leaks.

_________________
Gruß, Roland


Strecken- und Landschaftsbau mit digitalen Karten


Nach oben
 Profil Website besuchen  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 06.03.2016 15:08:02 
Offline

Registriert: 01.06.2015
Beiträge: 145
Wohnort: BW Schöneweide
Aktuelle Projekte: http://www.zusidatenbank.de/
Vielen Dank für den Code-Review ;) In den letzten Monaten habe ich nur Java geschrieben, also nun vergesse ich Dinge.

Ich habe heute Unterstützung für INPUT-Befehle hinzugefügt, und Ersuchen für DATA OPERATION und DATA_PROG Nachrichten.

_________________
Autor - Zusi 3 C++ Client, http://www.zusidatenbank.de/ - Das Zusi3 Addon-Datenbank


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 21.03.2016 15:37:31 
Offline

Registriert: 06.03.2015
Beiträge: 10
Danke erstmal für die Bibliothek! Soweit läufts ja recht gut. Nun würde ich gern versuchen die empfangenen Daten in einer Variable zu speichern. Wie könnte man das anstelle dieser Ausgabe tun?
Code:
msg.write(debug_socket); //Print data to the console


P.S. bin C++ Laie, würde mich aber gerne einarbeiten. Danke!


Zuletzt geändert von Johannes B am 21.03.2016 17:03:02, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 21.03.2016 17:17:21 
Offline

Registriert: 24.10.2011
Beiträge: 4397
Was möchtest du denn machen? Ich denke, wenn man gerade erst anfängt, ist C++ vielleicht nicht die idealste Sprache. (Gab vor Jahren mal eine Diskussion dazu in diesem Fourm...) Außerdem ist laut obiger Aussage die Bibliothek ja noch unvollständig, so dass ich dir vermutlich eher zu .Net raten würde: viewtopic.php?f=73&t=12762

_________________
Diese Signatur möchte folgendes bekannter machen: ZusiWiki: Führerstände · ZusiWiki: Fahrzeugprojekte · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 21.03.2016 17:32:34 
Offline

Registriert: 06.03.2015
Beiträge: 10
Ich würde gern die TCP Daten an einen Seriellen Port schicken. Da gab's mal was für Zusi 2, das ich bei meinem Fahrpult zum Laufen gebracht habe. Ich schau mir mal die .NET Projekte an. Dankeschön!


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 21.03.2016 18:40:21 
Offline

Registriert: 01.06.2015
Beiträge: 145
Wohnort: BW Schöneweide
Aktuelle Projekte: http://www.zusidatenbank.de/
Hey,

Das "dump_ftd" Sample zeigt, wie man Daten extrahieren kann: https://github.com/jonathanp0/zusi3tcp/ ... mp_ftd.cpp

Mit kleinen Änderungen:
Code:
bool SendToSerial(uint16_t id, float value);

void sendVariables(const zusi::Node& msg)
{
   if (msg.getId() == zusi::MsgType_Fahrpult)
   {
      for (const zusi::Node* node : msg.nodes)
      {
         if (node->getId() == zusi::Cmd_DATA_FTD)
         {
            for (const zusi::Attribute* att : node->attributes)
            {
               float value = *(reinterpret_cast<float*>(att->data));
               SendToSerial(att->getId(), value);
            }
         }
      }
   }
}


Für seriellen Port könntest Du möglicherweise diese Bibliothek verwenden: https://github.com/wjwwood/serial
Serial Port Kommunikation mit dem win32api ist keine gute Aufgabe für einen Anfänger :dead

Gruß,
Jonathan

_________________
Autor - Zusi 3 C++ Client, http://www.zusidatenbank.de/ - Das Zusi3 Addon-Datenbank


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 21.03.2016 23:09:24 
Offline
Benutzeravatar

Alter: 34
Registriert: 28.04.2002
Beiträge: 4718
Oder auch:
Code:
bool SendToSerial(uint16_t id, float value);

void sendVariables(const zusi::Node& msg)
{
   if (msg.getId() != zusi::MsgType_Fahrpult)
      return;
 
   for (const zusi::Node* node : msg.nodes)
   {
      if (node->getId() != zusi::Cmd_DATA_FTD)
         continue;
   
      for (const zusi::Attribute* att : node->attributes)
      {
         float value = *(reinterpret_cast<float*>(att->data));
         SendToSerial(att->getId(), value);
      }   
   }
}


Um mal ein bisschen unnötige Verschachtelungstiefe wegzubekommen. ;-)

_________________
2,0 l/100km -- Ein Traktor auf 2 Rädern! :)


Zuletzt geändert von Andreas Karg am 21.03.2016 23:09:54, insgesamt 1-mal geändert.

Nach oben
 Profil ICQ  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 22.03.2016 10:48:39 
Offline
Benutzeravatar

Registriert: 04.11.2001
Beiträge: 5472
Wohnort: 32U 0294406 5629020
jonathanp hat geschrieben:
Serial Port Kommunikation mit dem win32api ist keine gute Aufgabe für einen Anfänger
In der Tat. C#/.Net ist da deutlich zugänglicher.
https://msdn.microsoft.com/en-us/librar ... 10%29.aspx

_________________
Gruß, Roland


Strecken- und Landschaftsbau mit digitalen Karten


Nach oben
 Profil Website besuchen  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 24.03.2016 10:43:19 
Offline

Registriert: 06.03.2015
Beiträge: 10
Vielen Dank für die Code Beispiele! Vielleicht bekomme ich es mal zum Laufen.
Roland hat Recht, C# ist schon zugänglicher für Anfänger. Mit dem Zusi 3 / 2 Converter läuft die Ausgabe bei mir vorerst ganz gut.
http://forum.zusi.de/viewtopic.php?f=73&t=12751


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 24.03.2016 10:57:57 
Offline

Registriert: 01.06.2015
Beiträge: 145
Wohnort: BW Schöneweide
Aktuelle Projekte: http://www.zusidatenbank.de/
Das stimmt, dass C++ nicht einfach ist.
Ich sehe die Verwendungen für C ++ mit Zusi als:
  1. Integration mit bereits geschriebenen C ++ Code
  2. Für Software, die (nur)C Bibliotheken verwenden muss.
  3. Portabilität auf andere(nicht Windows) Betriebssystemen

Personlich brauche ich 1 und 2, und vielleicht in die Zukunft 3.

Es ist ein wenig kommisch, dass der beliebteste Client für Zusi 3 der Zusi 2-Proxy ist. ;) Jetzt wollt ihr auch zusätzliche Variablen für Zusi 3 Funktionen :whatever

_________________
Autor - Zusi 3 C++ Client, http://www.zusidatenbank.de/ - Das Zusi3 Addon-Datenbank


Zuletzt geändert von jonathanp am 24.03.2016 11:04:47, insgesamt 4-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 24.03.2016 12:22:51 
Offline
Benutzeravatar

Registriert: 25.12.2011
Beiträge: 651
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)
Aktuelle Projekte: Fahr/Bremshebel im Selbstbau
jonathanp hat geschrieben:
Es ist ein wenig kommisch, dass der beliebteste Client für Zusi 3 der Zusi 2-Proxy ist. ;) Jetzt wollt ihr auch zusätzliche Variablen für Zusi 3 Funktionen :whatever
"ihr" bin ja offensichtlich ich... :D
Ich wills mal so formulieren: nicht jeder, der gerne Pult bastelt ist auch Experte in irgendeinem C.
Ich als PHP Laie habs mit dem Zusi 2 Protokoll ja fast noch alleine hinbekommen, aber beim Zusi 3 Protokoll hab ich inwischen fachkundige Unterstützung von mehreren Leuten die weit besser sind als ich und trotzdem klappts bislang nicht mit dem Protokoll der "3" und dem Arduino...

_________________
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6nberg-Streckenblog-1014054601976323/


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: TCP Bibliothek für C++
BeitragVerfasst: 24.03.2016 12:52:26 
Offline

Registriert: 01.06.2015
Beiträge: 145
Wohnort: BW Schöneweide
Aktuelle Projekte: http://www.zusidatenbank.de/
:O Ich meinte, "sie" zu schreiben.

Rekursion ist für geschachtelte Datenstrukturen (wie Zusi 3 TCP) erforderlich und es ist bekannt, daß Rekursion einen schwieriges Begriff ist. In einem Vorstellungsgespräch für Softwareentwickler muss man normalerweise ihn demonstrieren.

_________________
Autor - Zusi 3 C++ Client, http://www.zusidatenbank.de/ - Das Zusi3 Addon-Datenbank


Zuletzt geändert von jonathanp am 24.03.2016 12:52:37, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.019s | 14 Queries | GZIP : Off ]