Ankündigung

Einklappen
Keine Ankündigung bisher.

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