using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.JScript; using Microsoft.JScript.Vsa; namespace ExecJavaScript { public class ExecScript { ///// ///// ///// ///// ///// ///// //public string RunScript(Dictionary dc_TagID_PlcValue, string script) //{ // using (JavascriptContext context = new JavascriptContext()) // { // foreach (KeyValuePair item in dc_TagID_PlcValue) // { // var tagID = item.Key; // var tagValue = item.Value; // context.SetParameter("tag_" + tagID, tagValue); // //context.SetParameter("console", new SystemConsole()); // } // context.Run("result = " + script); // return context.GetParameter("result").ToString(); // } //} private static VsaEngine vsaEngine = VsaEngine.CreateEngine(); //public string RunScript(Dictionary dc_TagID_PlcValue, string script) //{ // List listVarDef = new List(); // foreach (KeyValuePair item in dc_TagID_PlcValue) // { // var tagID = item.Key; // var tagValue = item.Value; // listVarDef.Add($"var tag_{tagID} = {tagValue}; "); // } // listVarDef.Add(script); // var execScriptStr = string.Join(" ", listVarDef.ToArray()); // return EvalJScript(execScriptStr).ToString(); //} public string RunScript_SymbolTable(Dictionary dc_SymbolName_SymbolValue, string script) { var listVarDef = new List(); foreach (KeyValuePair item in dc_SymbolName_SymbolValue) listVarDef.Add($"var {item.Key} = {item.Value}; "); listVarDef.Add(script); return EvalJScript(string.Join(" ", listVarDef.ToArray())).ToString(); } private object EvalJScript(string JScript) { lock (this) { object Result = null; try { Result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, vsaEngine); } catch (Exception ex) { LogNet.LogisTrac.WriteLog(typeof(ExecScript), ex); return ex.Message; } return Result; } } } }