diff --git a/wifi_bridge/test_scripts/serial-tcp_nowait.py b/wifi_bridge/test_scripts/serial-tcp_nowait.py new file mode 100644 index 0000000000000000000000000000000000000000..d2279c3998790b5fcb8121e585c9d514633dd3ef --- /dev/null +++ b/wifi_bridge/test_scripts/serial-tcp_nowait.py @@ -0,0 +1,74 @@ +import socket +import serial +import time + +TCP_IP = "192.168.1.1" +TCP_PORT = 8080 + +msg_size = 500 +print_interval = 100 +message = bytes(i % 256 for i in range(msg_size)) +dropped = True +loop_time = 0.005 + +ser = serial.Serial('COM6', 921600, timeout=0.01) +ser.reset_input_buffer() + +sent_cnt = 0 +recvd_cnt = 0 +outer_start_time = time.perf_counter() +received = [] +while True: + if dropped: + attempts = 0 + while attempts < 5: + print("Trying to connect") + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(2) + try: + sock.connect((TCP_IP, TCP_PORT)) + dropped = False + break + except: + attempts += 1 + if dropped: + print("Failed to connect") + break + print("connected") + + start_time = time.perf_counter() + try: + ser.write(message) + sent_cnt += 1 + except Exception as e: + print("Failed to send all data") + continue + + # while len(received) < msg_size: + try: + amt_in_air = (sent_cnt - recvd_cnt) * msg_size - len(received) + just_received = sock.recv(1024) + received.extend(just_received) + if len(just_received) == 0: + print("Your socket broke") + break + except Exception as e: + print("Exception when receiving: ", e) + break + if len(received) >= msg_size: + recvd_packet = received[:msg_size] + received = received[msg_size:] + recvd_cnt += 1 + if bytes(recvd_packet) != message: + print("Received data does not match") + if sent_cnt % print_interval == 0: + print("Sent {}, received {}".format(sent_cnt, recvd_cnt)) + print("Average send time was {}".format((time.perf_counter() - outer_start_time)/print_interval)) + outer_start_time = time.perf_counter() + + while time.perf_counter() - start_time <= loop_time: + pass + + #debug_msg = ser.read(4096) + #if len(debug_msg) != 0: + # print(debug_msg.decode())