mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 13:53:53 +01:00
IOs are callable to get or set values.
You do not have to use the .value property. Just call the IO .io.io_name() to get the value. If you like to set a value just pass the value to the call .io.io_name(new_value).
This commit is contained in:
@@ -398,6 +398,19 @@ class IOBase(object):
|
|||||||
else:
|
else:
|
||||||
return any(self._parentdevice._ba_devdata[self._slc_address])
|
return any(self._parentdevice._ba_devdata[self._slc_address])
|
||||||
|
|
||||||
|
def __call__(self, value=None):
|
||||||
|
if value is None:
|
||||||
|
# Inline get_value()
|
||||||
|
if self._bitshift:
|
||||||
|
return bool(
|
||||||
|
self._parentdevice._ba_devdata[self._slc_address.start]
|
||||||
|
& self._bitshift
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return bytes(self._parentdevice._ba_devdata[self._slc_address])
|
||||||
|
else:
|
||||||
|
self.set_value(value)
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
"""
|
"""
|
||||||
Gibt die Bytelaenge des IO zurueck.
|
Gibt die Bytelaenge des IO zurueck.
|
||||||
@@ -868,6 +881,28 @@ class IntIO(IOBase):
|
|||||||
signed=self._signed
|
signed=self._signed
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __call__(self, value=None):
|
||||||
|
if value is None:
|
||||||
|
# Inline get_intvalue()
|
||||||
|
return int.from_bytes(
|
||||||
|
self._parentdevice._ba_devdata[self._slc_address],
|
||||||
|
byteorder=self._byteorder,
|
||||||
|
signed=self._signed
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# Inline from set_intvalue()
|
||||||
|
if type(value) == int:
|
||||||
|
self.set_value(value.to_bytes(
|
||||||
|
self._length,
|
||||||
|
byteorder=self._byteorder,
|
||||||
|
signed=self._signed
|
||||||
|
))
|
||||||
|
else:
|
||||||
|
raise TypeError(
|
||||||
|
"'{0}' need a <class 'int'> value, but {1} was given"
|
||||||
|
"".format(self._name, type(value))
|
||||||
|
)
|
||||||
|
|
||||||
def _get_signed(self) -> bool:
|
def _get_signed(self) -> bool:
|
||||||
"""
|
"""
|
||||||
Ruft ab, ob der Wert Vorzeichenbehaftet behandelt werden soll.
|
Ruft ab, ob der Wert Vorzeichenbehaftet behandelt werden soll.
|
||||||
@@ -1191,6 +1226,20 @@ class StructIO(IOBase):
|
|||||||
"registered value does not fit process image scope"
|
"registered value does not fit process image scope"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __call__(self, value=None):
|
||||||
|
if value is None:
|
||||||
|
# Inline get_structdefaultvalue()
|
||||||
|
if self._bitshift:
|
||||||
|
return self.get_value()
|
||||||
|
else:
|
||||||
|
return struct.unpack(self.__frm, self.get_value())[0]
|
||||||
|
else:
|
||||||
|
# Inline set_structvalue()
|
||||||
|
if self._bitshift:
|
||||||
|
self.set_value(value)
|
||||||
|
else:
|
||||||
|
self.set_value(struct.pack(self.__frm, value))
|
||||||
|
|
||||||
def _get_frm(self) -> str:
|
def _get_frm(self) -> str:
|
||||||
"""
|
"""
|
||||||
Ruft die struct Formatierung ab.
|
Ruft die struct Formatierung ab.
|
||||||
|
|||||||
Reference in New Issue
Block a user