#!/usr/bin/env python3.5
# -*- coding: iso-8859-15 -*-
#-----------------------------------------------------------------------------
# Buscar puertos series disposibles.
# ENTRADAS:
# -num_ports : Numero de puertos a escanear. Por defecto 5
# -verbose : Modo verboso True/False. Si esta activado se va
# imprimiendo todo lo que va ocurriendo
# DEVUELVE:
# Una lista con todos los puertos encontrados. Cada elemento de la lista
# es una tupla con el numero del puerto y el del dispositivo
#-----------------------------------------------------------------------------
import serial
import sys
def scan(num_puertos=5, verbose=True):
#-- Lista de los dispositivos serie. Inicialmente vacia
dispositivos_serie = []
if verbose is True:
print(("\nEscanenado %d puertos serie:" % num_puertos))
#-- Escanear num_port posibles puertos serie
for i in range(num_puertos):
if verbose is True:
sys.stdout.write("Puerto %d: " % i)
sys.stdout.flush()
try:
#-- Abrir puerto serie
ser = serial.Serial(i)
print(("PUERTO SERIE ABIERTO"))
if verbose is True:
print(("OK --> %s" % ser.portstr))
#-- Si no hay errores, anadir el numero y nombre a la lista
dispositivos_serie.append((i, ser.portstr))
#-- Cerrar puerto
ser.close()
#-- Si hay error se ignora
except:
#if verbose is True:
#print(("NO"))
pass
#-- Devolver la lista de los dispositivos serie encontrados
return dispositivos_serie
#--------------------------
# Pruebas del modulo Scan
#--------------------------
if __name__ == '__main__':
#-- Escanear los puertos.
#-- Se puede indicar el numero de puertos a escaner
#-- El modo "verbose" esta activado por defecto. Se desactiva con False
puertos_disponibles = scan(num_puertos=5, verbose=True)
#-- Recorrer la lista mostrando los que se han podido abrir
print((""))
print(("--Puertos detectados: "))
if len(puertos_disponibles) != 0:
for n, nombre in puertos_disponibles:
print((" (%d) %s" % (n, nombre)))
else:
print(("\nNINGUN PUERTO ABIERTO"))