Ich bräuchte mal Hilfe in sachen Perl...

Begonnen von ext23, 10 Juli 2013, 10:43:44

Vorheriges Thema - Nächstes Thema

ext23

Guten Morgen,

kann mir hier bitte jemand helfen. Ich habe am AVR-NET-IO ein Feuchtigkeitssensor am digitalen Eingang. Abfragen kann ich diesen Port und ich bekomme ein "port 0: 0x80" oder "port 0: 0x81" zurück je nach Zustand am Bit 0 (PA0).

Wie bekomme ich das jetzt in die Postproc der classdef Datei so verpackt, dass ich am Ende eine 1 oder 0 zurück bekomme, bzw ein Voll oder Leer? Die Kontrolle sollte aber nur auf das niederwertigste Bit erfolgen da ich bei Verwendung der anderen Eingänge natürlich auch komplett andere Hex Rückgaben erhalte.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

ext23

Da ja leider keine Reaktionen kamen, habe ich das dank albundy118 mittlerweile hinbekommen, schaut dann so aus:

params IOPort IOPin

get status cmd {"io get pin %IOPort"}
get status postproc {\
 my @@fullport = split(/ /,trim($_));\
 my @@hexport = split(/x/,$fullport[2]);\
 my $binport = sprintf( "%%b", hex( $hexport[1] ) );\
 my $binlength = length($binport);\
 while ($binlength < 8){\
  $binport = "0".$binport;\
  $binlength = length($binport);\
 }\
 my @@pinarray = split('',$binport);\
 my %%hash = (\
  1 => '7',\
  2 => '6',\
  3 => '5',\
  4 => '4',\
  5 => '3',\
  6 => '2',\
  7 => '1',\
  8 => '0',\
 );\
 my $pinvalue = $pinarray[$hash{%IOPin}];\
 $pinvalue;\
}


Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)