Вывод данных консоли из процесса в графический интерфейс в wxwidgets - PullRequest
1 голос
/ 19 апреля 2011

Я выполняю долгий процесс в фоновом режиме. Мне удалось вывести данные консоли на графический интерфейс. Но проблема в том, что данные возвращаются только после завершения процесса. Но мне нужно отображать данные в режиме реального времени. т.е. мне нужно отображать данные, каждый раз, когда он выводит какой-то вывод на консоль. Я запускаю процесс в моем графическом интерфейсе из отдельного потока.

Я имею в виду, это было бы похоже на создание графического интерфейса для команды ping, где вывод выводится на консоль после отправки каждого пакета, то есть в режиме реального времени. Мне просто нужно перенаправить это на графический интерфейс в режиме реального времени. Я реализую графический интерфейс в wxwidgets. Любая помощь будет принята с благодарностью.

Благодарю вас ..

Jvc

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

Вывод, который вы хотите отобразить, генерируется в отдельном процессе от процесса, выполняющего графический интерфейс? Или в отдельном потоке в том же процессе?

Я спрашиваю, потому что большинство людей, когда задают этот вопрос, имеют в виду отдельную ветку. Поскольку вы пометили свой вопрос как «процесс», я предполагаю, что вы это имеете в виду.

Вам нужно межпроцессное взаимодействие. Есть изумительное разнообразие методов, чтобы сделать это. Лично я всегда использую сокеты.

wxWidgets имеет простые и удобные в использовании классы сокетов wxSocketClient и wxSocketServer.

Фоновый процесс, вероятно, не запускает wxWidgets, поэтому вам нужно что-то еще там. Я рекомендую boost :: asio. Я знаю, это выглядит пугающе, но на самом деле учебный код можно использовать как есть.

Можно сказать намного больше, но я рискну отклониться от сути, поскольку в вашем вопросе так мало деталей.

1 голос
/ 20 апреля 2011

У вас может быть выходная очередь, защищенная wxMutex.Поток, выполняющий вычисления, записывает в очередь, затем сигнализирует потоку GUI, используя wxQueueEvent, с пользовательским событием, чтобы сообщить ему, что поток не пуст.Затем поток графического интерфейса читает очередь и выводит данные.

...