9 Einträge, 1 Seite |
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
####################Anfang##############
#!/usr/local/bin/perl
use strict;
################################################################################
#Initialisierung
my (@botschaften_gesamt);
################################################################################
#main-Routine
print "\n\n ----------- Start --------- \n\n";
read_in();
process();
print "\n\n ----------- Ende --------- \n\n";
################################################################################
sub read_in
{
my ($botschaft_bin) = "\x00" x 16;
my ($path_in) = shift @ARGV;
open (FILE, "$path_in") or die $!;
binmode (FILE);
#es genügt den Cursor einmal in der Datei zu setzen
seek (FILE, 1024, 0);
until (substr($botschaft_bin,0,5) eq "\xFF" x 5 && $botschaft_bin ne "\xFF" x 16)
{
######################################################################
#Einlesen einer Botschaft des cco.files -> i.O.
read (FILE, $botschaft_bin, 16);
######################################################################
#in der Botschaftsstruktur abspeichern
push (@botschaften_gesamt, $botschaft_bin);
}
close (FILE);
}
################################################################################
sub process
{
my (@botschaft_process);
mkdir "./result";
open Gelb, ">./result/gelb01.asc"; open Gruen, ">./result/gruen01.asc"; open Blau, ">./result/blau01.asc";
my ($kanal);
my (%hash) = ("01",*Gelb , "02",*Gruen , "04",*Blau);
foreach (@botschaften_gesamt)
{
#binäre Darstellung in hexadezimale wandeln
$_ = unpack ("H32", $_);
#Botschaft in ihre Elemente mittels unpack zerlegen
@botschaft_process = unpack("A10 A2 A20", $_);
#alle CAN-Kanaele können durchlaufen werden
foreach $kanal(keys(%hash))
{
if ($botschaft_process[1] eq $kanal)
{
printf {$hash{$kanal}} " %16s %1s %20s \n", $botschaft_process[0],$botschaft_process[1],$botschaft_process[2];
last;
}
}
#Leeren des Feldes durch Freigeben des Elements
$_ = undef;
}
close Gelb; close Gruen; close Blau;
}
######################################################Ende##########################
"\xFF" x 5
cat /proc/meminfo
Quote-- das Testskript läuft bei mir noch unter Windows, deswegen "top"?? =/=)
--- Datenbank? ist der Zugriff den schneller - benötige Daten aus dem Quellfile in der Regel nur einmal zur Analyse, deswegen ist Datenbank doch zu großer Aufwand, oder??
9 Einträge, 1 Seite |