Thread Schleifen warten lassen (22 answers)
Opened by Hubbi at 2010-05-11 10:47

Gast Hubbi
 2010-05-11 12:01
#137017 #137017
Vielen Dank für die Antworten.

ich habe eine Waage die in sek. Takt eine Antwort ausgibt die mittels Perl ausgewertet werden. Da dieser Wert schwanken kann (aus welchen Grund auch immer) sollen die letzten 2 Werte mit den aktuellen Wert verglichen werden (was auch soweit klappt...). Solange er die Schleife 5 mal abläuft (mit Sleep(1), soll den Benutzer ein "Bitte Warten"- Dialog angezeigt bekommen (das vor der eigentliche Schleife in Code eingebunden ist).

Ausschnitt Code:

Code: (dl )
1
2
3
4
5
6
warte();

our @material = ws($ARGV[1]); # Material und Preis auslesen (json_read)
our @gewicht = wiegen(2);
our $preis = kosten($gewicht[0], $material[0], $material[1]); # ausrechnen der Gesamtkosten
our $preis_gesamt;


warte() ist das Dialogfenster.
wiegen(2) führ die besagte Schleife aus.

Sub wiegen:
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
...
if($action == 2 and defined($serial))
{
my @werte;

for(my $i = 1; $i <= 5; $i++)
{

my $tmp = $serial->input;

my @wert = split(/\s+/, $tmp);

push(@werte, $wert[1]);

sleep(1);
}

# - letztes Arrayelement mit den vorhigen 2 prüfen - #

my @tmp2;

foreach(@werte)
{
if($_ eq $werte[4])
{
push(@tmp2, $_);
}
}

if(@tmp2 >= 3)
{
$gewicht = $tmp2[0];

$gewicht =~ s/;//g;
$gewicht =~ s/,/\./;
$gewicht =~ s/kg//;
}
else
{
Wx::MessageBox("Gewogene Werte stimmten nicht überein!\nVersuchen Sie es erneut.");
}

...


Hoffe ihr versteht was ich möchte.
Hubbi
Last edited: 2010-05-11 12:08:18 +0200 (CEST)

View full thread Schleifen warten lassen