58 lines
1.9 KiB
Python

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()