add stream raw frame access

This commit is contained in:
lenn
2026-05-26 22:22:28 +08:00
parent 705375085f
commit 47722bb383
13 changed files with 358 additions and 85 deletions

View File

@@ -33,14 +33,17 @@ def demo_streaming(dev: EskinDevice, duration_sec: float = 5.0):
# 线程安全的队列(参考 ROS demo 的 read_loop + publish_callback 分离模式)
queue: deque = deque(maxlen=100)
raw_queue: deque = deque(maxlen=100)
running = True
def read_loop():
"""独立读取线程:持续从设备读取 sample"""
"""独立读取线程:持续从设备读取 sample 和原始帧"""
while running:
try:
sample = dev.read_sample(timeout_ms=50)
queue.append(sample)
raw_frame = dev.read_stream_frame(timeout_ms=1)
raw_queue.append(raw_frame)
except RuntimeError:
# 超时等非致命错误,继续读取
pass
@@ -55,12 +58,14 @@ def demo_streaming(dev: EskinDevice, duration_sec: float = 5.0):
while time.monotonic() - start < duration_sec:
if queue:
sample: CFingerSample = queue.popleft()
raw_frame = raw_queue.popleft() if raw_queue else b""
f = sample.combined_force.force
mod = sample.combined_force.module
print(
f"[{sample.sequence:5d}] "
f"module={mod} "
f"fx={f.fx} fy={f.fy} fz={f.fz}"
f"fx={f.fx} fy={f.fy} fz={f.fz} "
f"raw_len={len(raw_frame)}"
)
count += 1
else:
@@ -89,4 +94,4 @@ def main():
if __name__ == "__main__":
main()
main()