导入串行检查设备是否永久连接

2024-04-25 21:46:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想永久地检查连接vie COM端口,我已经找到了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)

在“main”函数中有QTimer

^{pr2}$

在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")

万一失去连接,我会改变我窗户的颜色。问题是在link中建议的应用解决方案在这种情况下不起作用。在

那么,我应该在我的位置上做些什么来获得结果呢。。?在

可能使用不同的函数,而不是isOpen()?在

操作系统-Raspbian

更新1

链接到项目,除了需要的功能外,所有内容都被剪切 https://github.com/ivanwolodin/statusofcomport

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


Tags: 端口importself应用程序isportdeftimeout