|
4 / 4 / 4
Регистрация: 08.04.2008
Сообщений: 85
|
||||||
.NET 4.x Перенаправление вывода консольного приложения в WinForm03.01.2017, 18:39. Показов 2270. Ответов 14
Метки перенаправление вывода (Все метки)
Добрый день!
Имеется программа AVRDude. Консольный вариант. Делаю перенаправление вывода с этого консольного приложения в WinForm. Все проде бы получилось, но есть одно но. В AVRDUDE_PROG(GUI) для AVRDude сделано так, что в GUI, как я понимаю, поток данных передается на лету. А не потом отображается все что было выполнено. Получается, что в AVRDUDE_PROG весь процесс работы можно видеть в реальном времени. Если же делать так:
Как организовать перенаправления данных в форму сразу же после их появления в консоли? Надеюсь, что понятно объяснил. Чего то аж сам запутался.
1
|
||||||
| 03.01.2017, 18:39 | |
|
Ответы с готовыми решениями:
14
Не удаётся перенаправить потоки вывода буферного консольного приложения
Как преобразовать код консольного приложения в WinForm |
|
Администратор
|
|||||||||||
| 04.01.2017, 15:03 | |||||||||||
|
White Wolf, здесь нужно использовать асинхронное чтение из перенаправлямого потока используя метод Process.BeginErrorReadLine() и событие Process..ErrorDataReceived. Небольшая трудность заключается в том что после вызова BeginErrorReadLine нужно обязательно вызывать WaitForExit что означает блокировку вызываемого потока и значит работу с процессом нужно вынести в отдельный поток. Следующая трудность заключается в том обновлять форму прямо из обработчика события ErrorDataReceived скорее всего плохая идея т.к. частые обновления подвесят UI. Поэтому обработчику лучше только накапливать данные, а выводить их можно по таймеру. В итоге мы получаем примерно такой код:
Кликните здесь для просмотра всего текста
P.S. Зачем ты запускаешь cmd, а не непосредственно приложение? Это же лишние траты системных ресурсов. В рамках вышеприведенного примера заменяем строки №56,57 на
2
|
|||||||||||
|
4 / 4 / 4
Регистрация: 08.04.2008
Сообщений: 85
|
|
| 04.01.2017, 18:21 [ТС] | |
|
Как проверю, отпишусь.
0
|
|
|
4 / 4 / 4
Регистрация: 08.04.2008
Сообщений: 85
|
|
| 08.01.2017, 21:56 [ТС] | |
|
Проверил. Работает все.
Но у меня остался вопрос. В оригинальном AVRDude сделан прогресс бар, который заполняется до 100% постепенно и это все видно на экране. А таким способом менее 100 мс уже не посмотришь вывод. Разницы никакой что 10мс, что 50, что 100 мс. А как это сделано? И можно ли сделать так же? Если не понятно объяснил, приложу видео.
0
|
|
|
Администратор
|
||
| 08.01.2017, 22:05 | ||
|
White Wolf, с ходу ответить не могу. Для начала надо смотреть что выводится при перехвате вывода.
0
|
||
|
4 / 4 / 4
Регистрация: 08.04.2008
Сообщений: 85
|
||||||
| 09.01.2017, 04:56 [ТС] | ||||||
|
Ну, это я уже поэкспериментировал с вашими
Спасибо и за подсказку убрать cmd.exe из кода. Я чего-то не додумался сам. А маленькие значения таймера я пробовал ставить из-за того, что время прошивки контроллера в AVRDude у меня 0,45s. Хотел посмотреть, увижу я как заполняется прогресс бар или нет. Не увидел.
0
|
||||||
|
Администратор
|
|
| 09.01.2017, 11:23 | |
|
White Wolf, возможно что прогресс вообще не выводится при перенаправленном выводе.
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 09.01.2017, 11:29 | |
|
White Wolf, на Дуду исходники открыты. Посмотрите как и куда там выводится прогресс.
0
|
|
|
4 / 4 / 4
Регистрация: 08.04.2008
Сообщений: 85
|
|
| 09.01.2017, 15:09 [ТС] | |
|
aquaMakc,в консольной дудке прогресс бар есть. Его видно. В GUI к нему AVRDUDE_PROG прогресс бар тоже есть и работает. А я вот не могу понять как его организовали в GUI. В какую хоть сторону копать.
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 09.01.2017, 15:10 | |
|
White Wolf, ну так я и говорю - смотри исходники.
0
|
|
|
4 / 4 / 4
Регистрация: 08.04.2008
Сообщений: 85
|
|
| 09.01.2017, 15:11 [ТС] | |
|
OwenGlendower,прогресс бар выводится. В GUI к нему AVRDUDE_PROG он есть и работает. Как вот только это сделано не пойму.
0
|
|
|
Администратор
|
|
| 09.01.2017, 15:26 | |
|
White Wolf, как уже правильно отметил aquaMakc надо смотреть исходники.
0
|
|
|
4 / 4 / 4
Регистрация: 08.04.2008
Сообщений: 85
|
|
| 09.01.2017, 15:31 [ТС] | |
|
OwenGlendower,к AVRDUDE_PROG (GUI) нет исходников. А для консольной версии (avrdude.exe) мне зачем исходники? Я вас не понимаю.
0
|
|
|
Администратор
|
|
| 09.01.2017, 15:46 | |
|
White Wolf, чтобы посмотреть не отключается ли вывод прогресса при перенаправленном выводе и возможно понять как GUI приложение его получает.
Еще идея появилась - посмотри с какими параметрами GUI приложение запускает консольное. Это удобно делать через Process Explorer.
0
|
|
|
4 / 4 / 4
Регистрация: 08.04.2008
Сообщений: 85
|
|
| 09.01.2017, 18:07 [ТС] | |
|
OwenGlendower,завтра на работе попробую. Я USBAsp на работу унес.
0
|
|
| 09.01.2017, 18:07 | |
|
Помогаю со студенческими работами здесь
15
Как преобразовать код консольного приложения в WinForm или Класс обработка вывода консольного приложения
Перенос из консольного приложения в winform Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|