如何在不将其连接到终端的情况下运行“屏幕”,以便可以在 C++ (qt) 应用程序中捕获输出?
Posted
技术标签:
【中文标题】如何在不将其连接到终端的情况下运行“屏幕”,以便可以在 C++ (qt) 应用程序中捕获输出?【英文标题】:How can I run 'screen' without it being attached to a terminal so that I can capture the output in a C++ (qt) app? 【发布时间】:2019-04-23 06:16:43 【问题描述】:我目前正在使用命令在 Mac OS 终端中显示来自我的嵌入式设备的串行输出
screen /dev/tty.SLAB_USBtoUART 115200
我不想在终端中显示输出,而是希望能够在我的 C++ (qt) 应用程序中逐行读取它,以便处理它并在 GUI 中显示它。
我试图创建一个 QProcess 对象来运行上面的 screen 命令,但是 screen 失败,说“必须连接到终端”。
有没有办法可以“伪造”与终端的连接,以便 QProcess 能够成功运行 screen 命令?我不需要输入任何命令,我只需要捕获嵌入式设备正在写入的输出即可。
【问题讨论】:
【参考方案1】:您可以使用boost serial port 来读取传入的数据。请注意,这必须在线程中或使用Qt Concurrent 完成。从这个线程你可以发送signals 连接到你的数据显示的正确插槽将获取数据并显示它。但是,Qt 还提供了一个可以使用的串行端口类:QSerialPort。我建议使用QTextEdit 作为您的显示小部件,使用QTextEdit::append 作为您的插槽。
【讨论】:
以上是关于如何在不将其连接到终端的情况下运行“屏幕”,以便可以在 C++ (qt) 应用程序中捕获输出?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不将Dock设置为Fill的情况下将Label置于Panel内部