Ankündigung

Einklappen

Sammelbestellung ETS6 Vollversionen aktiv!

Sammelbestellung für ETS6 Vollversionen (Prof., Home, Lite) mit 40% Rabatt aktiv! Infos im Forum!
Mehr anzeigen
Weniger anzeigen

EIS9 32Bit float für Misterhouse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    EIS9 32Bit float für Misterhouse

    Hallo,

    habe mal 4Byte float EIS9 für Misterhouse geschrieben. 2Byte hatte mir doch zuviele Rundungsfehler bei größeren Werten.

    Hier der code für die Eib_Items.pm

    Code:
    # EIB9_Item: 32-bit float
    
    package EIB9_Item;
    
    @EIB9_Item::ISA = ('EIB_Item');
    
    sub eis_type {
        return '9';
    }
    
    sub decode {
        my ($self, @data) = @_;
        my $res;
    
        unless ($#data == 4) {
            &main::print_log("Not EIS type 9 data received for $self->{groupaddr}: \[@data\]") if $main::config_parms{eib_errata} >= 2;
            return;
        }
        my $res = unpack "f", pack "L", (($data[1] << 24 ) | ($data[2] << 16 ) | ($data[3] << 8 ) | $data[4]);
        
    #    &main::print_log("EIS9 for $self->{groupaddr}: >$res<");
        return $res;
    }
    
    sub encode {
        my ($self, $state) = @_;
        my $res;
        $res = unpack "L", pack "f", $state;
        #&main::print_log("Res: $res State: $state \n");
        return([0, ($res & 0xff000000) >> 24, ($res & 0xff0000) >> 16, ($res & 0xff00) >> 8, $res & 0xff]);
    }
    Gruß

    Martin
Lädt...
X