Actualmente estoy teniendo un problema con el módulo pySerial en Python. Mi problema está relacionado con la conexión y desconexión a un dispositivo. Puedo conectarme con éxito a mi dispositivo y comunicarme con él durante el tiempo que quiera, y desconectarme de él siempre que lo desee. Sin embargo, no puedo volver a conectarme al dispositivo una vez que se ha cortado la conexión.Reconectando al dispositivo con pySerial
Aquí es la clase de contenedor que mi programa utiliza para interactuar con el puerto serie:
import serial, tkMessageBox
class Controller:
""" Wrapper class for managing the serial connection with the MS-2000. """
def __init__(self, settings):
self.ser = None
self.settings = settings
def connect(self):
""" Connect or disconnect to MS-2000. Return connection status."""
try:
if self.ser == None:
self.ser = serial.Serial(self.settings['PORT'],
self.settings['BAUDRATE'])
print "Successfully connected to port %r." % self.ser.port
return True
else:
if self.ser.isOpen():
self.ser.close()
print "Disconnected."
return False
else:
self.ser.open()
print "Connected."
return True
except serial.SerialException, e:
return False
def isConnected(self):
'''Is the computer connected with the MS-2000?'''
try:
return self.ser.isOpen()
except:
return False
def write(self, command):
""" Sends command to MS-2000, appending a carraige return. """
try:
self.ser.write(command + '\r')
except Exception, e:
tkMessageBox.showerror('Serial connection error',
'Error sending message "%s" to MS-2000:\n%s' %
(command, e))
def read(self, chars):
""" Reads specified number of characters from the serial port. """
return self.ser.read(chars)
¿Alguien sabe la razón por la cual existe este problema y lo que podría tratar de hacer para solucionarlo?
¿Cuál es la excepción/rastreo que obtienes cuando intentas volver a conectarte? ¿Y estás en Windows o Linux? – jedwards
¿Qué quiere decir con "la conexión está cortada"? ¿Quiere decir desconectar el cable de serie o simplemente salir de su proceso de python? – TJD
@andrew donelick No está relacionado con la respuesta a su problema, pero ¿por qué no inicializa el objeto 'Serie 'en' __init __() '? –