Como faço para redirecionar Tornado / VXWorks desembolsar saída?
Pergunta
Eu tenho trabalhado em um projeto incorporado C / C ++ recentemente usando o shell em Tornado 2 como uma forma de depurar o que está acontecendo em nosso kit. O único problema com esta abordagem é que é um sistema complicado e, como resultado, tem um pouco de saída. Tornado 'prestativamente' rola a janela cada vez alguma informação nova chega o que significa que se você detectar um erro, ele desaparece fora do local muito rapidamente para ver. Cada vez que você vá para cima para olhar, o sistema adiciona mais informações, por isso a única maneira de vê-lo é desconectar o hardware.
Eu adoraria saber se alguém tem uma maneira de redirecionar a saída do Tornado?
Eu estava esperando que pode haver uma maneira de registrar tudo a partir de um aplicativo de python pequeno para que eu possa aplicar filtros para as informações recebidas. Eu tentei ligar para o processo de Tornado, mas a janela com a informação não é um CEditCtrl padrão para que extrair o texto dessa forma era um beco sem saída.
Qualquer idéias alguém?
[Edit] eu deveria ter mencionado que estamos executando apenas Tornado 2.1.0 e atualização para uma versão mais recente está além do meu controle.
[Edit2] A janela em questão Tornado é um 'AfxFrameOrView42' de acordo com WinID.
Solução
aqui é uma outra maneira potencial:
-> saveFd = open("myfile.txt",0x102, 0777 ) -> oldFd = ioGlobalStdGet(1) -> ioGlobalStdSet(1, saveFd) -> runmytest() ... -> ioGlobalStdSet(1, oldFd)
Isto irá redirecionar todas atividade stdout para o arquivo que você abriu. Você pode ter que brincar com o nome do arquivo aberto para torná-lo escrever no host (por exemplo, use "host: /myfile.txt" ou algo assim)
Outras dicas
O shell anfitrião tem uma capacidade de gravação embutido. Existem 3 variáveis ??de ambiente disponíveis (em 6.x - não disponível no 5.x):
Record (on / off): Controlos de gravação do shell
RECORD_TYPE (input / output / all): determina o que você vai gravar
RECORD_FILE:. Nome do arquivo para salvar as coisas
você usar o comando? ShConfig para configurar a variável de ambiente shell. ? ShConfig por si só mostra as variáveis. Aqui está como eu meu set up:
-> ?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'.
Eu estou fazendo a suposição de que você está usando o shell de host para executar esta.
Se você estiver executando um teste lançando-a do shell como "runTest ()", você pode usar o operador de redirecionamento (>) para enviar a saída dessa função para um arquivo de texto em sua máquina host.
> runTest() > mytestResults.txt
Isto vai poupar qualquer saída que gera runTest ao mytestResults.txt arquivo
Se você gostaria de tudo captura na tela o tempo todo, eu vou ter que cavar mais para isso.
rlogin vxWorks-alvo | tee redirecionada-output.txt