Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden (https://www.delphipraxis.net/166396-via-indy-udp-client-asci-daten-zu-einem-netzwerkgeraet-senden.html)

Andre.R 11. Feb 2012 11:44

Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Hi ,

ich möchte via Indy UDPCient einen ASCI Befehl an ein Netzwerk Gerät senden.
Das Gerät ist von Irtrans.de ein Infrarotempfänger / sender.
Leider kommt immer "Received: ERROR: ASCII Format Error" !
Mit Putty und RAW Mode geht's !

Hier steht:
Zitat:

Anmeldung am IRTrans System / ASCII Modus inititalisieren
Die gesamte Kommunikation erfolgt über den Port TCP/21000. Dieser Port ist offiziell für das
IRTrans System reserviert, so daß es hier auch nicht zu Konflikten kommen sollte.
Zunächst muß eine Anmeldung am System erfolgen. Hierzu besteht folgender Ablauf:
- Aufbau einer Verbindung zum Port TCP/21000 des irservers/IRTrans Moduls
- Senden der 4 Bytes „ASCI“ über die neue TCP Verbindung.
Wichtig: Diese Bytes müssen als erste Daten über die Verbindung
geschickt werden. Sie müssen als Großbuchstaben und ohne zusätzliche
Zeichen wie <CR> oder <LF> geschickt werden.
Auszug aus der Indy demo:

Delphi-Quellcode:
begin

 ThisMessage := 'AVER' ;
  UDPMemo.Lines.Add(ThisMessage);
   UDPClient.Send(ThisMessage);
Habe ich was übersehen ?
andre

Klaus01 11. Feb 2012 11:56

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
.. trägt vielleicht nicht zur Lösung Deines Problems bei,
Aber in der Beschreibung wird von TCP geredet - warum willst Du dann UDP einsetzen.
Irgendwie passt das nicht.

Grüße
Klaus

mjustin 11. Feb 2012 12:36

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Zitat:

- Senden der 4 Bytes „ASCI“ über die neue TCP Verbindung.
Dass es nicht funktioniert könnte an der Delphi Version (Unicode oder nicht) liegen.

Der Unicode-String "ASCI" wäre 8 Bytes lang, wenn man ihn unbehandelt an den Server sendet.

"ASCI" sind zwar nicht 4 "Bytes", aber man kann annehmen dass ASCII Encoding gemeint ist.

Andre.R 11. Feb 2012 21:52

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Hi,

habe mal angepasst String > AnsiString.
Keine Änderung !

@Klaus, gibt es eine TCP Indy Demo wie ich den String senden kann ?
Bin nicht so Fit, deshalb frage ich ...

In der Anleitung steht UDP:

Zitat:

1. Einleitung
Das IRTrans ASCII Format dient der Ansteuerung von IRTrans Modulen (über den irserver
oder Ethernetmodule mit IRDB bzw. LAN Controller direkt) via TCP/IP über einfache ASCII
Strings. Das Format dieser ASCII Strings entspricht denen der UDP ASCII Strings.
Derzeit werden folgende Transaktionen unterstützt:
http://www.irtrans.de/download/Docs/...tstelle_DE.pdf



grüße
andre

Sir Rufo 12. Feb 2012 00:52

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Zitat:

Das Format dieser ASCII Strings entspricht denen der UDP ASCII Strings.
In der Anleitung taucht auch der Begriff UDP auf, allerdings in einem Kontext, der IMHO in keinster Weise die Verbindungsart beschreibt.

Zitat:

Die gesamte Kommunikation erfolgt über den Port TCP/21000. Dieser Port ist offiziell für das IRTrans System reserviert, so daß es hier auch nicht zu Konflikten kommen sollte.
Ich frage mich, wie man es noch deutlicher in einer Anleitung schreiben könnte. Größer? Bunter? Mit Sternchen? :roll:

Andre.R 12. Feb 2012 10:12

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Moin,

hier unter 5. steht aber auch:

Zitat:

Die Parameter sind hierbei die gleichen wie beim UDP Senden:
Asnd <remote>,<command>,[l<led>],[b<bus>],[m<mask>]
Asndr <remote>,<command>,[l<led>],[b<bus>],[m<mask>]

usw.
Hat jemand mal ein Indy TCP Beispiel für mich?
Oder ein paar Zeilen, damit ich mich damit beschäftigen kann.

danke
andre

NickelM 16. Feb 2012 14:41

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Also bei der Beschreibung steht folgendes :

Code:
Wichtig: Diese Bytes müssen als erste Daten über die Verbindung
geschickt werden. Sie müssen als Großbuchstaben und ohne zusätzliche
Zeichen wie <CR> oder <LF> geschickt werden.
Ich weis das Indy wenn du Strings über Indy direkt sendest das er CR oder LF Anhängt.
Hast du mal versucht, diese als Zahl zusenden?
Cardinal entspricht auch 4 Bytes.
Hier ein Testcode bei einem Localen TCP Cleint/Server
Der Server bekommt es richtig bei mir, aber naja ist halt nicht dein Server:
Delphi-Quellcode:
const Befehl : array[0..3] of AnsiChar = ('A','S','C','I');
begin
IdTCPClient1.Connect;
IdTCPClient1.IOHandler.Write(Cardinal(Befehl));
end;

Andre.R 17. Feb 2012 11:27

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Hi Nikel,

danke dir für Deine Antwort.
Ich verstehe dein Beispiel, gute Idee !
Ich Teste es am Wochenende, bin noch berufl. Unterwegs.
Ach ja, nach dem Senden schickt das IR Teil auch eine Antwort zurück.
Für den Empfang muss ich dann den Server nehmen, oder ?

andre

jokerfacehro 17. Feb 2012 15:43

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Bitte mal den Traffic mit Wireshark und co scannen, dann sieht man schneller obs an der Codierung liegt :)

NickelM 18. Feb 2012 00:39

AW: Via Indy UDP Client ASCI Daten zu einem Netzwerkgerät senden
 
Die Antwort bekommt der Client. So wie ich der Hilfe entnehme kannst du nun über ReadString (glaub ich heisst die Funktion) dei Antwort entgegennehmen, Da der String mit einem <LF> (eine Art String-End Zeichen) endet, was Indy in dieser Funktion Unterstützt.
Wie du dann den Result-String zerlegst, denk ich mal weisst du :-D

Gruß
NickelM


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz