serial read mac libreria library example python serial-port pyserial

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?