| | from smbus2 import SMBus |
| | import time |
| | import struct |
| |
|
| |
|
| | I2C_BUS_NUMBER = 7 |
| |
|
| | |
| | ARDUINO_I2C_ADDRESS = 0x08 |
| |
|
| | |
| | TOTAL_BYTES = 96 |
| |
|
| | |
| | CHUNK_SIZE = 32 |
| |
|
| | OUTPUT_FILE = "right_data.txt" |
| |
|
| |
|
| | def read_i2c_data(bus, addr, total_bytes, chunk_size): |
| | data = [] |
| | chunks = (total_bytes + chunk_size - 1) // chunk_size |
| | for chunk_index in range(chunks): |
| | |
| | to_read = min(chunk_size, total_bytes - (chunk_index * chunk_size)) |
| | chunk_data = bus.read_i2c_block_data(addr, chunk_index, to_read) |
| | data.extend(chunk_data) |
| | return data |
| |
|
| |
|
| |
|
| | with SMBus(I2C_BUS_NUMBER) as bus, open(OUTPUT_FILE,'w') as f: |
| | while True: |
| | try: |
| | |
| | data = read_i2c_data(bus, ARDUINO_I2C_ADDRESS, TOTAL_BYTES, CHUNK_SIZE) |
| |
|
| | |
| | floats = [] |
| | for i in range(0, TOTAL_BYTES, 4): |
| | |
| | float_bytes = bytes(data[i:i+4]) |
| | value = struct.unpack('<f', float_bytes)[0] |
| | floats.append(value) |
| |
|
| | |
| | masterData = floats[:12] |
| | slaveData = floats[12:] |
| |
|
| | |
| | f.write(f"{time.time()}\nM: {masterData}\nS:{slaveData}") |
| | |
| |
|
| | except Exception as e: |
| | f.write(f"Error: {e}") |
| | |
| |
|
| |
|