2

我正在编写一个应用程序,允许我通过选定的串行端口(使用 RS485)连接到我的设备。一切都很好,除了一件事。当单击按钮时,我的应用程序会调用该功能并打开连接,但是一旦此功能执行所有操作,它应该立即关闭端口连接。因此,当我稍后想使用此连接时,我收到“未定义序列”的错误。

def open_connection(self):
    cur_item = self.comboBox.currentText()
    if (cur_item) is not None:
        fullname = self.full_port_name(str(cur_item))
        try:                                                                     
            ser = serial.Serial(
            port=fullname, 
            baudrate=115200, 
            parity=serial.PARITY_NONE,
            stopbits=serial.STOPBITS_ONE,
            bytesize=serial.EIGHTBITS,
            timeout=None)                                                

        except SerialException, e:
            QMessageBox.critical(self, 'Failure',
                'Failed to open %s:\n%s' % (cur_item, e))

我希望我的连接打开,因为当我关闭程序时单击按钮,以便我可以同时使用 lineEdit(按 Enter 后触发其他功能)向设备发送一些命令。你们能帮帮我吗?

编辑:好的,我使用 QThreads 解决了这个问题。但是我仍然不知道为什么如果我的程序的某个部分正在使用串行端口,另一个则不能在不为自己打开端口的情况下执行它(这是不可能的,因为只有一个“东西”可以连接到串行端口一次)。

4

0 回答 0