portas serias no python

Listar portas seriais no Python

Se você trabalha ou irá trabalhar com portas serias no Python, você já deve ter precisado de listar todas as portas em uso.

Agora, sabia que trabalhar com essas portas serias na linguagem Python é muito mais fácil?

Você quer se tornar um programador melhor? Veja 8 dicas especiais que fizemos para você.

Pensando nessa necessidade, construímos uma classe para listar todas as portas em uso na máquina.

Para utilizar a classe que criamos, é necessário ter instalado a biblioteca pyserial. Você pode instalá-la utilizando o seguinte código no pip:

pip install pyserial

Veja como ficou o código da classe:

import serial
import sys

class Portas :
	"""
	Classe com métodos para portas
	"""
	MAX_PORTAS = 32 # Número máximo de portas para verificação.

	def getPortasEmUso () :
		"""
		Método para buscar as portas em uso
		"""
		# Faz um loop de 1 ao número maximo de portas para verificação
		# e o concatena à string 'COM':
		for p in ['COM%s' % (i + 1) for i in range(Portas.MAX_PORTAS)] :
			try :
			  	# Tenta abrir a conexão:
				s = serial.Serial(p)
				# Tenta fechar a conexão
				s.close()
				# Retorna um por um
				yield s.name
			except (OSError, serial.SerialException) :
			  	# Caso der erro, a porta não está sendo utilizada.
			  	# Ignoramos neste caso.
				pass

Para pegar a lista das portas em uso é só utilizar o método getPortasEmUso().

Victor Vaz Autor

Fundador do Cafeína Codificada, formado em Sistemas Web pela UNIBH e um apaixonado por música.

Comentários

    Victor

    (28 outubro, 2022 - 11:56)

    import serial

    class Portas :
    “””
    Classe com métodos para portas
    “””
    MAX_PORTAS = 32 # Número máximo de portas para verificação.

    def getPortasEmUso(self):
    “””
    Método para buscar as portas em uso
    “””
    # Faz um loop de 1 ao número maximo de portas para verificação
    # e o concatena à string ‘COM’:
    for p in [f’COM{i+1}’ for i in range(self.MAX_PORTAS)] :
    try :
    # Tenta abrir a conexão:
    s = serial.Serial(p)
    # Tenta fechar a conexão
    s.close()
    # Retorna um por um
    yield s.name
    except (OSError, serial.SerialException) :
    # Caso der erro, a porta não está sendo utilizada.
    # Ignoramos neste caso.
    pass

    portas = Portas()

    for serial_disponivel in portas.getPortasEmUso():
    print(serial_disponivel)

      Victor Vaz

      (28 outubro, 2022 - 14:50)

      Olá amigo! Obrigado pela contribuição 🙂

Deixe um comentário

O seu endereço de e-mail não será publicado.