1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;
my @send= fillbuffer();
my $buf=pack('s*',@send);
my $len=@send;
print "<$buf> <$len>";
sub fillbuffer { return ( STX(),0x11,0x12,ETX() ); }
sub STX() { "\002" };
sub ETX() { "\003" };
Wenn du
warnings nutzen würdest würden dir die Meldungen bezüglich den schon kodierten Werten auffallen. Weiterhin wird es Probleme geben wenn du versuchst die Werte zu versenden. Ein "Short" hat zwei Byte, das bedeutet, dass nur die Hälfte versendet wird, wenn du die Länge es Arrays nimmst.
Oder willst du es als "Char" versenden das hat ein Byte.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;
use Data::Dumper;
$Data::Dumper::Useqq=1;
my @send= fillbuffer();
my $buf=pack('s*',@send);
print Dumper($buf,length $buf);
sub fillbuffer { return ( STX(),0x11,0x12,ETX() ); }
sub STX() { unpack('C',"\002") };
sub ETX() { 3 };