#!/usr/bin/env python3 import struct import serial # ----------------------------------------------------------------------------- # Configuration # ----------------------------------------------------------------------------- PORT = "/dev/ttyACM1" BAUDRATE = 115200 COMMAND_PREFIX = 0x69 COMMAND_ID = 0x00 COMMAND_RESET_OFFSET = 10 # Length length = 0 # ----------------------------------------------------------------------------- # Build packet with placeholder CRC # ----------------------------------------------------------------------------- packet = bytearray([ COMMAND_PREFIX, length, COMMAND_ID, COMMAND_RESET_OFFSET, 0x00, # Placeholder CRC ]) # ----------------------------------------------------------------------------- # Calculate CRC (matches command_calculate_crc()) # # Sum every byte except the CRC byte itself. # ----------------------------------------------------------------------------- crc_sum = 0 for i, byte in enumerate(packet): if i == 4: # Skip CRC field continue crc_sum += byte packet[4] = 0x100 - (crc_sum & 0xFF) # Equivalent to: # packet[4] = (0x100 - (crc_sum & 0xFF)) & 0xFF # ----------------------------------------------------------------------------- # Send # ----------------------------------------------------------------------------- print(f"Packet ({len(packet)} bytes):") print(packet.hex(" ")) with serial.Serial(PORT, BAUDRATE, timeout=1) as ser: ser.write(packet) ser.flush() print("Done.")