modify: IN2 DI 输入监听

This commit is contained in:
2026-09-13 20:34:10 +08:00
parent d7636c4c3b
commit 293254c61a
9 changed files with 272 additions and 704 deletions
+4 -8
View File
@@ -161,9 +161,8 @@ class DIChannel:
break
timeout = int(min(remain, 0.5) * 1000)
poller.poll(timeout)
got = self.backend.read()
if got:
raw, ts = got
# read() 返回本批全部事件,按序处理,快速抖动不丢中间跳变
for raw, ts in self.backend.read():
if self.on_event:
self.on_event(ts, raw)
self._emit(self._to_level(raw), ts)
@@ -173,13 +172,10 @@ class DIChannel:
while not self._stop:
if deadline and time.time() >= deadline:
break
got = self.backend.read()
if got:
raw, ts = got
lvl = self._to_level(raw)
for raw, ts in self.backend.read():
if self.on_event:
self.on_event(ts, raw)
self._emit(lvl, ts)
self._emit(self._to_level(raw), ts)
time.sleep(interval)
def request_stop(self):