Thread PHP script in perl umsetzen (10 answers)
Opened by thoweiss at 2007-03-22 14:10

thoweiss
 2007-03-23 17:45
#75255 #75255
User since
2007-03-22
6 Artikel
BenutzerIn
[default_avatar]
So langsam werde ich wuschig!!

wenn ich meine bytes als array übergebe, mit pack in binäre daten verwandle und dann an die CRC routine übergebe, dann geht es!!

Aber wie zum geier wandel ich einen String "fe0401" in ein hex-array mit den werten my @bytes = (0xFE, 0x04, 0x01); ??

Vermutlich ist es so einfach, aber ich sehe es im moment nicht...

Ich mach jetzt erstmal pause....

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
#!/bin/perl

use strict;
use warnings;


my @bytes = (0xFE, 0x04, 0x01); #command for get software version from HS485PCI

my $cmd = pack("C*", @bytes);
print $cmd,"\n";

my $CRC16 = GetCRC16($cmd. "\x00\x00"); # ergibt "BED2"
print "Checksum A: ". sprintf("%x", $CRC16). "\n";


my $strToSend = "\xfe\x04\x01";
print $strToSend,"\n";

$CRC16 = GetCRC16($strToSend. "\x00\x00"); # ergibt "BED2"
print "Checksum 1: ". sprintf("%x", $CRC16). "\n";

sub GetCRC16 {
my $s = shift;

my $CRCreg = 0xffff00;

for (my $cp=0; $cp<length($s); $cp++) {
$CRCreg |= ord( substr($s,$cp,1) );

for (my $bp=0; $bp<8; $bp++) {
$CRCreg <<= 1;
if ($CRCreg & 0x1000000) {
$CRCreg ^= 0x100200; # hier ist das Polynom 0x1002 enthalten
}
$CRCreg &= 0xffffff;
}
}
return $CRCreg >> 8;
}

1;
\n\n

<!--EDIT|thoweiss|1174664806-->

View full thread PHP script in perl umsetzen