TCP-Server: Strings

Soundthesizer, Zusitool und andere Zusatzsoftware

Moderatoren: Andreas Damm, Jens Haupert

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

Re: TCP-Server: Strings

#21 Beitrag von Carsten Hölscher »

Das gelb markierte müßte so stimmen.
Allerdings sollte sich der Richtungsmelder beim Verlegen des Rischas tatsächlich auch ändern.

Carsten

Benutzeravatar
Ade_420
Beiträge: 61
Registriert: 09.11.2003 20:08:46
Aktuelle Projekte: Seestrecke - Beta
Wohnort: Lausen
Kontaktdaten:

Re: TCP-Server: Strings

#22 Beitrag von Ade_420 »

Ciao zäme,
ich habe eine Frage zum Umgang mit Grössen
vom Typ „long integer“ oder „32bit Integer“.
Insbesondere bzgl. die Größe 86 (56 hexadezimal) für die Türen.
Sie sollte Werte zwischen 0 und 7 liefern.
Bei meinem Programm liefert die Grösse leider nur 0;
Da meine Delphi-Kenntnisse begrenzt sind, brauche ich Eure Hilfe:

Vermutete Fehlerquelle 1:
$00..$31, $33..$60:
begin
// Daten sind Singlewerte
For I := 1 to 5 do
FArray := Ord(Buffer[I+1]);
FSingle := PSingle(@FArray)^;
SubmitDataSingle(Ord(Buffer[1]), FSingle);
Delete(Buffer, 1, 5);
end;


Vermutete Fehlerquelle 2:
$56: Tuer_Stat := string(stringreplace(Format('%.2f', [Data]),',','',[rfReplaceAll]));

Daher meine Fragen:
Kann man die Grössen, so wie im TCP-Datenausgabe-Protokoll implementiert auslesen,
oder muss man anders vorgehen?
Wie lange ist das Array dazu?

Vielen Dank für eine Antwort,

Grüsse aus der Schweiz
Andreas

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

Re: TCP-Server: Strings

#23 Beitrag von Carsten Hölscher »

Mh, so ganz hab ich das noch nicht kapiert. Vielleicht könntest Du zumindest mal die Deklarationen der Varaiblen angeben?
Ich würde an deiner Stelle erstmal zur besseren Übersicht nur Türen und was Eindeutiges wie z.B. die Uhrzeit anfordern und die bytes so wie sie ankommen direkt als Debug-Ausgabe auf dem Bildschirm ausgeben. Wenn dort schon 4x $00 ankommt, dann verschickt Zusi gar nichts.

Carsten

Benutzeravatar
Ade_420
Beiträge: 61
Registriert: 09.11.2003 20:08:46
Aktuelle Projekte: Seestrecke - Beta
Wohnort: Lausen
Kontaktdaten:

Re: TCP-Server: Strings

#24 Beitrag von Ade_420 »

Vielen Dank für die Antwort.

Mein Problem konnte ich mittlerweile beheben;
Die Lösung war relativ simpel;
Der Testclient (Delphi) unterscheidet nur die Variablen Single und FDateTime beim Auslesen der Arrays.
Man muss einfach in der Prozedur „TMain.SetIncomingData(Data: String)“ einen dritten Fall implementieren,
so zum Beispiel:

$56:
begin
// Daten sind longint
For I := 1 to 4 do
FIArray := Ord(Buffer[I+1]);
FInteger := PInteger(@FIArray)^;
SubmitDataSingle(Ord(Buffer[1]), FInteger);
Delete(Buffer, 1, 5);
end;


Lediglich müssen vorgängig die neuen Variablen definiert werden
(bei mir: FIArray und FInteger, analog zu dem Schema der bereits vorhandenen Variablen),
danach kann problemlos der Wert (wie gewohnt) in einen string verwandelt werden und weiter verarbeitet werden.
Vielleicht hilft meine Erkenntnis ja auch anderen, nicht so geübten, „Delphi-Bastlern“ wie mir.

Grüsse
Andreas

Benutzeravatar
Roland Ziegler
Beiträge: 5508
Registriert: 04.11.2001 22:09:26
Wohnort: 32U 0294406 5629020
Kontaktdaten:

Re: TCP-Server: Strings

#25 Beitrag von Roland Ziegler »

Ein Zugriff auf nicht typisierte Daten sollte grundsätzlich gekapselt werden. Gleichartige Behandlung für alle Typen, Reduktion der Fehlerquellen.

Irgendwo im Kontext TCP-Protokoll hatte ich mal skizziert, wie in streng typisierten Sprachen wie C# oder Java eine Deserialisierung erfolgt (so bezeichnet man die Umwandlung aus einem Byte-Datenstrom).

Auch in weniger rigorosen Sprachen darf man so vorgehen. Für C++ habe ich das schon ausführlicher erläutert: http://forum.zusi.de/viewtopic.php?f=39&t=9112

Auch wenn auf den ersten Blick vielleicht abschreckend, der entscheidende Vorteil des dort vorgestellten Designs ist, dass man es immer wieder verwenden kann, und nicht bei jeder neuen Schnittstelle von vorne anfängt.

Benutzeravatar
Dennis Bork
Beiträge: 945
Registriert: 13.09.2015 21:46:58

Re: TCP-Server: Strings

#26 Beitrag von Dennis Bork »

Bernhard hat geschrieben: habe ich ein entsprechendes Kommentar zum Artikel TCP-Datenausgabe für Zusi gepostet.
Hallo alle,

weiß jemand wo ich die zwei auf der Website aufgeführten Tools

(Zusi-Simulator und TCP-Testtools) noch bekomme? Bzw. hat die noch jemand in petto und kann sie mir zukommen lassen?


Danke, werden mir zugeschickt :)
Zuletzt geändert von Anonymous am 24.10.2012 21:26:30, insgesamt 1-mal geändert.

Benutzeravatar
Tim Fehse
Beiträge: 256
Registriert: 27.06.2012 15:56:51
Wohnort: Braunschweig

Re: TCP-Server: Strings

#27 Beitrag von Tim Fehse »

Hi Dennis,

du hast eine PN.

Antworten