首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用QtSerialPort读取端口的QtSerialPort问题

用QtSerialPort读取端口的QtSerialPort问题
EN

Stack Overflow用户
提问于 2022-04-08 10:11:59
回答 1查看 397关注 0票数 0

我目前正试图与一个通过COM发送数据流的设备进行通信。我有一个奇怪的QtSerialPort问题,我目前不知道如何解决。问题的描述是:当我重新启动设备并重新启动我的应用程序时,我可以在应用程序中打开相应的端口,而不会出现任何错误。但是,我没有从设备接收到任何数据。我试图用信号readyRead从COM端口读取数据.现在,当我使用另一个使用python的串行程序B打开端口时,我可以在重启后成功地从设备中读取。现在,在使用程序B成功地从设备中读取之后,我也可以使用QT-Program从设备中成功地读取,但前提是我不重新启动设备。下面的代码包含带有QtSerial的隔离端口,该端口复制了上述问题。

代码语言:javascript
复制
import sys
from PyQt5 import QtSerialPort
from PyQt5.QtCore import *
from PyQt5.QtSerialPort import *
from PyQt5.QtWidgets import QApplication, QMainWindow

class QtSerialTest(QMainWindow):
    def __init__(self, parent=None) -> None:
        super().__init__()

        self.port_com_port = QtSerialPort.QSerialPort()
        self.port_com_port.setPortName("COM4")
        self.port_com_port.setBaudRate(QSerialPort.BaudRate.Baud115200)
        self.port_com_port.setParity(QSerialPort.Parity.NoParity)
        self.port_com_port.setDataBits(QSerialPort.DataBits.Data8)
        self.port_com_port.setStopBits(QSerialPort.StopBits.OneStop)

        self.port_com_port.open(QIODevice.ReadWrite)
        self.port_com_port.readyRead.connect(self.readFromSerial)

    def readFromSerial(self):
        print(self.port_com_port.readAll())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    test = QtSerialTest()
    app.exec()

我可以确认,在重新启动之后,函数"readFromSerial“永远不会被调用,尽管设备发送。

编辑:我忘记提到:我比较了程序A和B的端口设置,它们是相等的。

EN

回答 1

Stack Overflow用户

发布于 2022-05-05 11:54:30

经过一些搜索,我可以删除解决办法,它现在起作用了。我错过了一个重要的配置参数。打开QtSerialPort后,需要调用self.port_com_port.setDataTerminalReady(True)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71795248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档