Hallo,
in einem Perl Script sollen UDP frames erzeugt bzw. gesendet werden,
welche XY Koordinaten und Farbwerte RGB ( je ein byte) enthalten.
Angenommen der Server erzeugt folgende Werte für einen "Pixel"
X-Koordinate= Pixel 8 (HEX:08)
Y-Koordinate= Pixel 2 (HEX:02)
(Farbe:violett)
Rotwert= 160 (HEX:A0)
Grünwert= 32 (HEX:20)
Blauwert= 240 (HEX:F0)
Nnun sollen die Daten exakt wie folgt formatiert - versendet werden
"0802A020F0"
Hierfür habe ich folgendes Perl-Script geschrieben.
1 | #!/usr/bin/perl
|
2 |
|
3 | use strict;
|
4 | use warnings;
|
5 |
|
6 | use IO::Socket;
|
7 | my $xval=00;
|
8 | my $yval=00;
|
9 | my $rval=00;
|
10 | my $gval=00;
|
11 | my $bval=00;
|
12 |
|
13 |
|
14 | my $bulb_sock = IO::Socket::INET->new(
|
15 | Proto => 'udp',
|
16 | PeerPort => 8888,
|
17 | PeerAddr => '192.168.3.23',
|
18 | ) or die "Could not create socket: $!\n";
|
19 | for( ; ; )
|
20 | {
|
21 |
|
22 |
|
23 | #Generate Random XY Coordinates within possible range and convert to HEX
|
24 | $xval = int(rand(9)); $xval = sprintf("%02x",$xval);
|
25 | $yval = int(rand(23)); $yval = sprintf("%02x",$yval);
|
26 |
|
27 | #Generate Random RGB Values within possible range for additive color mixing and convert to HEX
|
28 | $rval = int(rand(255)); $rval = sprintf("%02x",$rval);
|
29 | $gval = int(rand(255)); $gval = sprintf("%02x",$gval);
|
30 | $bval = int(rand(255)); $bval = sprintf("%02x",$bval);
|
31 |
|
32 | #send data via UDP
|
33 | $bulb_sock->send("$xval"."$yval"."$rval"."$gval"."$bval") or die "Send Error: $!\n";
|
34 | }
|
Anders als erartet, sendet dieses jedoch für oben genannte XYZRGB Werte:
"30383032613032306630"
und nicht:
"0802A020F0"
Wo ist das Problem ?
Danke !