Как мне перенаправить вывод оболочки Tornado / VxWorks?
Вопрос
Недавно я работал над встроенным проектом на C / C ++, используя оболочку в Tornado 2 как способ отладки того, что происходит в нашем наборе.Единственная проблема с таким подходом заключается в том, что это сложная система и, как следствие, имеет довольно большой объем выходных данных.Tornado "услужливо" прокручивает окно каждый раз, когда поступает какая-то новая информация, что означает, что если вы обнаружите ошибку, она исчезнет с сайта слишком быстро, чтобы ее можно было увидеть.Каждый раз, когда вы прокручиваете страницу вверх, чтобы посмотреть, система добавляет больше информации, поэтому единственный способ просмотреть ее - отключить оборудование.
Я хотел бы знать, есть ли у кого-нибудь способ перенаправить выходные данные из Tornado?
Я надеялся, что найдется способ записать все это из небольшого приложения на Python, чтобы я мог применять фильтры к входящей информации.Я пытался подключиться к процессу Tornado, но окно с информацией не является стандартным CEditCtrl, поэтому извлечение текста таким способом зашло в тупик.
У кого-нибудь есть идеи?
[Править] Я должен был упомянуть, что мы используем только Tornado 2.1.0, и обновление до более поздней версии находится вне моего контроля.
[Правка2] Окно, о котором идет речь в Tornado, является "AfxFrameOrView42" в соответствии с WinID.
Решение
вот еще один потенциальный способ:
-> saveFd = open("myfile.txt",0x102, 0777 ) -> oldFd = ioGlobalStdGet(1) -> ioGlobalStdSet(1, saveFd) -> runmytest() ... -> ioGlobalStdSet(1, oldFd)
это приведет к перенаправлению ВСЕ стандартное действие для файла, который вы открыли.Возможно, вам придется поиграть с именем открытого файла, чтобы записать его на хост (напримериспользовать "host:/myfile.txt" или как то так)
Другие советы
В оболочку хоста встроена функция записи.Доступны 3 переменные среды (в 6.x - недоступны в 5.x):
ЗАПИСЬ (вкл./выкл.) :Управляет записью оболочки
RECORD_TYPE (ввод/вывод/все):Определяет, что вы будете записывать
ФАЙЛ ЗАПИСИ :Имя файла, в которое нужно что-то сохранить.
вы используете команду ?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'.
Я делаю предположение, что вы используете оболочку хоста для выполнения этого.
Если вы запускаете тест, запуская его из командной строки типа "runTest()", вы можете использовать оператор перенаправления (>) для отправки выходных данных этой функции в текстовый файл на вашем хост-компьютере.
> runTest() > mytestResults.txt
Это сохранит все выходные данные, сгенерированные runTest, в файл mytestResults.txt
Если вы хотите постоянно запечатлевать все на экране, мне придется углубиться в это подробнее.
rlogin VxWorks-цель |тройник redirected-output.txt