c++ - 如何在不将 'screen' 连接到终端的情况下运行它,以便我可以在 C++ (qt) 应用程序中捕获输出?

标签 c++ macos qt gnu-screen

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

screen /dev/tty.SLAB_USBtoUART 115200

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

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

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

最佳答案

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

关于c++ - 如何在不将 'screen' 连接到终端的情况下运行它,以便我可以在 C++ (qt) 应用程序中捕获输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55805338/

相关文章:

macos - 我可以使用哪些方法从 OS X Lion 的命令行 growl ?

c++ - 向现有 Qt 应用程序添加表单

c++ - 如何保存指针最初指向的原始值

macos - mac桌面路径

java - 无法加载带有嵌入式 jre 的 Java 运行时环境

c++ - 不完整类型 'class Ui::dialog 的使用无效(QT 错误)

c++ - 如何在 QComboBox 上设置不可选择的默认文本?

c++ - 为什么不对类使用 cpp 文件包含?

c++ - 使用 Alpha channel 复制 SDL_Surfaces

c++ - MSVC std::exception 不符合标准?