import struct filepath = "/home/prathiyuman/Prathiyuman/ContecMonitor/fiveparaminte-main/scratch/raw_contec_stream.bin" try: with open(filepath, "rb") as f: stream = f.read() except Exception as e: print(f"Error: {e}") import sys sys.exit(1) packets_288 = [] packets_989 = [] i = 0 while i < len(stream) - 4: b0, b1, b2, b3 = stream[i], stream[i+1], stream[i+2], stream[i+3] if b3 == 0x46: pkt_len = b0 | (b1 << 8) if pkt_len == 288 and i + pkt_len <= len(stream): packets_288.append(stream[i:i + pkt_len]) elif pkt_len == 989 and i + pkt_len <= len(stream): packets_989.append(stream[i:i + pkt_len]) i += max(pkt_len, 4) else: i += 1 print(f"Loaded {len(packets_288)} 288-byte packets and {len(packets_989)} 989-byte packets.") # Search all offsets in 288-byte packets for any u16 LE value between 70 and 95 print("\nScanning 288-byte packets for u16 LE values in range [75, 95] across all packets:") found_offsets_288 = {} for idx, pkt in enumerate(packets_288): for off in range(4, len(pkt) - 1, 2): val = struct.unpack_from(' 5: # print first few matches and total count vals = [m[1] for m in matches] print(f" Offset {off}: found {len(matches)} times. Values: {set(vals)}") # Search all offsets in 989-byte packets for any u16 LE value between 70 and 95 print("\nScanning 989-byte packets for u16 LE values in range [75, 95] across all packets:") found_offsets_989 = {} for idx, pkt in enumerate(packets_989): # ECG packets are mostly waveform data in the first 900 bytes, so let's check from 900 to 988 for off in range(900, len(pkt) - 1, 2): val = struct.unpack_from(' 5: vals = [m[1] for m in matches] print(f" Offset {off}: found {len(matches)} times. Values: {set(vals)}")