# IM23A 浜岃繘鍒跺崗璁鏄? 鏈枃妗h褰?IM23A 妯$粍杈撳嚭鐨?`fmin`锛堝鑸級涓?`fmim`锛圛MU锛夊抚鏍煎紡锛屼究浜庡浐浠朵笌 Python 宸ュ叿淇濇寔涓€鑷淬€? ## 甯у浐瀹氱粨鏋? - 鎵€鏈夊抚鍧囦互 ASCII 澶?`f m i n` 鎴?`f m i m` 寮€濮嬶紝浠?`e d` 缁撳熬銆?- 鏍¢獙鍜屼綅浜庡€掓暟绗?4~3 瀛楄妭锛屼负 **鍓?N 瀛楄妭锛堝惈甯уご銆佽礋杞斤級鎸夊瓧鑺傛眰鍜?* 鐨?`uint16_t` 灏忕鍊硷紱瀵艰埅甯?`N=96`锛孖MU 甯?`N=48`銆? ## 瀵艰埅甯э紙`fmin`锛屾€婚暱 100 瀛楄妭锛? | 瀛楁 | 绫诲瀷 | 璇存槑 | | --- | --- | --- | | 1 | double | UTC 鏃堕棿 `hhmmss.ss` | | 2 | double | 绾害 (掳) | | 3 | double | 缁忓害 (掳) | | 4 | double | 楂樼▼ (m) | | 5 | float | 鍖楀悜閫熷害 (m/s) | | 6 | float | 涓滃悜閫熷害 (m/s) | | 7 | float | 鍚戜笅閫熷害 (m/s锛屽浐浠惰浆鎹负鍚戜笂閫熷害) | | 8 | float | 妯粴瑙?(掳) | | 9 | float | 淇话瑙?(掳) | | 10 | float | 鑸悜瑙?(掳) | | 11 | float | 瀹氫綅绮惧害 (m) | | 12~14 | float | 鍔犻€熷害璁?XYZ 闆跺亸 | | 15~17 | float | 闄€铻轰华 XYZ 闆跺亸 | | 18 | float | 浼犳劅鍣ㄦ俯搴?(掳C) | | 19 | uint32_t | 鐘舵€佸瓧锛堜綆 8 浣嶄綔涓哄畾浣嶈川閲忥級 | | 20 | uint16_t | 鏍¢獙鍜?| | 21 | char | `e` | | 22 | char | `d` | ## IMU 甯э紙`fmim`锛屾€婚暱 52 瀛楄妭锛? | 瀛楁 | 绫诲瀷 | 璇存槑 | | --- | --- | --- | | 1 | double | UTC 鏃堕棿 `hhmmss.ss`锛堣浆鎹负姣锛?| | 2~4 | float | 鍔犻€熷害璁?XYZ (g) | | 5~7 | float | 闄€铻轰华 XYZ (掳/s) | | 8~10 | float | 棰勭暀 | | 11 | uint16_t | 鏍¢獙鍜?| | 12 | char | `e` | | 13 | char | `d` | ## 鏃ュ織鏍¢獙鏂规硶 鍙娇鐢?Python 灏嗗崄鍏繘鍒舵棩蹇楄В鏋愪负瀛楄妭娴侊紝骞舵寜涓嬭堪娴佺▼妫€娴嬪抚锛? ```python import struct, pathlib data = bytes(int(x, 16) for x in pathlib.Path("SaveWindows2025_11_27_17-46-32.TXT").read_text().split()) i, nav, imu = 0, 0, 0 while i <= len(data) - 4: head = data[i:i+4] length = 100 if head == b"fmin" else 52 if head == b"fmim" else None if length and data[i+length-2:i+length] == b"ed": payload = data[i:i+length] checksum = sum(payload[:-4]) & 0xFFFF if checksum == struct.unpack("