Problème d'exécution des fichiers JSL dans C#.NET<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'essaie d'exécuter des fichiers JSL dans un wrapper C#.NET. Je suis capable d'exécuter les fichiers avec succès mais mon code n'attend pas la fin du script. Ci-dessous un exemple :
JMP.Application jmpInstance = new JMP.Application();
FileInfo fJSLFile = new FileInfo(@C:\Test\Test.JSL);
jmpInstance.RunJSLFile(fJSLFile.ToString());
si (jmpInstance.HasRunCommandErrorString())
{
throw new ApplicationException("Erreur avec le script JMP : " + jmpInstance.GetRunCommandErrorString());
}
Re : Problème lors de l'exécution de fichiers JSL dans C#.NET@ChrisM_X ,
En fait, j'ai réussi à le faire fonctionner en utilisant votre suggestion et un peu de chance de jouer. Voici mon code C# qui fonctionne.
// Create an instance of JMP and make it visible
JMP.Application MyJMP;
MyJMP = new JMP.Application();
MyJMP.Visible = true;
MyJMP.ShowStartupWindow();
MyJMP.EnableInteractiveMode(true);
// create command
string arg1 = "base = 2"; // arguments to my User defined function in JSL
string arg2 = "expn = 3"; // arguments to my User defined function in JSL
MyJMP.RunCommand(arg1);
MyJMP.RunCommand(arg2);
string FilePathOfFileToRun = "C:\\Test.jsl";
MyJMP.RunJSLFile(FilePathOfFileToRun); // Running the user defined function
// Needed to keep JMP from automatically closing
JMP.DataTable dt = MyJMP.NewDataTable("test");
MyJMP.RunCommand(@Close(Data Table("test""), NoSave)");
Re : Problème lors de l'exécution de fichiers JSL dans C#.NET@ChrisM_X ,
Merci pour le s mamelon. J'essaie de comprendre, où dans votre extrait invoquez-vous une fonction ?
TestPower = function({base,expn},{default local},
res = base ^ expn ;
Retrun(res);
);Supposons que nous ayons une fonction définie par l'utilisateur dans JMP comme celle illustrée ci-dessus. Maintenant, à partir de C #, comment puis-je invoquer cette fonction en lui passant des paramètres pour base et exp et exécuter cette fonction ?
L'extrait que vous avez partagé aborde la partie sur la façon dont nous pouvons utiliser la fonction RunCommand pour transmettre une valeur, mais pouvez-vous utiliser un exemple simple comme celui-ci pour expliquer le processus un peu plus en détail ?
Donc, si j'ai la fonction ci-dessus stockée en tant que TestPower.jsl sur mon C:\ , pouvez-vous gentiment partager comment je pourrais exécuter en utilisant C#, en lui transmettant les paramètres et en appelant cette fonction ?
Re : Problème lors de l'exécution de fichiers JSL dans C#.NETJ'utilise myJMP.RunCommand(command); pour transmettre des données à JMP pour C#, où command est une chaîne que vous créez en C# pour configurer des variables.
exemple
JMP.Application monJMP = new JMP.Application();
commande de chaîne = "a=1" ;
myJMP.RunCommand(commande);
Exemple d'extrait de code ci-dessous :
Ci-dessous, je définis les propriétés des limites de spécification sur les colonnes qui ont des spécifications :
JMP.Application monJMP = new JMP.Application();
foreach (élément var dans les spécifications)
{
bool setprops = faux ;
StringBuilder SpecList = new StringBuilder();
si (item.Value.LowerSpec.ToLower() != "nan")
{
SpecList.Append("LSL(Expr(" + item.Value.LowerSpec.ToLower() + ")),");
setprops = vrai;
}
if (item.Value.UpperSpec.ToLower() != "nan")
{
SpecList.Append("USL(Expr(" + item.Value.UpperSpec.ToLower() + ")),");
setprops = vrai;
}
// SpecList.Length--; // supprime le dernier caractère de SB (virgule de fin)
si (setprops)
{
commande = @Eval(
Éval Expr(" +
"column(dts, Expr(\"" + item.Key + "\")) << set property(" +
"\"limites de spécification\"," +
" {" + SpecList.ToString() + " Afficher les limites ( 1 )}" +
@))
); " ;
myJMP.RunCommand(commande);
}
}Re : Problème lors de l'exécution de fichiers JSL dans C#.NET@gpuckett ,
Avez-vous pu comprendre cela? Je cherche à exécuter des fonctions JSL en lui transmettant des paramètres à partir de C#. Vous vous demandez si vous pourriez partager un aperçu?