Hi there,
Here is my python code to read the sensor data but not getting any data.
Please help me out in getting the corrected code.
Here is my python code to read the sensor data but not getting any data.
Please help me out in getting the corrected code.
Code:
import serialimport serial.tools.list_portsimport structimport time# List of common baud rates for WitMotion sensorsBAUD_RATES = [9600, 19200, 38400, 57600, 115200]def checksum(data): return sum(data[:10]) & 0xFFdef read_packet(ser): try: if ser.read(1) == b'\x55': data_id = ser.read(1) data = ser.read(8) checksum_byte = ser.read(1) packet = b'\x55' + data_id + data if len(data) == 8 and checksum(packet) == checksum_byte[0]: return data_id, data except: pass return None, Nonedef parse_data(data_id, data): if data_id == b'\x51': ax, ay, az, temp = struct.unpack('<hhhh', data) return 'ACC', [ax / 32768 * 16, ay / 32768 * 16, az / 32768 * 16] elif data_id == b'\x52': gx, gy, gz, temp = struct.unpack('<hhhh', data) return 'GYRO', [gx / 32768 * 2000, gy / 32768 * 2000, gz / 32768 * 2000] elif data_id == b'\x53': roll, pitch, yaw, temp = struct.unpack('<hhhh', data) return 'ANGLE', [roll / 32768 * 180, pitch / 32768 * 180, yaw / 32768 * 180] elif data_id == b'\x54': mx, my, mz, temp = struct.unpack('<hhhh', data) return 'MAG', [mx, my, mz] return None, Nonedef try_port(port, baud): try: print(f"🔍 Trying {port} @ {baud} baud for 7 seconds...") ser = serial.Serial(port, baud, timeout=0.3) time.sleep(1.0) start_time = time.time() sensor_data = {} while time.time() - start_time < 7: data_id, data = read_packet(ser) if data_id: label, parsed = parse_data(data_id, data) if label: sensor_data[label] = parsed if all(k in sensor_data for k in ['ACC', 'GYRO', 'ANGLE', 'MAG']): print(f"\n✅ Sensor found on {port} @ {baud} baud!") print("Acceleration (g):", sensor_data['ACC']) print("Gyroscope (°/s):", sensor_data['GYRO']) print("Angle (°):", sensor_data['ANGLE']) print("Magnetism:", sensor_data['MAG']) print("-" * 50) ser.close() return True ser.close() print("❌ No data detected on this setting.\n") except Exception as e: print(f"⚠️ Error on {port}@{baud}: {e}\n") return Falsedef main(): ports = [p.device for p in serial.tools.list_ports.comports()] print("🔌 Available ports:", ports) for port in ports: for baud in BAUD_RATES: if try_port(port, baud): return print("❌ No HWT905 sensor detected on any port/baud.")if __name__ == "__main__": main()Statistics: Posted by maninder — Sun Apr 13, 2025 12:21 am