Emissione di file JSL in C # .NET<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto cercando di eseguire file JSL in un wrapper C # .NET. Sono in grado di eseguire i file con successo ma il mio codice non aspetta che lo script finisca. Di seguito è un esempio:
JMP.Application jmpInstance = new JMP.Application ();
FileInfo fJSLFile = new FileInfo (@ "C: \ Test \ Test.JSL");
jmpInstance.RunJSLFile (fJSLFile.ToString ());
if (jmpInstance.HasRunCommandErrorString ())
{
lanciare una nuova ApplicationException ("Errore nello script JMP:" + jmpInstance.GetRunCommandErrorString ());
}
Ri: Emetti i file JSL in esecuzione in C # .NET @Crisma ,
Sono riuscito a farlo funzionare usando il tuo suggerimento e un po 'di fortuna a giocare. Ecco il mio codice C # che funziona.
// 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)");
Ri: Emetti i file JSL in esecuzione in C # .NET @Crisma ,
Grazie per la s nippet. Sto cercando di capire, dove nel tuo frammento stai invocando una funzione?
TestPower = function({base,expn},{default local},
res = base ^ expn ;
Retrun(res);
);Supponiamo di avere una funzione definita dall'utente in JMP come quella mostrata sopra. Ora, partendo da C #, come posso richiamare questa funzione passando i parametri per base ed exp ed eseguire questa funzione?
Lo snippet che hai condiviso indirizza la parte su come possiamo usare la funzione RunCommand per passare un valore, ma puoi usare un semplice esempio come questo per spiegare il processo un po 'più in dettaglio?
Quindi, se ho la funzione sopra memorizzata come TestPower.jsl sul mio C: \, puoi gentilmente condividere su come sarei in grado di eseguire utilizzando C #, passando i parametri e chiamando questa funzione?
Ri: Emetti i file JSL in esecuzione in C # .NETIo uso myJMP.RunCommand (comando); per passare i dati a JMP per C #, dove comando è una stringa che si crea in C # per impostare le variabili.
esempio
JMP.Application myJMP = new JMP.Application ();
string command = "a = 1";
myJMP.RunCommand (comando);
Esempio di snippet di codice qui sotto:
Di seguito ho impostato le proprietà dei limiti di specifiche sulle colonne che hanno specifiche:
JMP.Application myJMP = new JMP.Application ();
foreach (var item in Specs)
{
bool setprops = falso;
StringBuilder SpecList = new StringBuilder ();
if (item.Value.LowerSpec.ToLower ()! = "nan")
{
SpecList.Append ("LSL (Expr (" + item.Value.LowerSpec.ToLower () + ")),");
setprops = true;
}
if (item.Value.UpperSpec.ToLower ()! = "nan")
{
SpecList.Append ("USL (Expr (" + item.Value.UpperSpec.ToLower () + ")),");
setprops = true;
}
// SpecList.Length--; // rimuove l'ultimo carattere da SB (termina virgola)
se (setprops)
{
command = @ "Eval (
Eval Expr ("+
"column (dts, Expr (\" "+ item.Key +" \ ")) << imposta proprietà (" +
"\" limiti delle specifiche \ "," +
"{" + SpecList.ToString () + "Mostra limiti (1)}" +
@ "))
); ";
myJMP.RunCommand (comando);
}
}Ri: Emetti i file JSL in esecuzione in C # .NET @gpuckett ,
Eri in grado di capirlo? Sto cercando di eseguire le funzioni JSL passandogli i parametri da C #. Ti chiedi se potresti condividere qualche intuizione?