Thread Über Socket senden funktioniert nicht (KNX/EIB Bussystem) (9 answers)
Opened by perli at 2009-02-03 11:10

perli
 2009-02-03 11:10
#118600 #118600
User since
2003-09-12
23 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich habe ein KNX/EIB Bussystem, mit dem ich über Sockets kommunizieren kann.
Unter Excel habe ich dies auch schon hinbekommen, jedoch unter Perl klappt es nicht.
Ich kann zwar eine Verbindung zu dem KNX Server (BAOS770) aufbauen, aber wenn ich die Daten zum Licht einschalten sende, funktioniert es nicht.
Ich vermute, daß es an der Art des Sendens liegt (es müßte eine Art ByteArray sein). Ich habe auch schon recht viel im Internet gesucht, aber leider keine Lösung gefunden.

Hier der NICHT funktionierende Excel Makro Coede:
Code: (dl )
1
2
3
4
5
6
7
8
9
...Verbindung aufbauen...
Client.SendData &HF0
Client.SendData &H6
Client.SendData &H3
Client.SendData &H1
Client.SendData &H3
Client.SendData &H31
Client.SendData &H0
DoEvents


----------------------------------------------------
Hier der funktionierende Excel Makro Code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
...Verbindung aufbauen...
Dim byteArray(7) As Byte
byteArray(0) = &HF0
byteArray(1) = &H6
byteArray(2) = &H3
byteArray(3) = &H1
byteArray(4) = &H3
byteArray(5) = &H31
byteArray(6) = &H0
Client.SendData byteArray()
DoEvents


Hier die verschiedenen Perl Tests (die auskommentierten Bereiche haben auch nicht funktioniert):
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl -w
use strict;
use IO::Socket;

my @tele;
#push(@tele, 0xF0);
#push(@tele, 0x06);
#push(@tele, 0x03);
#push(@tele, 0x01);
#push(@tele, 0x03);
#push(@tele, 0x31);
#push(@tele, 0x0);
push(@tele, hex(0xF0));
push(@tele, hex(0x06));
push(@tele, hex(0x03));
push(@tele, hex(0x01));
push(@tele, hex(0x03));
push(@tele, hex(0x31));
push(@tele, hex(0x0));

my $bytearray = pack("H", 0xF0, 0x06, 0x03, 0x01, 0x03, 0x31, 0x0);

#Daten schreiben in Datenspeicher-Server
my $ip = '192.168.1.11';
my $port = 12004;
my $socket = new IO::Socket::INET (
PeerAddr => $ip,
PeerPort => $port,
Proto=> "tcp",
Type => SOCK_STREAM,
);
die "Keine Verbindung zum BAOS770 über $ip:$port möglich! $!\n" unless defined $socket;

#$socket->autoflush(1);

print $socket $bytearray;

#$socket->send( @tele );
#$socket->send( "\r\n" );
#print $socket @tele;
print $socket "\r\n";

#Ich sende zwar die Daten, aber erfolglos.
#Bis hierhin komme ich immer, dann kommt aber nie eine Antwort vom KNX Server :-(

my $answer = <$socket>;
print "Receiving: $answer\n";
close($socket);

----------------------------------------------------

Es wäre SUPER, wenn hier jemand einen Tipp hätte.

Danke & Gruß,
Roger



---
//Modedit Gwendragon: Titel erweitert
---

View full thread Über Socket senden funktioniert nicht (KNX/EIB Bussystem)