PySerial – как убедиться, что открытый порт USB закрыт перед повторным запуском приложенияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 PySerial – как убедиться, что открытый порт USB закрыт перед повторным запуском приложения

Сообщение Anonymous »

Я создаю приложение, которое взаимодействует с USB-устройством, при запуске действия функция передает команду устройству и возвращает прочитанное значение.
Я пытаюсь найти способ убедиться, что соединение установлено. закрыто, поэтому я могу открыть снова.
Извините за мой плохой английский, английский - мой родной язык.
Вот код:

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

import serial

class LcrDevice:
def __init__(self, port="4", baudrate=9600):
self.ser = self.create_connection(f'COM{port}', baudrate)

def create_connection(self, port, baudrate):
try:
self.ser = serial.Serial(port, baudrate, timeout=1)

except serial.SerialException as e:
print(f"Erro ao conectar o LCR: {e}")

def query_ascii_values(self, command):
# Envia o comando ao dispositivo
self.ser.write((command + '\n').encode('utf-8'))

# Lê a resposta
response = self.ser.readline().decode('utf-8').strip()

# Converte a resposta em uma lista de valores numéricos
values = [float(value) for value in response.split(',') if value]  # Assume separação por vírgula
return values

@property
def name(self):
return self.ser.name
Вот ошибка в консоли, эта ошибка выдается после первого запуска приложения, при первом запуске программа работает нормально

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

Exception in thread Thread-1 (start_ws):
Traceback (most recent call last):
File "threading.py", line 1038, in _bootstrap_inner
File "threading.py", line 975, in run
File "main.py", line 32, in start_ws
File "middlewares\LcrDevice.py", line 5, in __init__
File "serial\serialwin32.py", line 33, in __init__
File "serial\serialutil.py", line 244, in __init__
File "serial\serialwin32.py", line 80, in open
File "serial\serialwin32.py", line 222, in _reconfigure_port
serial.serialutil.SerialException: Cannot configure port, something went wrong. Original message: PermissionError(13, 'A device attached to the system is not functioning.', None, 31)`
Я уже пробовал Try/Catch, Try/Finally и код, сгенерированный искусственным интеллектом. вот так:

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

if hasattr(self, 'ser') and self.ser.is_open:
try:
self.ser.close()
print("Conexão anterior fechada.")
except Exception as e:
print(f"Erro ao fechar a conexão anterior: {e}")`
а также пробовал atexit

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-starting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Связь C++/Python RS485 через USB, можем ли мы заблокировать уже открытый порт?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Порт COM подключен к pySerial, но не возвращает данные.
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Порт COM подключен к pySerial, но не возвращает данные.
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • COM-порт подключен к pySerial, но не возвращает данные.
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • COM-порт подключен к pySerial, но не возвращает данные.
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

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