Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]13097[/thread]

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

Leser: 1


<< >> 10 Einträge, 1 Seite
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
---
murphy
 2009-02-03 13:19
#118608 #118608
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Erstmal wuerde ich ja Fehlerueberpruefungen beim Oeffnen und Schliessen des Sockets einbauen.

Ausserdem ist keine Der von Dir angegebenen Codevarianten geeignet, einen Binaerstring zu erzeugen. Ich wuerde einfach mal
Code (perl): (dl )
print $socket "\xF0\x06\x03\x01\x03\x31\0";

oder
Code (perl): (dl )
print $socket pack("C*", 0xF0, 0x06, 0x03, 0x01, 0x03, 0x31, 0x0);

versuchen.
When C++ is your hammer, every problem looks like your thumb.
renee
 2009-02-03 13:56
#118610 #118610
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Auch wenn ich Linuxer die Arbeit abnehme ;-)

Crosspost: http://perlboard.de/cgi-bin/perlboard.pl?action=sh...
und http://www.perlunity.de/cgi-bin/forum/forum_thread...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
perli
 2009-02-03 14:00
#118611 #118611
User since
2003-09-12
23 Artikel
BenutzerIn
[default_avatar]
Hallo renee,
ist das ein Problem?
Ich dachte die Chance auf eine Antwort ist größer und habe es nicht als Verstoß gesehen.
Wenn ja, dann sorry... soll nicht wieder vorkommen.
Gruß, Roger
perli
 2009-02-03 14:01
#118612 #118612
User since
2003-09-12
23 Artikel
BenutzerIn
[default_avatar]
Hallo murphy,
Danke erst einmal - werde es gleich heute abend ausprobieren!
Gruß, Roger
renee
 2009-02-03 14:16
#118614 #118614
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Im Prinzip kein Problem, aber man sollte kurz darauf hinweisen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
perli
 2009-02-03 14:32
#118615 #118615
User since
2003-09-12
23 Artikel
BenutzerIn
[default_avatar]
OK - werd ich mir merken!
Die Frage ist auch noch bei selfhtml gepostet.
ABER!!! Nur hier habe ich einen Tipp bekommen und das ist doch die beste Werbung für das Forum :-)
Linuxer
 2009-02-03 14:39
#118616 #118616
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
perli+2009-02-03 13:00:08--
Hallo renee,
ist das ein Problem?
Ich dachte die Chance auf eine Antwort ist größer und habe es nicht als Verstoß gesehen.
Wenn ja, dann sorry... soll nicht wieder vorkommen.
Gruß, Roger

Siehe: http://perlboard.de/cgi-bin/perlboard.pl?action=sh...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
perli
 2009-02-03 14:44
#118617 #118617
User since
2003-09-12
23 Artikel
BenutzerIn
[default_avatar]
Ah ja... jetzt leuchtet es mir auch ein :-)
Nochmals sorry und ich gelobige auch Besserung.
perli
 2009-02-04 10:24
#118634 #118634
User since
2003-09-12
23 Artikel
BenutzerIn
[default_avatar]
Hallo murphy,
hat funktioniert!
Danke & Gruß,
Roger
<< >> 10 Einträge, 1 Seite



View all threads created 2009-02-03 11:10.