Ich habe im Perl / Tk ein Button welche eine Funktion ausführt in welcher eine While schlaufe ausgeführt wird. Jedenfalls stürzt mir dabei immer das Tk ab, in der Konsole sehe ich aber das das programm selber noch läuft. Kann mir da jmd helfen??
thx
User since
2004-09-06
458
Artikel
BenutzerIn
Zeig doch mal ein bißchen Code.
User since
2006-05-31
3
Artikel
BenutzerIn
Mit diesem Befehl (tk):
$main->Button(-width => 35, -text => 'Senden', -command => sub { sms_senden_g() })->pack(-in => $frame_third, -anchor => 'ne');
öffne ich folgende Code sequenz:
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
sub sms_senden_g
{
dat_1();
dat_read();
$empf = 'AT\+CMGS=';
$send = '> ';
$send1 = '+CMGS:';
$pos_empf = 0;
print "Start";
$init = 0;
while ($init == 0 && $end == 1)
{
lesen(); #list aus der COM Schnittstelle falls etwas reinkommt $count = 1
if ($count > 0)
{
if ($return =~ m/$empf/i)
{
$pass = $handle->write("\r\n$send");
print "$send\n";
}
elsif ($return =~ m/$end_of_sms/i) #falls abschlussnachricht
{
$pass = $handle->write("\r\n$send1 $count\r\n");
print "$send1 $count\n";
$temp = "$send1 $count\n";
$pass = $handle->write("\r\nOK\r\n");
print "OK\n";
print "Ende";
dat_0();
}
else
{
quitt();
}
}
else
{
set_timer();
}
}
}
hoffentlich irgendwie verständlich, sonst fragen. Es geht vorallem darum das die Tk oberfläche abstürzt.
User since
2003-08-04
5246
Artikel
ModeratorIn
kannst du die while-schleife durch mehrere
Tk::after bzw. repeat ersetzen? (bringt aber nur was, wenn jeder schleifendurchlauf recht schnell geht)
User since
2003-08-04
5246
Artikel
ModeratorIn
Tk::Event koennte auch was fuer dich sein
User since
2003-11-28
3645
Artikel
ModeratorIn
Wird in der Unterprogrammaufrufen irgendwo ein fork() gemacht?
User since
2006-05-31
3
Artikel
BenutzerIn
nein ich habe nirgends ein folk().
es wäre umständlich die while scheifen zu ersetzten da ich ca. 15 solcher habe. Die while schlaufen laufen zwischen ca. 10 nud 150s.
User since
2003-08-04
14371
Artikel
ModeratorIn
Beutzt Du
strict und warnings?
Gibt es irgendwelche Fehlermeldungen auf der Konsole?
Welche Perl-Version?
Welche Tk-Version?
User since
2006-05-31
3
Artikel
BenutzerIn
[quote=renee,01.06.2006, 10:35][/quote]
nein benutz ich nicht.
Es gibt auch keine Fehlermeldung auf der konsole, einfach die tk oberfläche reagiert nicht mehr (der button ist immer noch gedrückt) und stürzt ab.
Perl Version: 5.8
Tk Version: kA
User since
2003-08-04
14371
Artikel
ModeratorIn
Wie äußert sich das "stürzt ab"? Ich vermute jetzt mal, dass es gar nicht wirklich abstürzt, Du aber darauf "reinfällst", dass das Programm "endlos" auf irgendwas wartet und das Tk-Fenster deshalb nicht aktualisiert wird.
Tk arbeitet sequentiell und nicht parallel (siehe auch
Artikel).