Files
sound-analyze/services/collector/monitor.py

42 lines
1.1 KiB
Python

#!/usr/bin/env python3
import argparse
import time
import serial
from protocol_parser import ProtocolParser
def main():
ap = argparse.ArgumentParser(description="FR-1.4 binary stream monitor")
ap.add_argument("--port", default="/dev/ttyACM0")
ap.add_argument("--baud", type=int, default=115200)
ap.add_argument("--timeout", type=float, default=0.2)
args = ap.parse_args()
parser = ProtocolParser()
with serial.Serial(args.port, args.baud, timeout=args.timeout) as ser:
while True:
data = ser.read(ser.in_waiting or 1)
if not data:
continue
packets = parser.feed(data)
st = parser.get_stats()
for pkt in packets:
# Одна строка на пакет + счётчик CRC ошибок
print(
f"{pkt.timestamp_ms:010d} "
f"rms_db={pkt.rms_db:+6.1f} "
f"freq_hz={pkt.freq_hz:4d} "
f"crc_err={st.crc_errors}"
)
time.sleep(0.001)
if __name__ == "__main__":
main()