diff --git a/quad/scripts/uart_comm_listen.py b/quad/scripts/uart_comm_listen.py new file mode 100755 index 0000000000000000000000000000000000000000..c41209f442caab84c26c7aefb55410022a158588 --- /dev/null +++ b/quad/scripts/uart_comm_listen.py @@ -0,0 +1,38 @@ +#!/usr/local/bin/python3.6 + +import sys +import time + +import serial + +def read_packet(ser): + header = ser.read(7) + length = int.from_bytes(header[5:7], byteorder='little') + data = ser.read(length) + checksum = ser.read() + return data + +def query_received(ser): + # Send request + query_msg = create_msg(0, 3, 0, b'') + ser.write(query_msg) + ser.flush() + + resp = read_packet(ser) + received_str = resp[:-1].decode() + + return tuple(map(int, received_str.split(','))) + +if __name__ == '__main__': + with serial.Serial('/dev/ttyUSB0', 921600, timeout=5) as ser: + i = 0 + while True: + ser.reset_input_buffer() + time.sleep(0.05) + while ser.in_waiting != 0: + resp = read_packet(ser) + elapsed = int.from_bytes(resp, byteorder='little') + print("{} {}".format(i, elapsed)) + i += 1 + ser.flush() + diff --git a/quad/scripts/uart_comm_send.py b/quad/scripts/uart_comm_send.py new file mode 100755 index 0000000000000000000000000000000000000000..cc21510f11e9053bb893d7caade3dbe92d18665a --- /dev/null +++ b/quad/scripts/uart_comm_send.py @@ -0,0 +1,33 @@ +#!/usr/local/bin/python3.6 + +import sys +import time + +import serial + +def create_msg(main_type, subtype, msg_id, data): + msg = bytes() + msg += b'\xBE' + msg += main_type.to_bytes(1, 'little') + msg += subtype.to_bytes(1, 'little') + msg += msg_id.to_bytes(2, 'little') + msg += len(data).to_bytes(2, 'little') + msg += data + + checksum = 0 + for b in msg: + checksum ^= b + msg += checksum.to_bytes(1, 'little') + return msg + +def create_test_packet(size=8): + data = bytes((i % 256 for i in range(size))) + return create_msg(0, 2, 0, data) + +if __name__ == '__main__': + with serial.Serial('/dev/ttyUSB0', 921600, timeout=5) as ser: + for i in range(0, 100): + time.sleep(0.1) + ser.reset_input_buffer() + ser.write(create_test_packet(8)) + ser.flush()