import serial import serial.tools.list_ports import threading import time def read_com_port(ser): """Функция для чтения данных из COM-порта""" while True: try: if ser.in_waiting > 0: data = ser.readline().decode('utf-8').strip() print(f"\nПолучено: {data}") print("Введите ответ (или 'exit' для выхода): ", end='') except Exception as e: print(f"Ошибка при чтении: {e}") break time.sleep(0.1) def main(): # Установка COM-порта COM_PORT = 'COM19' # Укажите нужный COM-порт здесь try: ser = serial.Serial( port=COM_PORT, baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1 ) print(f"\nПодключено к {COM_PORT}") except Exception as e: print(f"Ошибка при открытии порта: {e}") return # Запуск потока для чтения данных read_thread = threading.Thread(target=read_com_port, args=(ser,), daemon=True) read_thread.start() # Основной цикл для отправки данных print("\nВведите 'exit' для выхода") while True: try: user_input = input("Введите ответ: ") if user_input.lower() == 'exit': break ser.write(f"{user_input}\n".encode('utf-8')) except Exception as e: print(f"Ошибка при отправке: {e}") break # Закрытие соединения ser.close() print("\nСоединение закрыто") if __name__ == "__main__": main()