Oi! Estou fazendo um programa para conectar uma bomba de seringa da marca New Era Pump Systems ao computador, utilizando Python para isso. As primeiras conexões são feitas com sucesso, porém nas segundas ocorre este erro: '''Erro ao conectar na porta COM7: Cannot configure port, something went wrong. Original message: PermissionError(13, 'Um dispositivo conectado ao sistema não está funcionando.', None, 31)''' Para solucionar, tenho que mudar o baud rate no código e na bomba e rodar de novo, mas sempre funciona apenas a primeira vez. Alguém sabe como posso solucionar isso? Vi falando que a porta pode não ter sido fechada, mas tem uma parte do código para isso. O código é este aqui: import serial from time import sleep #Definir a porta em que a bomba está conectada e outros parâmetros porta_serial = 'COM7' #Substituir pelo número da porta baudrate = 19200 #Velocidade de transmissão de dados da bomba timeout = 2 #O timeout é o tempo que o programa aguardará por uma resposta da bomba #neste bloco é colocado o código que pode dar erro try: # Abre a conexão serial bomba = serial.Serial(port=porta_serial, baudrate=baudrate, timeout=timeout) #passando o tempo de timeout, retorna todos os bytes recebidos até então print(f"Conectado com sucesso na porta {porta_serial}") # Envia um comando simples para testar bomba.write(b'VER\r') resposta = bomba.read(100) print(f"Resposta: {resposta.decode(errors='ignore')}") # Aguardar um tempo para a bomba estar pronta sleep(2) #neste bloco é colocada a exceção e a ação a partir dela #SerialException é usado para identificar erros na abertura da porta serial except serial.SerialException as e: #e contém os detalhes do erro print(f"Erro ao conectar na porta {porta_serial}: {e}") #este bloco rodará se não houver erros no try else: def fase_1(): #Define as características que serão aplicadas à bomba na fase 1 # Define uma fase na função Rate Data bomba.write(b'FUN RAT\r') # Define a fase atual como de controle de taxa sleep(0.5) # Define a taxa de bombeamento (por exemplo, 5.0 mL/min) bomba.write(b'RAT 20.0\r') sleep(0.5) # Define o volume total a ser dispensado (por exemplo, 10.0 mL) bomba.write(b'VOL 1.0\r') sleep(0.5) # Define a direção do bombeamento: INF (infusão) ou WDR (retirada) bomba.write(b'DIR INF\r') #'DIR INF' ou 'DIR WDR' sleep(0.5) # Inicia a bomba bomba.write(b'RUN\r') sleep(5) bomba.write(b'STP\r') def fase_2(): #Define as características que serão aplicadas à bomba na fase 1 # Define uma fase na função Rate Data bomba.write(b'FUN RAT\r') # Define a fase atual como de controle de taxa sleep(0.5) # Define a taxa de bombeamento (por exemplo, 5.0 mL/min) bomba.write(b'RAT 90.0\r') sleep(0.5) # Define o volume total a ser dispensado (por exemplo, 10.0 mL) bomba.write(b'VOL 5.0\r') sleep(0.5) # Define a direção do bombeamento: INF (infusão) ou WDR (retirada) bomba.write(b'DIR INF\r') #'DIR INF' ou 'DIR WDR' sleep(0.5) # Inicia a bomba bomba.write(b'RUN\r') sleep(5) bomba.write(b'STP\r') fase_1() fase_2() #este bloco sempre roda, independente de erros, e é útil para liberar recursos #ou finalizar algo importante finally: # Garante que a porta será fechada if 'bomba' in locals() and bomba.is_open: bomba.close() print("Porta serial fechada com sucesso.")''' Continue reading...