Как я могу запустить «экран», не подключая его к терминалу, чтобы я мог захватить вывод в приложении C ++ (qt)? - PullRequest
0 голосов
/ 23 апреля 2019

В настоящее время я отображаю последовательный вывод из моего встроенного устройства в терминале Mac OS, используя команду

screen /dev/tty.SLAB_USBtoUART 115200

Вместо отображения вывода в терминале, я хотел бы иметь возможность прочитать егострока за строкой в ​​моем приложении C ++ (qt), чтобы я мог обработать его и отобразить в графическом интерфейсе.

Я попытался создать объект QProcess для запуска команды экрана выше, но экран завершился неудачно, говоря: «Должно бытьподключен к терминалу ".

Есть ли способ, которым я могу" подделать "подключение к терминалу, чтобы QProcess смог успешно выполнить команду экрана?Мне не нужно вводить какие-либо команды, мне просто нужно захватить вывод, который записывает встроенное устройство.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Вы можете попробовать команду 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 -
0 голосов
/ 23 апреля 2019

Вы можете использовать boost последовательный порт для чтения входящих данных.Помните, что это должно быть сделано в потоке или с использованием Qt Concurrent .Из этой ветки вы можете отправлять сигналы , которые подключены к правильным слотам вашего дисплея данных, будут принимать данные и отображать их.Однако Qt также предоставляет класс последовательного порта, который вы можете использовать: QSerialPort .Я бы рекомендовал использовать QTextEdit в качестве виджета дисплея и QTextEdit :: append для вашего слота.

...