Последовательная ошибка: не удалось открыть порт «COM5»: PermissionError... при попытке отправить байт через виртуальныйPython

Программы на Python
Anonymous
Последовательная ошибка: не удалось открыть порт «COM5»: PermissionError... при попытке отправить байт через виртуальный

Сообщение Anonymous »

Я пытаюсь запустить 2 очень простых тестовых сценария: сценарий чтения и сценарий тестирования записи через последовательную связь с использованием обратной связи. У меня есть сценарий чтения в цикле while для чтения полученных байтов. У меня есть сценарий записи, отправляющий один байт каждый раз, когда я его запускаю. Проблема, с которой я столкнулся, заключается в том, что я пытаюсь настроить связь через виртуальный последовательный порт, установленный на COM5, с использованием обратной связи. Сценарий чтения подключается и открывает порт, а сценарий записи пытается выполнить запись через этот порт в сценарий чтения. Но когда я запускаю сценарий записи, он выдает следующую ошибку: Serial.serialutil.SerialException: не удалось открыть порт «COM5»: PermissionError(13, «Доступ запрещен.», Нет, 5)
Я пытался отключить и снова включить порт через диспетчер устройств, я попытался перезапустить драйвер виртуального последовательного порта (VSPD) и попытался перезагрузить компьютер. Я могу контролировать открытие и закрытие последовательного порта через VSPD, и он открывается и закрывается правильно. Он также получает байты, когда я запускаю сценарий записи, когда сценарий чтения не активен. Ниже я разместил свой код и настройку VSPD, верхний комментарий описывает код, является ли это скриптом чтения или записи:

Код: Выделить всё

# Serial write Script

import serial

# Configure the serial port
ser = serial.Serial(
port='COM5',
baudrate=9600,
bytesize=serial.EIGHTBITS,  # 8 bits per byte
parity=serial.PARITY_NONE,  # No parity
stopbits=serial.STOPBITS_ONE,  # 1 stop bit
timeout=0.5  # Timeout in seconds
)

# Send a byte
byte_to_send = b'\x41'  # Example byte to send (here, ASCII 'A')

ser.write(byte_to_send)
print(f"Sent byte: {byte_to_send}")

# Close the serial port
ser.close()

Код: Выделить всё

#Serial read script

import serial
import time

# Configure the serial port
ser = serial.Serial(
port='COM5',
baudrate=9600,
bytesize=serial.EIGHTBITS,  # 8 bits per byte
parity=serial.PARITY_NONE,  # No parity
stopbits=serial.STOPBITS_ONE,  # 1 stop bit
timeout=0.5  # Timeout in seconds
)

try:
while True:

# Read a byte
byte_received = ser.read(1)  # Read one byte
print(f"Received byte: {byte_received}")

# Optional: Add a small delay to reduce CPU usage
time.sleep(0.1)  # Adjust as needed

except KeyboardInterrupt:
print("Interrupted")
finally:
# Ensure the serial port is properly closed
if ser.is_open:
ser.close()
print("Serial port closed")
Образ драйвера виртуального последовательного порта

Подробнее здесь: https://stackoverflow.com/questions/787 ... ng-to-send

Вернуться в «Python»