Question

J'ai récemment travaillé sur un projet C / C ++ intégré utilisant le shell de Tornado 2 comme moyen de déboguer ce qui se passe dans notre kit. Le seul problème avec cette approche est qu’il s’agit d’un système compliqué, qui produit pas mal de résultats. Tornado "utilement" fait défiler la fenêtre chaque fois que de nouvelles informations nous parviennent, ce qui signifie que si vous remarquez une erreur, celle-ci disparaît trop rapidement du site. Chaque fois que vous faites défiler l'écran vers le haut, le système ajoute plus d'informations. Le seul moyen de les visualiser est donc de déconnecter le matériel.

J'aimerais savoir si quelqu'un a un moyen de rediriger la sortie de Tornado?

J'espérais qu'il pourrait y avoir un moyen de tout enregistrer depuis une petite application Python afin de pouvoir appliquer des filtres aux informations entrantes. J'ai essayé de me connecter au processus Tornado, mais la fenêtre contenant les informations n'étant pas un CEditCtrl standard, extraire le texte de cette façon était une impasse.

Des idées, ça vous tente?

[Modifier] J'aurais dû mentionner que nous n'utilisons que Tornado 2.1.0 et que la mise à niveau vers une version plus récente est hors de mon contrôle.

[Edit2] La fenêtre en question dans Tornado est un "AfxFrameOrView42" selon WinID.

Était-ce utile?

La solution

voici un autre moyen potentiel:

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

Ceci redirigera toute l'activité stdout vers le fichier que vous avez ouvert. Vous devrez peut-être jouer avec le nom de fichier de l'open pour l'écrire sur l'hôte (par exemple, utilisez " host: /myfile.txt" ou quelque chose comme cela)

Autres conseils

Le shell de l'hôte a une capacité d'enregistrement intégrée. Trois variables d’environnement sont disponibles (sous 6.x - non disponibles sous 5.x):

RECORD (on / off): contrôle l'enregistrement du shell
RECORD_TYPE (entrée / sortie / tout): détermine ce que vous allez enregistrer
RECORD_FILE: Nom du fichier dans lequel enregistrer les éléments.

vous utilisez la commande? shConfig pour configurer la variable d'environnement shell. ? shConfig à lui seul affiche les variables. Voici comment j'ai créé le mien:


-> ?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'.

Je suppose que vous utilisez le shell de l'hôte pour effectuer cette opération.

Si vous exécutez un test en le lançant depuis le shell, comme par exemple "runTest ()", vous pouvez utiliser l'opérateur de redirection (>) pour envoyer la sortie de cette fonction dans un fichier texte de votre ordinateur hôte.

 > runTest() > mytestResults.txt

Ceci enregistrera toute sortie générée par runTest dans le fichier mytestResults.txt

.

Si vous souhaitez tout capturer à l'écran tout le temps, je vais devoir approfondir cette question.

rlogin vxWorks-target | tee redirected-output.txt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top