Lancer Xcas avec un fichier de commandes

Xcas devel: interface utilisateur/user interface

Modérateur : xcasadmin

Homer Simpson
Messages : 7
Inscription : dim. avr. 15, 2007 12:33 pm

Lancer Xcas avec un fichier de commandes

Message par Homer Simpson » dim. avr. 22, 2007 9:08 am

Bonjour,

Je souhaiterais interfacer Excel (sous Windows) avec Xcas; en particulier je cherche un moyen pour que Xcas, au moment de son lancement, lise et exécute un fichier représentant une suite de commandes.
J'ai essayé sans succès de passer un nom de fichier en argument dans la ligne de commande "$XCAS_ROOT/xcas.exe" du fichier runxcas.fr.

Sur le forum, j'ai vu que cela était possible sous Windows CE.
Mais quid pour un Windows "normal" ?

Merci d'avance, et félicitations pour l'écriture d'un tel outil !

Homer Simpson.

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » lun. avr. 23, 2007 10:59 am

Si on passe un argument a xcas, il considere que c'est un nom de fichier de session xcas et le charge sans l'executer. S'il s'agit d'un fichier contenant des commandes uniquement, cela cree une suite de niveaux de calcul que l'on peut ensuite valider (un par un ou par Edit->Executer->session). Pour executer des commandes en mode batch (comme la version wince), c'est l'executable icas (ou giac.exe, je ne sais plus quel est son nom sous Windows, sous Unix les 2 marchent) qu'il faut utiliser (il est disponible dans la version windows depuis 2 mois environ). Mais je ne sais pas si cela est tres utilisable pour interfacer du calcul formel dans excel, comment comptez-vous faire? Peut-on appeler un programme externe pour evaluer une cellule?
L'ideal ce serait de pouvoir interagir au niveau source avec la librairie libgiac (et openoffice par exemple)

Homer Simpson
Messages : 7
Inscription : dim. avr. 15, 2007 12:33 pm

Message par Homer Simpson » lun. avr. 23, 2007 8:18 pm

Bonjour, et merci de votre réponse rapide.

Voilà ce que je voudrais faire :
1) lire un fichier texte au format Spice (un simulateur de circuits électroniques),
2) construire la matrice équivalente du circuit,
3) résoudre symboliquement les expressions des tensions et courants,
4) permettre de faire des calculs symboliques sur ces résultats.

Pour 1) et 2), j'utilise Excel, disponible partout, qui possède un langage de programmation puissant (Visual Basic) et qui permet de créer une petite interface utilisateur.
Pour 3) et 4), Xcas me semble un bon candidat.

Pour la passerelle entre 2) et 3), Excel permet effectivement d'appeler un programme externe. Il peut aussi générer le fichier de commandes adéquat pour le soft de calcul formel.

C'est pour ça que je cherche un moyen pour faire lire et exécuter un fichier de plusieurs commandes par Xcas...
Si vous avez une solution, je suis preneur !

Homer

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » mar. avr. 24, 2007 7:00 am

alors c'est bien icas dont vous avez besoin. (vous pouvez aussi creer un petit executable C++ lie a la librairie libgiac qui fait exactement ce que vous voulez).
Vous creez un fichier de commande, appelons-le xls2xcas, vous lancez la commande
icas.exe xls2xcas
et vous recuperez les resultats de vos commandes dans des fichiers texte crees par des commandes write du fichier xls2xcas. Par exemple si vous mettez dans le fichier xls2xcas les commandes

Code : Tout sélectionner

a:=linsolve([x+y=1,x-y=3],[x,y]);
f:=fopen("x.txt");
fprint(f,Unquoted,a[0]);
fclose(f);
vous aurez dans le fichier x.txt la valeur de x solution du systeme lineaire.

Homer Simpson
Messages : 7
Inscription : dim. avr. 15, 2007 12:33 pm

Message par Homer Simpson » mar. avr. 24, 2007 10:18 am

Eh bien... je n'ai pas trouvé de fichier icas.exe dans le répertoire xcas de windows, mais je ne suis pas sûr que ce soit la solution : pour le point 4) de mon problème, il faut que le logiciel de calcul formel garde la main, pour que l'utilisateur puisse effectuer des opérations sur les résultats, le tout avec un affichage "graphique".

En fait, il faudrait juste que xcas exécute un fichier de commandes...

J'ai essayé une voie "alternative" : Excel permet de simuler l'appui sur des touches du clavier, ces touches étant envoyées à l'application externe lancée elle-même par Excel. Mais pas de chance, Xcas ne réceptionne pas les touches envoyées de cette façon.

Pour l'instant, ce que je suis arrivé à faire de mieux, c'est de dire à Excel de copier dans le "presse-papier" la ou les commandes, d'ouvrir Xcas, et ensuite c'est à l'opérateur de "coller" la ligne de commande dans Xcas...
Un moindre mal !

Homer.

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » mar. avr. 24, 2007 10:39 am

Si ce n'est pas icas.exe, ce doit etre giac.exe. Si aucun des 2 n'y est, soit j'ai fait une fausse manip, soit il vous faut mettre a jour xcas pour windows.
Par contre, si l'utilisateur doit garder la main, c'est en effet plutot a xcas qu'il faudra faire appel. Je pourrais ajouter une option qui execute automatiquement la session au lancement (pour un fichier de commande, cela correspondrait a executer chaque ligne du fichier dans son propre niveau). Par exemple
xcas --exec xls2xcas

Homer Simpson
Messages : 7
Inscription : dim. avr. 15, 2007 12:33 pm

Message par Homer Simpson » mar. avr. 24, 2007 1:17 pm

Bonjour,
Si ce n'est pas icas.exe, ce doit etre giac.exe
En effet, votre exemple fonctionne avec giac.exe, qui est bien présent dans le répertoire.
Je pourrais ajouter une option qui execute automatiquement la session au lancement
Je ne voudrais pas abuser... et me faire réaliser un Xcas sur mesure !
Mais peut-être que je ne serais pas le seul demandeur.
Je crois qu'il faudrait pouvoir exécuter n'importe quelle commande, y compris un programme.

Pour l'instant, la méthode du "copier-Excel, coller-Xcas" permet à l'ensemble d'être fonctionnel.

Merci encore d'avoir pris du temps pour mon problème !

Homer Simpson.

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » jeu. avr. 26, 2007 7:51 am

J'ai ajoute la fonctionnalite d'execution automatique pour xcas. Il suffit de mettre en 1ere ligne du fichier de commandes

Code : Tout sélectionner

// xcas exec=true
Vous faites ensuite suivre cette ligne soit par du texte normal qui sera executee ligne par ligne, soit en vous inspirant du format de sauvegarde de xcas (fichiers .xws) si vous voulez creer des niveaux plus varies (comme par exemple un bout de tableur ou un programme sur plusieurs lignes), pour plus d'infos sur ce format, cf. la fonction widget_sprint du fichier Xcas1.cc du source de xcas

Homer Simpson
Messages : 7
Inscription : dim. avr. 15, 2007 12:33 pm

Message par Homer Simpson » mar. mai 01, 2007 4:54 pm

Bonjour,

Je viens d'essayer : en effet, ça fonctionne très bien !
L'ensemble Excel / Xcas est maintenant automatisé.

Merci encore pour votre réactivité !

Homer Simpson

Répondre