Skip to content

Commit 328f893

Browse files
committed
Discard entire value set on read error
1 parent b875171 commit 328f893

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

qtoggleserver/modbus/client.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ async def poll(self) -> None:
136136

137137
await self.ensure_client()
138138

139+
values_by_type_and_address: dict[str, dict[int, Any]] = {}
139140
for modbus_type, lengths_by_address in self._lengths_by_type_and_address.items():
140141
for address, length in lengths_by_address.items():
141142
if modbus_type == constants.MODBUS_TYPE_COIL:
@@ -185,11 +186,12 @@ async def poll(self) -> None:
185186
continue
186187

187188
if len(values) < length:
188-
self.error('unexpected number of values read: %s < %s', len(values), length)
189-
continue
189+
raise Exception('Unexpected number of values read: %s < %s', len(values), length)
190190

191191
for i in range(length):
192-
self._values_by_type_and_address.setdefault(modbus_type, {})[address + i] = values[i]
192+
values_by_type_and_address.setdefault(modbus_type, {})[address + i] = values[i]
193+
194+
self._values_by_type_and_address = values_by_type_and_address
193195

194196
def get_last_coil_value(self, address: int) -> Optional[bool]:
195197
values_by_address = self._values_by_type_and_address.get(constants.MODBUS_TYPE_COIL, {})

0 commit comments

Comments
 (0)