Salut à tous
Je n'y pense jamais à cet outils, qui est pourtant hyper pratique surtout quand on fait de la cross-compilation
pour l'ajustement automatique des contrôles :plusser:
Justement j'y viens :zoubi:
Oui j'ai déja lu, deux trois truc sur le sujet, mais je ne me suis jamais laissé tenter de l'utiliser
Revenons, en en à nos moutons.
J'ai continué mon débogage sous Linux et j'ai trouvé pourquoi des exceptions étaient levées. JP le synchronize justement fait partie de la solution.
Pour que cela fonctionne sous Linux tous les évènements reliés au TBZProcessEx (processError, processStopped...) doivent être appelés avec synchronize, contrairement à Windows (linux n'est pas fan des threads imbriqués les un aux autres. Comme c'est le cas ici, avec celui du TProcess)
Après quelques modifications, tout semble correcte sous Linux.
Après un petit nettoyage du code, j'ai rajouté l'options "mode différé" dont je parlais. Plus deux méthodes, en plus de la méthode Send, SendLn pour envoyer une commande avec le retour à la ligne et la méthode SendKey tirée de "UnTerminal" pour simuler l'appuis des touches du clavier.
J'ai également modifié la façon dont sont récupérées les données.
Effectivement pour solutionner les problèmes de réceptions que JP avait mentionné, j'avais eu la mauvaise bonne idée de faire comme FPCUpDeluxe. C'est à dire tenir compte des caractères de fin ligne.
Après plusieurs test je me suis donc rendu compte que cela pouvait occasionner des problèmes pour récupérer les dernières données et qu'il fallait mieux laisser à l'utilisateur de gérer lui même les fins de ligne avec l'événement OnFilterOutput. Ce qui est plus logique, au final pour ce type de composant.
J'ai également rajouté un petit script python (de JP trouvé chez les anglais) pour tester l'envoie de chaines de caractères
Pièce jointe 578326
Vous pouvez aussi tester avec "Python" et comme paramètre "-i"
Pièce jointe 578327
Tout comme CMD sous Windows, bash fonctionne et on peut lui envoyer des commandes.
Par contre je n'ai pas réussi, je ne sais pas comment faire pour que la petite application "testinput" fonctionne.
Et impossible de la lancer, en exécutant "bash". Donc si vous avez une idée, n'hésitez pas.
Voilà d'après mes tests, le composant TBZProcessEx est fiable et stable sous les deux OS
Avec TBZProcessEx et CmdLine (disponible aussi depuis OPM) Il devrait être aisé de réaliser un émulateur de terminal (comme UnTerminal, mais en mieux) ou tout autre interfaçage avec un logiciel en ligne de commande (image magick par exemple)
J'attend vos retours sur cette version "finale"
A+
Jérôme