Thread Socket-Probleme... (19 answers)
Opened by Oliver at 2019-10-24 15:05

Gast Oliver
 2019-10-24 15:05
#190789 #190789
Mahlzeit, Hallo!

Ich versuche mit einem Videoprojektor zu kommunizieren und dabei habe ich ein Problem. Bisher konnte mir hier gut geholfen werden und ich hoffe ihr, könnt auch diesmal Licht in mein Dunkel bringen....

Nutze ich ein Programm wie "Hercules" oder "Packet Sender" und sende auf den TCP-Port 3629 des Projektors die Hex-Zeichenfolge

45 53 43 2F 56 50 2E 6E 65 74 10 03 00 00 00 00 50 57 52 3f 0D

dann erhalte ich als Antwort

(HEX) 45 53 43 2F 56 50 2E 6E 65 74 10 03 00 00 20 00 50 57 52 3D 30 34 0D 3A

(ASCII) ESC/VP.net\10\03\00\00 \00PWR=04\r:

Dies ist völlig richtig und genau so von mir erwartet!

Bei den gesendeten Zeichen ist der erste Teil (45 53 43 2F 56 50 2E 6E 65 74 10 03 00 00 00 00) sozusagen der "Handshake" um dem Projektor zu sagen, dass er auf TCP mit Kommandos rechnen soll.
Der zweite Teil (50 57 52 3D 30 34) ist der Befehl (Hier speziell wird gefragt, wie der Powerstatus ist) und das "0D" ist ein CarrierReturn.

So weit, so gut.....

Setz ich dies nun in Perl um, funktioniert es aber nicht. Schon der erste Teil wird nicht richtig quittiert.

Was mache ich (oder Perl) denn hier anders, als Hercules,etc?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#! /usr/bin/perl -w

use IO::Socket::INET;
use IO::Socket::Timeout;
use Errno qw(ETIMEDOUT EWOULDBLOCK);

# flush after every write
$| = 1;

my $socket;

$socket = new IO::Socket::INET (
PeerHost => '192.168.0.50',
PeerPort => '3629',
Proto => 'tcp',
Timeout => 2,
);

print "TCP Connection Success...";

print "Try to send....";
print $socket 0x45, 0x53, 0x43, 0x2f, 0x56, 0x50, 0x2e, 0x6e, 0x65, 0x74, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x50, 0x57, 0x52, 0x3f, 0x0D;

print "sended!\n";

print "Try to read....";
print "Received from Server : ";
print <$socket>;

$socket->close();
print "Socket closed.\n";

print "End.\n";


Hat hier irgendwer eine Idee?
Sendet Perl hier irgendwelche Zeichen, die es nicht soll?
Mache ich bei dem Socket was falsch?

Ich habe die Perl-Ausgabe auch mal an einen PC umgeleitet (IP geändert) auf dem Hercules auf dem Port gelauscht hat. Die dort ankommenden Zeichen sind zugegeben etwas schwierig zu lesen, wenn ich das aber richtig sehe genau dass, was ich senden will

(Dez) 6983674786804611010111616300008087826313


Danke für Eure Hilfe!
Oliver
Last edited: 2019-10-24 16:15:49 +0200 (CEST)

View full thread Socket-Probleme...