重新连接到设备与pySerial(Reconnecting to device with pySer

2019-07-30 00:09发布

我目前有使用Python的pySerial模块有问题。 我的问题涉及连接和断开的装置。 我可以成功连接到我的设备并与之沟通,只要我想,并从中断开时,我的愿望。 但是,我不能,一旦连接已中断,重新连接到设备。

下面是我的程序使用和串口接口的包装类:

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)

有谁知道为什么这个问题存在,我可以尝试做些什么来解决它的原因是什么?

Answer 1:

当您完成您未释放串行端口。 使用ser.close()退出程序之前,关闭端口,否则端口将保持无限期锁定。 我建议增加一个方法叫做disconnect()在你的类此。

如果你是在Windows上,在测试过程中纠正这种情况,启动任务管理器,并杀死任何python.exepythonw.exe可以锁定串行端口的进程。



文章来源: Reconnecting to device with pySerial