RevPiNetIO.net_cleardefaultvalues() funktionierte nicht mit Server

Bugfix: Bei Instantiierungsfehler traten weitere Fehler auf
This commit is contained in:
2017-11-06 12:56:04 +01:00
parent a1c81cf2b2
commit 7da1906c96
3 changed files with 28 additions and 14 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-5.1.dtd"> <!DOCTYPE Project SYSTEM "Project-5.1.dtd">
<!-- eric project file for project revpimodio2 --> <!-- eric project file for project revpimodio2 -->
<!-- Saved: 2017-11-02, 13:54:10 --> <!-- Saved: 2017-11-06, 11:06:12 -->
<!-- Copyright (C) 2017 Sven Sager, akira@narux.de --> <!-- Copyright (C) 2017 Sven Sager, akira@narux.de -->
<Project version="5.1"> <Project version="5.1">
<Language>en_US</Language> <Language>en_US</Language>
@@ -31,6 +31,8 @@
<Source>test/web_virtdevdriver.py</Source> <Source>test/web_virtdevdriver.py</Source>
<Source>test/web_benniesrun.py</Source> <Source>test/web_benniesrun.py</Source>
<Source>test/web_benniesrunxxl.py</Source> <Source>test/web_benniesrunxxl.py</Source>
<Source>revpimodio2/netio.py</Source>
<Source>test_unitnet.py</Source>
<Source>test_unit.py</Source> <Source>test_unit.py</Source>
</Sources> </Sources>
<Forms/> <Forms/>
@@ -183,6 +185,7 @@
<list> <list>
<string>setup.py</string> <string>setup.py</string>
<string>test_unit.py</string> <string>test_unit.py</string>
<string>test_unitnet.py</string>
</list> </list>
</value> </value>
<key> <key>
@@ -230,6 +233,7 @@
<list> <list>
<string>setup.py</string> <string>setup.py</string>
<string>test_unit.py</string> <string>test_unit.py</string>
<string>test_unitnet.py</string>
</list> </list>
</value> </value>
<key> <key>

View File

@@ -102,12 +102,14 @@ class NetFH(Thread):
with self.__socklock: with self.__socklock:
if position is None: if position is None:
# Alle Dirtybytes löschen
self._slavesock.sendall(_sysdeldirty) self._slavesock.sendall(_sysdeldirty)
else: else:
# Nur bestimmte Dirtybytes löschen
self._slavesock.sendall( self._slavesock.sendall(
b'\x01EY' + b'\x01EY' +
position.to_bytes(length=2, byteorder="little") + position.to_bytes(length=2, byteorder="little") +
b'\x00\x00\xFF\x00\x00\x00\x00\x00\x00\x00\x17' b'\x00\x00\xFE\x00\x00\x00\x00\x00\x00\x00\x17'
) )
check = self._slavesock.recv(1) check = self._slavesock.recv(1)
@@ -118,7 +120,7 @@ class NetFH(Thread):
# Daten bei Erfolg übernehmen # Daten bei Erfolg übernehmen
if position is None: if position is None:
self.__dictdirty = {} self.__dictdirty = {}
else: elif position in self.__dictdirty:
del self.__dictdirty[position] del self.__dictdirty[position]
self.__trigger = True self.__trigger = True
@@ -224,6 +226,7 @@ class NetFH(Thread):
byte_buff += data byte_buff += data
if data.find(b'\x04') >= 0: if data.find(b'\x04') >= 0:
# NOTE: Nur suchen oder Ende prüfen?
return byte_buff[:-1] return byte_buff[:-1]
self.__sockerr.set() self.__sockerr.set()
@@ -320,7 +323,7 @@ class NetFH(Thread):
self.__trigger = True self.__trigger = True
else: else:
raise ValueError("value must between 0 and 65535 milliseconds") raise ValueError("value must between 1 and 65535 milliseconds")
def tell(self): def tell(self):
"""Gibt aktuelle Position zurueck. """Gibt aktuelle Position zurueck.
@@ -384,6 +387,13 @@ class RevPiNetIO(_RevPiModIO):
""" """
# Objekte die auch schon bei Fehler benötigt werden
self._exit = Event()
self._imgwriter = None
self._lst_refresh = []
self._myfh = None
self._waitexit = Event()
# Adresse verarbeiten # Adresse verarbeiten
if type(address) == str: if type(address) == str:
# TODO: IP-Adresse prüfen # TODO: IP-Adresse prüfen
@@ -396,7 +406,7 @@ class RevPiNetIO(_RevPiModIO):
# Werte prüfen # Werte prüfen
# TODO: IP-Adresse prüfen # TODO: IP-Adresse prüfen
if 0 < address[1] <= 65535: if not 0 < address[1] <= 65535:
raise ValueError("port number out of range 1 - 65535") raise ValueError("port number out of range 1 - 65535")
self._address = address self._address = address
@@ -448,7 +458,7 @@ class RevPiNetIO(_RevPiModIO):
) )
if device is None: if device is None:
mylist = self.device self._myfh.clear_dirtybytes()
else: else:
dev = device if issubclass(type(device), Device) \ dev = device if issubclass(type(device), Device) \
else self.device.__getitem__(device) else self.device.__getitem__(device)

View File

@@ -16,7 +16,7 @@ setup(
license="LGPLv3", license="LGPLv3",
name="revpimodio2", name="revpimodio2",
version="2.1.1b2", version="2.1.1b3",
packages=["revpimodio2"], packages=["revpimodio2"],
python_requires="~=3.2", python_requires="~=3.2",