python - read - Reconectando al dispositivo con pySerial
python serial read (1)
No está liberando el puerto serie cuando haya terminado. Utilice ser.close()
para cerrar el puerto antes de salir de su programa; de lo contrario, el puerto permanecerá bloqueado indefinidamente. Sugeriría agregar un método llamado disconnect()
en su clase para esto.
Si está en Windows, para remediar la situación durante las pruebas, inicie el Administrador de tareas y python.exe
cualquier proceso python.exe
o pythonw.exe
que pueda estar bloqueando el puerto serie.
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.
Aquí está la clase contenedora que mi programa usa 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 el motivo por el que existe este problema y qué podría intentar hacer para solucionarlo?