![]() |
TCP/ASCII - Protocoll2000/3000 über Indy
Hallo,
habe ein Problem mit einer Verbindung die nicht entsprechend den Geräten laufen will. Folgendes: Ich habe eine Verbindung zu einer Bestimmten Adresse 192.168.1.50 Diese Adresse hört über TCP auf den Port 5000 jetzt ist es kein Problem Daten zu übermitteln ( einen entsprechenden Server habe ich mal aufgesetzt) Jedoch versteht die Maschine nicht was ich Ihr übergeben will. In diesem Fall Protocoll2000/3000 befehle damit entsprechend umgeschaltet wird. (bsp. TV sender umschalten oder Lautstärke runter/hoch) Wenn ich einen Befehl als String übermittle inkl. Länge macht das Gerät nix. zuckt nichtmal ^^. Das Problem wird sicherlich im Paketaufbau liegen von dem ich aber Ehrlichgesagt soviel ahnung habe wie vom Bergsteigen. Entsprechende Tut's konnte ich nicht zu dem Thema finden. Ebenfalls nicht wie ich den Aufbau bei den Indy clients ändere. Für eure Hilfe wäre ich extrem Dankbar. :) MfG Mondo |
AW: TCP/ASCII - Protocoll2000/3000 über Indy
.. gibt es irgendwo ein Spezifikation zu dem Protokoll?
Zum Verbindungsaufbau (TCP Client -> TCP Server) sollte hier eingentlich genügend zu finden sein. Grüße Klaus |
AW: TCP/ASCII - Protocoll2000/3000 über Indy
Ist das das Kramer Protocol?
Da besteht zwischen 2000 und 3000 doch ein gewaltiger Unterschied oder? Stell mal sicher, welches Protokoll du da wirklich brauchst, verrat uns mal was du da genau machen willst - und auch mit welchem Gerät - und zeig uns mal ein bischen Code... Sonst bräucht ich da eine Glaskugel und die hab ich grad nicht da... Luggi |
AW: TCP/ASCII - Protocoll2000/3000 über Indy
Richtig handelt sich um die Kramer Protocolle.
Bevorzugen würde ich Protocol 3000 jedoch ein Auswahlverfahren wäre klasse, da man die Geräte im Protocol bereich wechseln kann. Geräte sind es extrem viele die ich damit steuern will aber zu Beginn würde ein VS-42HN ausreichen um den Syntax des Codes ins Hirn zu bekommen ^^. Ein Beispiel wäre: #VID 1>1 damit würde ich über Prtotocol 3000 eingang 1 zu ausgang 1 routen. Hatte bislang gehofft das ganze als einen String zu übermitteln entsprechend sieht mein Code aus
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject); begin if not IdTCPClient1.Connected then IdTCPClient1.Connect else Panel1.Color := clGreen; ListBox1.Items.AddObject('Gerät: ' +Label2.Caption, Pointer(clGreen)); ListBox1.Items.AddObject('IP: '+ Form3.Edit2.Text, Pointer(clGreen)); ListBox1.Items.AddObject('Port: '+ Form3.Edit1.Text, Pointer(clGreen)); ListBox1.Items.AddObject('Nachricht: ' + Edit1.Text, Pointer(clGreen)); ListBox1.Items.AddObject('', Pointer(clGreen)); IdTCPClient1.Socket.Write(Length(edit1.text)); IdTCPClient1.Socket.Write(Edit1.Text); IdTCPClient1.Disconnect; Sleep(500); Panel1.Color := clRed; end; |
AW: TCP/ASCII - Protocoll2000/3000 über Indy
Hallo,
viellicht liegt es daran das die Strings bei XE2 unicode String sind, also pro Zeichen 2 Bytes enthalten. Versuche mal vor der Übertragung die Zeichenkette in AnsiStrings zu wandeln. Grüße Klaus |
AW: TCP/ASCII - Protocoll2000/3000 über Indy
Das Protocol 3000 gibt's hier:
![]()
Delphi-Quellcode:
Am Besten du fängst damit an, dem Gerät eine leere Message zu schicken:
// Erzeuge eine HostMessage für das Protocol 3000
function BuildHostMessage(const Message:AnsiString; const DestId:AnsiString=''):AnsiString; const CR = #13; begin result := '#'; if DestId <> '' then Result := Result + DestId + '@'; Result := Result + Message + CR; end;
Delphi-Quellcode:
Das Gerät sollte mit ~OK[CR][LF] antworten.
var s : Ansistring;
s := BuildHostMessage(''); // leere Message (protocol handshaking) IdTCPClient1.Socket.Write(s); Die Tilde am Anfang und die CR/LF am Ende gehören nicht zu den Nutzdaten, sondern stellen das Start- und die Endezeichen dar. Die Message vom Geräte ist also effektiv "OK" als Antwort auf eine leere Message. |
AW: TCP/ASCII - Protocoll2000/3000 über Indy
Herzlichen Dank,
das Problem ist gelöst und das Gerät schaltet jetzt einwandfrei alles um ;). Werde das Projekt nach fertigstellung auch als RS232/TCP Terminal hier zur Verfügung stellen. Vielen Dank an euch,.. der Knoten ist geplatzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz