Originally posted by: <email address deleted>
Hallo Rudi,
im fhem.pl, sub Shutdown kommen beim Ausfuehren des exit(0) Befehls
folgende Logs:
Error in PurgeComm at C:\fhem\fhem.pl line 0
Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist.
Error in GetCommTimeouts at C:\fhem\fhem.pl line 0
Error Closing handle 232 for COM5:
Das Handle ist ungültig.
Error closing Read Event handle 236 for COM5:
Das Handle ist ungültig.
Error closing Write Event handle 240 for COM5:
Das Handle ist ungültig.
Error in PurgeComm at C:\fhem\fhem.pl line 0
Das Handle ist ungültig.
Error in GetCommTimeouts at C:\fhem\fhem.pl line 0
Error Closing handle 216 for COM6:
Das Handle ist ungültig.
Error closing Read Event handle 224 for COM6:
Das Handle ist ungültig.
Error closing Write Event handle 228 for COM6:
Das Handle ist ungültig.
Der Fehler wird in der Win32API/CommPort.pm generiert.
-------------
Hab mal folgendes versucht:
a) im 00_FHZ eine Shutdown Routine eingebaut (wird auch beim Shutdown
sauber getriggert):
$hash->{ShutdownFn} = "FHZ_Shutdown";
...
#####################################
sub
FHZ_Shutdown($)
{
my ($hash) = @_;
undef $hash->{PortObj} if($hash->{PortObj});
return undef;
}
b) im 00_CUL beim Shutdown($) selbigen undef angewendet:
#####################################
sub
CUL_Shutdown($)
{
my ($hash) = @_;
CUL_SimpleWrite($hash, "X00") if(!CUL_isCUR($hash));
undef $hash->{PortObj} if($hash->{PortObj});
return undef;
}
Statt "undef" (so hab' im WWW gelesen wird der Serialport geclosed)
hab ichs auch mal mit "$hash->{PortObj}->close" versucht, aber kein
Erfolg.
Jetzt gehn mir langsam die Ideen aus.
Gruß
Klaus
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
> im fhem.pl, sub Shutdown kommen beim Ausfuehren des exit(0) Befehls
> folgende Logs:
Kommen diese Fehler _ohne_ deine Aenderungen, oder mit, oder sowohl
als auch?
Wenn letzteres, dann wuerde ich versuchen direkt nach dem Oeffnen ein
close/undef/etc gefolgt von einem exit zu machen, um Nebeneffekte
erstmal auszuschliessen.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
Originally posted by: <email address deleted>
> Kommen diese Fehler _ohne_ deine Aenderungen, oder mit, oder sowohl
> als auch?
Fehler kommt auch mit original cvs (von heute). Um es vorwegzunehmen,
der Fehler wird durch den fork in fhem.pl. verursacht. By the way, ich
benutze Activeperl 5.10.
Nachfolgend die Tests.
> Wenn letzteres, dann wuerde ich versuchen direkt nach dem Oeffnen ein
> close/undef/etc gefolgt von einem exit zu machen, um Nebeneffekte
> erstmal auszuschliessen.
Testbedingungen:
* Minimal cfg *ORIGINAL cvs *CUL abgestöpselt *FHZ in Alufolie und
Edelstahl Kochtopf!!! damit möglichst kein Traffic reinkommt:
attr global logfile c:\fhem\fhem-%Y-%m-%d.txt
attr global pidfilename c:\fhem\fhem.pid
attr global modpath c:\fhem
attr global verbose 5
attr global port 7072
define FHZ FHZ COM6:
---
1. Versuch,:
Was mir auffällt im Log:
mixed \ und / (siehe Loading c:\fhem/ , ist aber anscheinend kein
Problem)
00_FHZ.pm line 204 uninitialized value $msg (erstmal nicht im Fokus
der Betrachtung)
2009.08.03 19:19:08 5: Cmd: >attr global port 7072<
2009.08.03 19:19:08 5: Cmd: >define FHZ FHZ COM6:<
2009.08.03 19:19:08 5: Loading c:\fhem/FHEM/00_FHZ.pm, order 00
2009.08.03 19:19:08 3: FHZ opening FHZ device COM6:
2009.08.03 19:19:08 3: FHZ opened FHZ device COM6:
Use of uninitialized value $msg in concatenation (.) or string at c:
\fhem/FHEM/00_FHZ.pm line 204.
Use of uninitialized value $msg in concatenation (.) or string at c:
\fhem/FHEM/00_FHZ.pm line 204.
2009.08.03 19:19:10 0: Server started (version =VERS= from =DATE=
($Id: fhem.pl,v 1.76 2009/07/26 09:20:07 rudolfkoenig Exp $), pid
-3928)
2009.08.03 19:19:10 5: FHZ/RAW:
810cc9bf01021f05a0011c1c01be810fc9a501028401080701135f1d0472 08
(Unparsed: )
2009.08.03 19:19:10 5: FHZ dispatch 810cc9bf01021f05a0011c1c01be
2009.08.03 19:19:10 4: FHZ FHZ unknown: 810cc9bf01021f05a0011c1c01be
2009.08.03 19:19:10 5: Triggering FHZ (1 changes)
2009.08.03 19:19:10 5: FHZ dispatch 810fc9a501028401080701135f1d047208
2009.08.03 19:19:10 4: FHZ FHZ unknown:
810fc9a501028401080701135f1d047208
2009.08.03 19:19:10 5: Triggering FHZ (1 changes)
2009.08.03 19:19:11 4: Connection accepted from 127.0.0.1:2207
2009.08.03 19:19:11 5: Cmd: >shutdown<
2009.08.03 19:19:11 0: Server shutdown
Error in PurgeComm at C:\fhem\fhem.pl line 0
Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist.
Error in GetCommTimeouts at C:\fhem\fhem.pl line 0
Error Closing handle 184 for COM6:
Das Handle ist ungültig.
Error closing Read Event handle 188 for COM6:
Das Handle ist ungültig.
Error closing Write Event handle 192 for COM6:
Das Handle ist ungültig.
----
N.B. Ich glaub' das nicht, was ist das für eine Antenne im FHZ1350,
die trotz meiner Spezial-Schirmung Daten empfängt.
-------
2. Versuch: in 00_FHZ direkt hinter den Log 3 einen exit(0)
reingebaut:
Log 3, "kpb hiernach gleich Abflug. FHZ opened FHZ device $dev";
exit (0);
Siehe da, kein Fehler mehr::
2009.08.03 19:32:28 3: kpb hiernach gleich Abflug. FHZ opened FHZ
device COM6: (letzter Log vor Exit)
2009.08.03 19:32:48 5: Cmd: >attr global port 7072< (1. Log nach
Neustart)
-----
3. Versuch: in 00_FHZ direkt hinter
FHZ_DoInit($name, $hash->{ttytype}, $po);
exit (0);
Jetzt kommt wieder Use of ...
2009.08.03 19:42:08 3: FHZ opened FHZ device COM6:
Use of uninitialized value $msg in concatenation (.) or string at c:
\fhem/FHEM/00_FHZ.pm line 204.
Use of uninitialized value $msg in concatenation (.) or string at c:
\fhem/FHEM/00_FHZ.pm line 204.
... aber sonst ok.
------
4. Versuch: Also nun ab in die fhem.pl:
Log 0, "Server started (version $attr{global}{version}, pid $$)";
exit (0);
Hier ist er wieder:
2009.08.03 19:46:28 5: Cmd: >attr global port 7072<
2009.08.03 19:46:28 5: Cmd: >define FHZ FHZ COM6:<
2009.08.03 19:46:28 5: Loading c:\fhem/FHEM/00_FHZ.pm, order 00
2009.08.03 19:46:28 3: FHZ opening FHZ device COM6:
2009.08.03 19:46:28 3: FHZ opened FHZ device COM6:
Use of uninitialized value $msg in concatenation (.) or string at c:
\fhem/FHEM/00_FHZ.pm line 204.
Use of uninitialized value $msg in concatenation (.) or string at c:
\fhem/FHEM/00_FHZ.pm line 204.
2009.08.03 19:46:30 0: Server started (version =VERS= from =DATE=
($Id: fhem.pl,v 1.76 2009/07/26 09:20:07 rudolfkoenig Exp $), pid
-3120)
Error in PurgeComm at C:\fhem\fhem.pl line 0
Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist.
Error in GetCommTimeouts at C:\fhem\fhem.pl line 0
Error Closing handle 184 for COM6:
Das Handle ist ungültig.
...
------
5. Versuch: vor SignalHandling den exit(0) reingebaut:
exit (0);
SignalHandling();
Gleiches Ergebnis
...
2009.08.03 19:52:48 3: FHZ opened FHZ device COM6:
Use of uninitialized value $msg in concatenation (.) or string at c:
\fhem/FHEM/00_FHZ.pm line 204.
Use of uninitialized value $msg in concatenation (.) or string at c:
\fhem/FHEM/00_FHZ.pm line 204.
Error in PurgeComm at C:\fhem\fhem.pl line 0
Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist.
Error in GetCommTimeouts at C:\fhem\fhem.pl line 0
...
------
6. Versuch: Jetzt gerade das Problem im Code von fhem.pl entdeckt und
die "Lösung" in fhem.cfg eingebaut::
attr global nofork
... und es funktioniert! Windows & perl's fork mögen sich nicht
(zumindestens gibts beim Exit des Sohnprozesses Probleme). Bin über
das Problem selbst schonmal gestolpert und hab' das Problem mit einem
system(1,"play32.exe lassfhemweitermachen.mp3") geholfen, Das Thema
wird auch im Internet diskutiert (google mal nach "windows perl fork
exit crash"). Vielleicht hast Du ja 'ne Lösung dafür?
Wenn nicht würde ich vorschlagen, dass der Fehler vor der Zeile "# Go
to background ..." in etwa so abgefangen wird:
if($^O =~ m/Win/ && !$attr{global}{nofork}) {
Log 0, "Warning: attr global nofork for WINDOWS OS based
implementations necessary";
$attr{global}{nofork}="blabla";
}
Gruß
Klaus
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
> Log 0, "Warning: attr global nofork for WINDOWS OS based implementations necessary";
Diesen Vorschlag (nofork unter Windows erzwingen) habe ich akzeptiert
und eingebaut.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-