Update README with detailed installation, usage, and testing instructions for virtual COM port testing application

This commit is contained in:
2025-02-19 21:38:37 +03:00
parent 9acc231218
commit 775ab55af9
2 changed files with 127 additions and 2 deletions

View File

@@ -1,4 +1,59 @@
# Testing_APP_for_ComConfigCopy
Программа для тестирование работоспособности другой программы - ComConfigCopy.
Эмуляция COM-порта
Программа для тестирование работоспособности другой программы - ComConfigCopy.
Эмуляция COM-порта
## Требования
- Python 3.6 или выше
- Библиотека pyserial
- Для Windows: com0com
- Для Linux: socat
## Установка
1. Установите Python-зависимости:
bash
pip install pyserial
2. Установка драйвера виртуального COM-порта:
### Windows:
- Скачайте и установите com0com: https://sourceforge.net/projects/com0com/
- Запустите установщик от имени администратора
### Linux:
```bash
sudo apt-get install socat
```
## Использование
1. Сначала создайте виртуальные COM-порты:
```bash
# Windows: запустите от имени администратора
python virtual_com.py
# Linux: запустите с sudo
sudo python virtual_com.py
```
2. После создания виртуальных портов запустите основную программу:
```bash
python main.py
```
3. Выберите один из созданных виртуальных COM-портов
4. В другом терминале запустите еще одну копию программы и выберите второй виртуальный порт
5. Теперь вы можете обмениваться сообщениями между двумя экземплярами программы
## Примечания
- В Windows виртуальные порты создаются как CNCA0 и CNCB0
- В Linux виртуальные порты создаются как /dev/ttyV0 и /dev/ttyV1
- Для работы требуются права администратора/root
Теперь у вас есть полный набор инструментов для тестирования:
1. Программа для создания виртуальных COM-портов
2. Программа для обмена данными через эти порты
Вы можете запустить два экземпляра основной программы, каждый на своем виртуальном порту, и тестировать обмен данными между ними.

70
main.py Normal file
View 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()