FHEM Forum

FHEM => fhem-users => Thema gestartet von: Tommi am 11 Mai 2008, 19:59:06

Titel: [FHZ] Änderungen in fhem.pl und einigen Modulen für Nutzung in Windows
Beitrag von: Tommi am 11 Mai 2008, 19:59:06
                                                     

Hallo zusammen,
ich habe ein paar Änderungen ins CVS eingescheckt, um die
Lauffähigkeit unter Windows zu ermöglichen(FHZ, EM und WS300):
1. Ersetzen des statische "use Device::SerialPort; new ..." durch  if
($^O=~/Win/) {
    eval ("use Win32::SerialPort;");
   my $po = new Win32::SerialPort ($DeviceName);
  }else{
    eval ("use Device::SerialPort;");
   my $po = new Device::SerialPort ($DeviceName);
  }
2. Da das Select unter Windows offensichtlich nur für Sockets wie
erwartet funktioniert, habe ich eine neue Funktion "ReadyFn"
eingeführt, welche selbst überprüft, ob Daten da sind und true/false
zurückgeben soll. Ich habe das in meinem WS200-Modul genutzt, in dem
ich dort eine Abfrage auf $PortObj->status eingebaut habe und der read
dann auch klappt
3. Wenn HandleTimeout() undef zurückgibt, wartet das select ewig. Ich
habe jetzt mal ein ||0.2 rangehangen. Viel größer sollte es nicht
sein, da sonst die Puffer überlaufen können. Was macht HandleTimeout()
überhaupt für das select? 15min Warten in der loop ist nicht ganz
logisch für mich. Aber vielleicht gibt es noch andere Gründe.
4.FileLog: $fh->sync gibt es nicht unter windows, habe ich deshalb mit
einem if !($^O eq 'MSWin32') versehen.

Ich hoffe, mit meinen Änderungen nicht gegen eine wichtige
Programmlogik vestossen zu haben.
Viele Grüße
Tommi
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Änderungen in fhem.pl und einigen Modulen für Nutzung in Windows
Beitrag von: Guest am 11 Mai 2008, 22:09:43
Originally posted by: <email address deleted>

Hi,

tommi:
>     eval ("use Device::SerialPort;");

Wie wäre es stattdessen mit einem simplen

   require Device::SerialPort;

--
Matthias Urlichs  |  {M:U} IT Design @ m-u-it.de  |   smurf@smurf.noris.de
Disclaimer: Das Zitat wurde zufällig ausgewählt.  |   http://smurf.noris.de
 - -
Mit einer Quitscheente ist man nie allein.
      -- frei nach Douglas Adams "Per Anhalter durch die Galaxis"

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Änderungen in fhem.pl und einigen Modulen für Nutzung in Windows
Beitrag von: Tommi am 11 Mai 2008, 22:35:07
                                                     

> >     eval ("use Device::SerialPort;");
>
> Wie wäre es stattdessen mit einem simplen
>
>         require Device::SerialPort;

Jo, geht bestimmt auch. Hat diese Methode Vorteile gegenüber eval (das
ist ja auch nur ein Einzeiler :-))))? Ziel ist ja, einen compile error
zu vermeiden, wenn wan das falsche Modul anzieht.

Tommi
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Änderungen in fhem.pl und einigen Modulen für Nutzung in Windows
Beitrag von: Tommi am 12 Mai 2008, 11:23:12
                                                     

Ein kleiner Fehler war noch drin. Das "my $po" im if war im falschem
scope.
Es muss heissen:
my $po;
if ($^O=~/Win/) {
    eval ("use Win32::SerialPort;"); # oder require
Win32::SerialPort;
    $po = new Win32::SerialPort ($DeviceName);
  }else{
    eval ("use Device::SerialPort;");
    $po = new Device::SerialPort ($DeviceName);
  }

Tommi
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Änderungen in fhem.pl und einigen Modulen für Nutzung in Windows
Beitrag von: Guest am 12 Mai 2008, 13:58:52
Originally posted by: <email address deleted>

Hi,

tommi:
> Jo, geht bestimmt auch. Hat diese Methode Vorteile gegenüber eval (das
> ist ja auch nur ein Einzeiler :-))))? Ziel ist ja, einen compile error
> zu vermeiden, wenn wan das falsche Modul anzieht.
>
Den Error bekommst du in der Zeile drauf sowieso um die Nase geknallt.
--
Matthias Urlichs  |  {M:U} IT Design @ m-u-it.de  |   smurf@smurf.noris.de
Disclaimer: Das Zitat wurde zufällig ausgewählt.  |   http://smurf.noris.de
 - -
Aus einer Kleinanzeige: Verkaufe vollelektronischen Fensterheber für
Windows95.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Änderungen in fhem.pl und einigen Modulen für Nutzung in Windows
Beitrag von: Tommi am 12 Mai 2008, 19:09:01
                                                     

Das M232-Modul habe ich jetzt auch "bearbeitet", so das es auch unter
windows sauber arbeitet. Nach dem Senden des Kommandos war jedoch ein
sleep(1); notwendig, weil das gute Stück wohl nicht so schnell
antworten kann.

Tommi
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-