58 lines
1.9 KiB
Python
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() |