我目前正在使用该命令在Mac OS终端中显示嵌入式设备的串行输出
screen /dev/tty.SLAB_USBtoUART 115200
我希望能够在我的C ++(qt)应用程序中逐行读取它,而不是在终端中显示输出,这样我就可以处理它并在GUI中显示它。
我试图创建一个QProcess对象来运行上面的屏幕命令,但屏幕失败,说“必须连接到终端”。
有没有办法可以“伪造”终端的连接性,以便QProcess能够成功运行屏幕命令?我不需要输入任何命令,我只需要捕获嵌入式设备正在编写的输出。
您可以使用boost serial port读取传入的数据。请注意,这必须在线程中或使用Qt Concurrent完成。通过此线程,您可以发送连接到数据显示器正确插槽的signals将获取数据并显示它。但是,Qt还提供了一个可以使用的串口类:QSerialPort。我建议使用QTextEdit作为您的显示小部件和QTextEdit::append为您的插槽。
你可以试试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 -