在 C#.NET 中運行 JSL 文件的問題<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在嘗試在 C#.NET 包裝器中執行 JSL 文件。 我能夠成功運行這些文件,但我的代碼不會等待腳本完成。 下面是一個示例:
JMP.Application jmpInstance = new JMP.Application();
FileInfo fJSLFile = new FileInfo(@C:\Test\Test.JSL);
jmpInstance.RunJSLFile(fJSLFile.ToString());
如果 (jmpInstance.HasRunCommandErrorString())
{
throw new ApplicationException("JMP 腳本錯誤:" + jmpInstance.GetRunCommandErrorString());
}
回复:在 C#.NET 中運行 JSL 文件的問題@ChrisM_X ,
我實際上設法讓它運行使用你的建議和玩的一點運氣。 這是我的 C# 代碼。
// 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)");
回复:在 C#.NET 中運行 JSL 文件的問題@ChrisM_X ,
謝謝你的尼佩特。 我想了解,您在代碼片段中的哪個位置調用了一個函數?
TestPower = function({base,expn},{default local},
res = base ^ expn ;
Retrun(res);
);讓我們假設我們在 JMP 中有一個用戶定義的函數,如上所示。 現在,從 C# 開始,我如何通過向它傳遞 base 和 exp 參數來調用此函數並運行此函數?
您分享的代碼片段解決了我們如何使用 RunCommand 函數傳遞值的部分,但是您可以使用像這樣的簡單示例來更詳細地解釋該過程嗎?
因此,如果我將上述函數作為 TestPower.jsl 存儲在我的 C:\ 上,您能否分享一下我如何使用 C# 運行,通過傳遞參數並調用此函數?
回复:在 C#.NET 中運行 JSL 文件的問題我使用 myJMP.RunCommand(command);將數據傳遞給 C# 的 JMP,其中 command 是您在 C# 中構建的字符串,用於設置變量。
例子
JMP.Application myJMP = new JMP.Application();
字符串命令=“a=1”;
myJMP.RunCommand(命令);
下面的示例代碼片段:
下面我在具有規格的列上設置規格限制屬性:
JMP.Application myJMP = new JMP.Application();
foreach(規格中的 var 項目)
{
布爾設置道具=假;
StringBuilder SpecList = new StringBuilder();
如果 (item.Value.LowerSpec.ToLower() != "nan")
{
SpecList.Append("LSL(Expr(" + item.Value.LowerSpec.ToLower() + ")),");
設置道具=真;
}
如果 (item.Value.UpperSpec.ToLower() != "nan")
{
SpecList.Append("USL(Expr(" + item.Value.UpperSpec.ToLower() + ")),");
設置道具=真;
}
// SpecList.Length--; //從 SB 中刪除最後一個字符(結束逗號)
如果(設置道具)
{
命令 = @評估(
求值表達式(" +
“列(dts,Expr(\“”+ item.Key +“\”))<<設置屬性(“+
"\"規格限制\"," +
" {" + SpecList.ToString() + "顯示限制( 1 )}" +
@))
); ";
myJMP.RunCommand(命令);
}
}回复:在 C#.NET 中運行 JSL 文件的問題@gpuckett ,
你能弄清楚嗎? 我希望通過從 C# 向它傳遞參數來運行 JSL 函數。 想知道您是否可以分享任何見解?