예제 #1
0
        public object Resolve(string str)
        {
            if (DynStringResolver.MethodDict == null)
            {
                throw new ApplicationException("字符串解析器未能成功初始化 请检查");
            }

            if (string.IsNullOrEmpty(str))
            {
                return(null);
            }

            object result = null;

            try
            {
                eval.Expression = str;
                result          = eval.Evaluate();
            }
            catch (Exception ex)
            {
                ApplicationException newEx = new ApplicationException("解析函数失败", ex);
                throw newEx;
            }

            return(result);
        }
예제 #2
0
        private void CalcExpression_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                EvalArrayPosition = 0;
                eval.Expression   = CalcExpression.Text;
                CalcResult.Text  += "\r\n>> " + CalcExpression.Text;
                EvalArray.Add(CalcExpression.Text);
                CalcExpression.Text = "";
                string ResponsePrefix = "\r\n                ";
                switch (eval.Expression.ToLower())
                {
                case "clear":
                    //EvalArrayPosition = 0b1100;

                    CalcResult.Clear();
                    break;

                case "listvar":
                    foreach (System.Collections.DictionaryEntry a in eval.variables)
                    {
                        CalcResult.Text += (ResponsePrefix + a.Key + "=" + a.Value);
                    }
                    CalcResult.Text += (ResponsePrefix + eval.variables.Count + " variable(s)");
                    break;

                case "help":
                    CalcResult.Text += ResponsePrefix + EvalHelp;
                    break;

                case "longhelp":
                    CalcResult.Text += ResponsePrefix + EvalLongHelp;
                    break;

                case "exit":
                    Application.Exit();
                    break;

                default:
                    try
                    {
                        object result = eval.Evaluate();
                        CalcResult.Text += (ResponsePrefix + result);
                        try
                        {
                            double ans = Convert.ToDouble(result);
                            eval.variables.Remove("ans");
                            eval.variables.Add("ans", ans);
                        }
                        catch (Exception) {};
                    }
                    catch (Exception ex) { CalcResult.Text += (ResponsePrefix + ex.Message); }
                    break;
                }
                e.Handled = true;
            }
            return;
        }
예제 #3
0
        public static object ProcessCommand(string command, byte[] data, out string o)
        {
            try
            {
                switch (command)
                {
                case "RECOTEXT":
                    o = "STRING";
                    return(Answer(Encoding.UTF8.GetString(data)));


                case "VCMDTEXT":
                    o = "STRING";
                    return(VoiceCommand(Encoding.UTF8.GetString(data)));

                case "LAUNALER":
                    o = "STRING";
                    sp.Play();

                    VolumeControl.VolumeControl.SetVolume(int.MaxValue);
                    return("Alert is launched");

                case "EJVPASMB":
                    o = "STRING";
                    return(CoreManager.ExecuteAssembly(Encoding.UTF8.GetString(data), null));

                case "EJVPINST":
                    o = "STRING";
                    return(CoreManager.ExecuteInstruction(Encoding.UTF8.GetString(data)));

                case "SHUTDOWN":
                    o = "STRING";
                    KAVE.Windows.WindowsControl.Shutdown(Int32.Parse(Encoding.UTF8.GetString(data)));
                    return("Computer will shutdown in " + Encoding.UTF8.GetString(data) + " seconds");

                case "REBOOTPC":
                    o = "STRING";
                    KAVE.Windows.WindowsControl.Reboot(Int32.Parse(Encoding.UTF8.GetString(data)));
                    return("Computer will reboot in " + Encoding.UTF8.GetString(data) + " seconds");

                case "ABORSHUT":
                    o = "STRING";
                    KAVE.Windows.WindowsControl.AbortShutdown();
                    return("Session end will abort ");

                case "EJECTDVD":
                    o = "STRING";
                    KAVE.Windows.HardwareControl.EjectDrive(Encoding.UTF8.GetString(data));
                    return("Drive " + Encoding.UTF8.GetString(data) + " was successfully ejected");

                case "DEVICEDI":
                    o = "STRING";
                    KAVE.Windows.HardwareControl.SetDeviceState(new string[] { Encoding.UTF8.GetString(data) }, false);
                    return("Device " + Encoding.UTF8.GetString(data) + " was successfully disabled");

                case "DEVICENA":
                    o = "STRING";
                    KAVE.Windows.HardwareControl.SetDeviceState(new string[] { Encoding.UTF8.GetString(data) }, true);
                    return("Device " + Encoding.UTF8.GetString(data) + " was successfully enabled");

                case "DIRECTIO":
                    o = "STRING";
                    string[]      sat = Encoding.UTF8.GetString(data).Split(',');
                    StringBuilder sb  = new StringBuilder();
                    foreach (string s in GetDirection(sat[0], sat[1], sat[2]))
                    {
                        sb.Append(s + "  " + Environment.NewLine);
                    }
                    return(sb.ToString());

                case "DEVICELS":
                    o = "STRING";
                    StringBuilder sasb = new StringBuilder();
                    foreach (string s in KAVE.Windows.HardwareControl.GetAllDevices())
                    {
                        sasb.Append(s + "  " + Environment.NewLine);
                    }
                    return(sasb.ToString());

                case "SCANPATH":
                    o = "STRING";
                    ScanForm sfrm = new ScanForm(ScanType.Zone, Encoding.UTF8.GetString(data));
                    sfrm.quickscanbtn.Enabled    = false;
                    sfrm.cancelquickscan.Enabled = true;
                    sfrm.scanworker.RunWorkerAsync();
                    sfrm.fullscanlist.Items.Clear();
                    sfrm.Show();
                    return("Scanning path");

                case "FASTSCAN":
                    o    = "STRING";
                    sfrm = new ScanForm(ScanType.Quick, null);
                    sfrm.Show();
                    sfrm.quickscanbtn.Enabled    = false;
                    sfrm.cancelquickscan.Enabled = true;
                    sfrm.scanworker.RunWorkerAsync();
                    sfrm.fullscanlist.Items.Clear();

                    return(" fast Scanning");

                case "FULLSCAN":
                    o    = "STRING";
                    sfrm = new ScanForm(ScanType.Full, null);
                    sfrm.Show();
                    sfrm.quickscanbtn.Enabled    = false;
                    sfrm.cancelquickscan.Enabled = true;
                    sfrm.scanworker.RunWorkerAsync();
                    sfrm.fullscanlist.Items.Clear();

                    return(" Full Scanning");

                case "WIKIPEDI":
                    o = "STRING";
                    string[] t = Encoding.UTF8.GetString(data).Split(',');
                    return(SearchWikipedia(t[0], t[1]));

                case "SENDSMST":
                    o = "STRING";
                    string[] st = Encoding.UTF8.GetString(data).Split(',');
                    SMSNeuron.SendBulkSMS(st[0], st[1], st[2], st[3]);
                    return("SMS Message Sent");

                case "EVALEXPR":
                    o = "STRING";
                    ExpressionEval expr = new ExpressionEval();
                    expr.Expression = Encoding.UTF8.GetString(data);
                    return(expr.Evaluate());

                case "SOLVPOLY":
                    o = "STRING";
                    List <double> src = new List <double>();
                    foreach (string s in Encoding.UTF8.GetString(data).Split(','))
                    {
                        src.Add(Convert.ToDouble(s));
                    }

                    List <double> sd   = SolveEquation.SolveEquations.SolvePolynomialEquation(src);
                    StringBuilder sssb = new StringBuilder();
                    int           a    = 0;
                    foreach (double di in sd)
                    {
                        a++;
                        sssb.AppendLine("s" + a.ToString() + "=" + di.ToString());
                    }

                    return(sssb.ToString());

                case "SOLVLINE":
                    o = "STRING";
                    string[] se = Encoding.UTF8.GetString(data).Split('|');
                    int      l  = se.Length;
                    double[,] d = new double[se.Length, se.Length + 1];
                    int j = 0;
                    int i = 0;
                    foreach (string si in se)
                    {
                        foreach (string sk in si.Split(','))
                        {
                            d[i, j] = Double.Parse(sk);

                            j++;
                        }
                        j = 0;
                        i++;
                    }

                    double[]      sol = SolveEquation.SolveEquations.SolveLinearEquation(d);
                    StringBuilder ssb = new StringBuilder();
                    i = 0;
                    foreach (double so in sol)
                    {
                        i++;
                        ssb.AppendLine("s" + i + "=" + so);
                    }

                    return(ssb.ToString());
                }
            }
            catch (Exception ex)
            {
                o = "STRING";
                return(ex.Message);
            }
            o = "STRING";
            return("no action for this command");
        }