import serial ser = serial.Serial(port='/dev/ttyACM1', baudrate=115200) ser.flush() data = bytes() ready = False f = open('data_dump.dat','wb') for i in range(5): ser.write(b'R') data = ser.read(1024) index = 0 while (index < 1024): packet_length = (data[index + 1]<<8) + data[index] packet_type = (data[index + 3]<<8) + data[index + 2] print(packet_type, packet_length) if packet_type not in range(1,10): break #print(packet_type, packet_length, data[index + 4: index + 4 + packet_length]) index += packet_length + 4 ser.flush() # if packet_type in [1,2,3,4,5,6,7,8,9] and packet_length > 6: # dat = ser.read(packet_length) # print(packet_type, packet_length, dat)