diff --git a/doc/revpicheckclient.html b/doc/revpicheckclient.html
index 7b5ca6f..2069514 100644
--- a/doc/revpicheckclient.html
+++ b/doc/revpicheckclient.html
@@ -82,6 +82,9 @@ Methods
hideallwindows |
Versteckt alle Fenster. |
+| maxint |
+Errechnet maximalen int() Wert für Bytes max 22. |
+
| readvalues |
Ruft nur Input Werte von RevPi ab und aktualisiert Fenster. |
@@ -236,7 +239,23 @@ RevPiCheckClient.hideallwindows
hideallwindows()
Versteckt alle Fenster.
-
+
+
+RevPiCheckClient.maxint
+maxint(bytelen)
+
+Errechnet maximalen int() Wert für Bytes max 22.
+
+- bytelen
+-
+Anzahl Bytes
+
+
+- Returns:
+-
+int() max oder 0 bei Überschreitung
+
+
RevPiCheckClient.readvalues
readvalues()
diff --git a/revpipycontrol.api b/revpipycontrol.api
index 0fcb54c..4c807c3 100644
--- a/revpipycontrol.api
+++ b/revpipycontrol.api
@@ -11,6 +11,7 @@ revpicheckclient.RevPiCheckClient._onfrmconf?5(canvas)
revpicheckclient.RevPiCheckClient._warnwrite?5()
revpicheckclient.RevPiCheckClient._workvalues?5(io_dicts=None, writeout=False)
revpicheckclient.RevPiCheckClient.hideallwindows?4()
+revpicheckclient.RevPiCheckClient.maxint?4(bytelen)
revpicheckclient.RevPiCheckClient.readvalues?4()
revpicheckclient.RevPiCheckClient.refreshvalues?4()
revpicheckclient.RevPiCheckClient.tmr_workvalues?4()
diff --git a/revpipycontrol/revpicheckclient.py b/revpipycontrol/revpicheckclient.py
index 9226f2e..1b25490 100644
--- a/revpipycontrol/revpicheckclient.py
+++ b/revpipycontrol/revpicheckclient.py
@@ -96,7 +96,7 @@ class RevPiCheckClient(tkinter.Frame):
try:
newvalue = io[5].get()
# Wertebereich prüfen
- if newvalue < 0 or newvalue > 256 ** io[1] - 1:
+ if newvalue < 0 or newvalue > self.maxint(io[1]):
raise ValueError("too big")
self.__chval(device, io)
@@ -177,7 +177,7 @@ class RevPiCheckClient(tkinter.Frame):
check.grid(column=1, row=rowcount)
else:
var = tkinter.IntVar()
- txt = tkinter.Spinbox(s_frame, to=256 ** io[1] - 1)
+ txt = tkinter.Spinbox(s_frame, to=self.maxint(io[1]))
txt.bind(
"",
lambda event, tkvar=var: self.__saveoldvalue(event, tkvar)
@@ -189,7 +189,8 @@ class RevPiCheckClient(tkinter.Frame):
)
txt["command"] = \
lambda device=device, io=io: self.__chval(device, io)
- txt["state"] = "disabled" if iotype == "inp" else "normal"
+ txt["state"] = "disabled" if iotype == "inp" or \
+ self.maxint(io[1]) == 0 else "normal"
txt["width"] = 5
txt["textvariable"] = var
txt.grid(column=1, row=rowcount)
@@ -363,6 +364,12 @@ class RevPiCheckClient(tkinter.Frame):
for win in self.dict_wins:
self.dict_wins[win].withdraw()
+ def maxint(self, bytelen):
+ u"""Errechnet maximalen int() Wert für Bytes max 22.
+ @param bytelen Anzahl Bytes
+ @return int() max oder 0 bei Überschreitung"""
+ return 0 if bytelen > 22 else 256 ** bytelen - 1
+
def readvalues(self):
u"""Ruft nur Input Werte von RevPi ab und aktualisiert Fenster."""
if not self.autorw.get():