Вопрос по shell, embedded, vxworks, redirect – Как перенаправить вывод оболочки Tornado / VXWorks?

3

Я недавно работал над встроенным проектом C / C ++, используя оболочку в Tornado 2 для отладки того, что происходит в нашем наборе. Единственная проблема с этим подходом состоит в том, что это сложная система и, как результат, имеет значительный объем выходной информации. Торнадо "услужливо" прокручивает окно каждый раз, когда поступает какая-то новая информация, что означает, что если вы обнаружите ошибку, она слишком быстро исчезнет с сайта, чтобы ее увидеть. Каждый раз, когда вы прокручиваете страницу вверх, система добавляет дополнительную информацию, поэтому единственный способ просмотреть ее - отключить оборудование.

Я хотел бы знать, есть ли у кого-нибудь способ перенаправить вывод из Торнадо?

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

Любые идеи кто-нибудь?

[Edit] Я должен был упомянуть, что мы работаем только с Tornado 2.1.0, и обновление до более новой версии находится вне моего контроля.

[Edit2] Рассматриваемое окно в Tornado представляет собой «AfxFrameOrView42». согласно WinID.

Ваш Ответ

3   ответа
1

Если вы запускаете тест, запуская его из оболочки, например & quot; runTest () & quot ;, вы можете использовать оператор перенаправления (& gt;) для отправки вывода этой функции в текстовый файл на вашем хост-компьютере.

 > runTest() > mytestResults.txt

Это сохранит все выходные данные, которые генерирует runTest, в файл mytestResults.txt.

Если вы хотите все время снимать на экране, мне нужно больше в этом разобраться.

Я попробовал, но команда, которую мы используем для запуска нашей системы, запускает новую задачу, и в результате мы не видим какой-либо вывод, который нам интересен. Я думаю, что нам нужно собрать все, чтобы найти решение. действительно работает .. Jon Cage
Да, я пробовал это сделать, но поскольку я использую Tornado 2.1.0, параметры не имеют никакого эффекта. Я думаю, что они были введены в более поздней версии (?). Jon Cage
Отсутствует ли вывод в командной оболочке вообще? или он появляется на последовательном порту (то есть оболочка ядра)?
Не знаю ... попробовал? ShConfig RECORD на ??
Я удаленно подключился к оболочке из Tornado на моей локальной машине, и я вижу все выходные данные этой оболочки. Если я проверяю файл журнала, хотя он содержит только данные из функции, с которой я начал (а не порожденную задачу). Jon Cage
5

-> saveFd = open("myfile.txt",0x102, 0777 )
-> oldFd = ioGlobalStdGet(1)
-> ioGlobalStdSet(1, saveFd)
-> runmytest()
...
-> ioGlobalStdSet(1, oldFd)

это перенаправитall стандартный вывод файла, который вы открыли. Возможно, вам придется поиграться с именем файла open, чтобы заставить его писать на хосте (например, используйте & quot; host: /myfile.txt" или что-то вроде этого)

это не может быть "самым последним" решение, но это то, что я использовал в прошлые годы, и я знаю, что это работает. Более новый верстак (3.x) лучше поддерживает такие вещи, но, вероятно, это вам не поможет.
Хотя это и не такое изящное решение, как мне бы хотелось, но сейчас это лучший вариант. Спасибо за все ваши предложения Бенуа :-) Jon Cage
3

Доступны 3 переменные среды (в 6.x - недоступно в 5.x):

ЗАПИСЬ (вкл / выкл): управляет записью оболочки
RECORD_TYPE (вход / выход / все): определяет, что вы будете записывать
RECORD_FILE: имя файла для сохранения.

вы используете команду? shConfig для настройки переменной среды оболочки. ? shConfig сам по себе отображает переменные. Вот как я это сделал:


-> ?shConfig
...
RECORD = off
RECORD_FILE = C:/test.txt
RECORD_TYPE = output
...

-> ?shConfig RECORD_TYPE all
-> ?shConfig RECORD_FILE myData.txt
-> ?shConfig RECORD on
Started recording commands in 'myData.txt'.
Я не думаю, что это часть 5.х.

Похожие вопросы