导入序列检查设备是否永久连接

时间:2017-08-14 09:59:04

标签: python pyqt4 raspbian pyserial qtimer

我想永久地检查COM-Port的连接,我发现here如何检查连接,但当我将它实现到我的应用程序以检查设备是否已连接时,我没有达到想要的结果,也许是因为我每秒都在使用QTimer检查它,但也许它只是在开机时第一次没问题。

希望通过代码更容易理解。

所以,我打开端口:

    import serial
    global ser
    from PyQt5.QtCore import QTimer
    timer = QTimer()
    def setting_COMPort():
        global ser
        ser = serial.Serial(
                  port='/dev/ttyAMA0',
                  baudrate = 115200,
                  parity=serial.PARITY_NONE,
                  stopbits=serial.STOPBITS_ONE,
                  bytesize=serial.EIGHTBITS,
                  timeout=1)

timer.timeout.connect(self.statusComPort)
函数中的

有QTimer

global timer
timer.start(1000)

并且在slot statusComPort中我想通过QTimer检查每秒是否连接了设备。

def statusComPort(self):
    global ser
    colorr=self.palette()
    if(ser.isOpen()):
        self.lineEdit_6.setText(str("Port is open!"))
        print("Port is Open")
        colorr.setColor(self.backgroundRole(), QtGui.QColor(155,155,155))
        self.setPalette(colorr)
    else:
        self.lineEdit_6.setText(str("Error! Port is close!"))
        colorr.setColor(self.backgroundRole(), QtGui.QColor(155,0,5))
        self.setPalette(colorr)
        print("Port is close")

如果连接丢失,我会更改窗口的颜色。问题是在链接中建议的应用解决方案在这种情况下不起作用。

那么我应该在我的插槽中改变什么来实现结果..?

也许使用不同的功能,而不是isOpen()?

OS - Raspbian

更新1

链接到项目,除了所需的功能外,一切都被削减了 https://github.com/ivanwolodin/statusofcomport

总结。 我有Qtimer,它每秒都会动作,因此我的应用程序每秒进入插槽“statusComPort”,我想检查设备是否通过串口连接。所以我想永久地检查我的串口状态(每秒),问题是:我应该如何写这个插槽来实现正确的检查

0 个答案:

没有答案