如何在没有连接到终端的情况下运行“屏幕”,以便我可以在C ++(qt)应用程序中捕获输出?

问题描述 投票:0回答:2

我目前正在使用该命令在Mac OS终端中显示嵌入式设备的串行输出

screen /dev/tty.SLAB_USBtoUART 115200

我希望能够在我的C ++(qt)应用程序中逐行读取它,而不是在终端中显示输出,这样我就可以处理它并在GUI中显示它。

我试图创建一个QProcess对象来运行上面的屏幕命令,但屏幕失败,说“必须连接到终端”。

有没有办法可以“伪造”终端的连接性,以便QProcess能够成功运行屏幕命令?我不需要输入任何命令,我只需要捕获嵌入式设备正在编写的输出。

c++ macos qt gnu-screen
2个回答
0
投票

您可以使用boost serial port读取传入的数据。请注意,这必须在线程中或使用Qt Concurrent完成。通过此线程,您可以发送连接到数据显示器正确插槽的signals将获取数据并显示它。但是,Qt还提供了一个可以使用的串口类:QSerialPort。我建议使用QTextEdit作为您的显示小部件和QTextEdit::append为您的插槽。


0
投票

你可以试试script命令:

$ echo 'echo hello' | screen -
Must be connected to a terminal.

用脚本:

echo 'echo hello' | script 'screen -'
Script started, output file is screen -
echo hello
bash-3.2$ echo hello
hello
bash-3.2$ exit

Script done, output file is screen -
© www.soinside.com 2019 - 2024. All rights reserved.