vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
TCP-Verbindung aufbauen 
Autor: Volker Bunge
Datum: 26.02.17 10:38

Hallo zusammen,

ich möchte ein kleines VB 2010 Express Programm schreiben, welches für meine Eisenbahnanlage eine Lok steuert. Meine Zentrale ist die Rautenhaus RMX950USB Zentrale mit der RMX PC-Zentrale 2.0. In dieser PC-Zentrale gibt es eine RMX-Net Schnittstelle mit der man über eine TcpClient-Klasse die Daten austauschen kann.

Folgende drei Links habe ich erhalten
https://msdn.microsoft.com/de-de/library/system.net.sockets.tcpclient(v=vs.110).aspx

Beispiele zur Verwendung der Klasse finden Sie z.B. hier:
https://code.msdn.microsoft.com/windowsdesktop/TCP-Communication-in-VBNET-f6c48ca0/view/Discussions#content

https://www.vb-paradise.de/index.php/Thread/16242-Ausf%C3%BChrliches-TCP-und-UDP-Tutorial/

Jetzt habe ich mit folgendem Code (Siehe leider weiter unten, Eintrag hier sonst zu lang) kann ich in der Login-Sub auch die erste Anweisung 0x7c senden. Sobald ich aber die zweite Anweisung 0x04 senden möchte, bekomme ich die Fehlermeldungs-Nr 57 "IOException" wurde aufgefangen. In die Übertragungsverbindung können keine Daten geschrieben werden: Eine bestehende Verbindung wurde softwaregesteuert durch den Hostcomputer abgebrochen.

Ich habe auch noch eine Doko über das RMX-Net Protokoll vorliegen. Da ich jetzt nicht sicher bin, ob ich diese hier anhängen darf, nur einmal ein kurzer Auszug aus der Anleitung

Aufbau der Datenpakete für Befehle und Antworten

Ein Datenpaket beginnt immer mit drei Headerbytes. Das erste hat den festen Wert 0x7c (Dezimal
124, Binär 01111100), das zweite gibt die Gesamtzahl der im Befehl enthaltenen Bytes (inkl. der
Headerbytes) an. Das dritte Byte steht für die Art des Befehls (OPCODE) bzw. der Antwort.
Danach folgen die befehlsspezifischen Nutzdaten.
<0x7c><COUNT><OPCODE><n * DATA>


Anforderung einer Positivquittung <0x7c><0x04><0x00><0x00>

Serverantwort: Positivquittung <0x7c><0x04><0x00><0x00>


Befehl mit unbekanntem OPCODE <0x7c><0x04<0x0f><0x00>

Serverantwort: Negativquittung <0x7c><0x04><0x01><0x01>


Info der Negativquittung 0x01: unbekannter OPCODE
Info der Negativquittung 0x03: Loknummer nicht in Datenbank
Info der Negativquittung 0x04: Eingabefehler
Info der Negativquittung 0x05: Mode ungleich 0x01
Info der Negativquittung 0x07: Eingabe Lokomotiven Datenbank voll
Info der Negativquittung 0x08: Steuerkanäle belegt



Wo ich jetzt schon meine ersten Schwierigkeiten habe, ist die Art der Befehlsabfolge. Die Klammern stellen ja die einzelnen Byte da und somit die einzelen "Befehle". Meine erste Frage lautet daher: Muss ich diese einzeln senden (also wie oben über eine Schleife) oder kann ich die auch in einem String senden? (welches Trennzeichen ist evtl. dann nötig?). Mit welchem Datentyp kann/muss ich hier am besten arbeiten?

Wenn ich das jetzt richtig verstanden habe, dann muss mein Programm ja als erstes einen "Befehl" senden (also die Klammerabfolge) und dann auf die Rückantwort der Zentrale warten.

Ich werde dann wohl einen Client und einen MultiThread Server brauchen, der dann solange wartet, bis Antworten von der Zentrale kommen. Der Server läuft also permanent und überwacht den Eingang. Der Client reagiert nur auf meine Befehle. Der Server, sobald er eine Rückmeldung erhält, wertet die Daten aus und steuert mein Programm bzw. mein Lok.

Wäre schön, wenn mir einer von Euch bei meinem Problem helfen könnte.

Vielen Dank

Volker
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TCP-Verbindung aufbauen3.192Volker Bunge26.02.17 10:38
Re: TCP-Verbindung aufbauen2.215Volker Bunge26.02.17 10:39

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel