Update README with detailed installation, usage, and testing instructions for virtual COM port testing application
This commit is contained in:
70
main.py
Normal file
70
main.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import serial
|
||||
import serial.tools.list_ports
|
||||
import threading
|
||||
import time
|
||||
|
||||
def list_com_ports():
|
||||
"""Вывод списка доступных COM-портов"""
|
||||
ports = serial.tools.list_ports.comports()
|
||||
if not ports:
|
||||
print("COM-порты не обнаружены")
|
||||
return []
|
||||
|
||||
print("\nДоступные COM-порты:")
|
||||
for index, port in enumerate(ports):
|
||||
print(f"{index + 1}. {port.device}")
|
||||
return ports
|
||||
|
||||
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()
|
||||
Reference in New Issue
Block a user