C# sample code for SPL engine - Simple SPL Evaluator


1. Open C# project file
  1. Double-click "Samples" directory.

 

  1. Double-click "SPLMFEvaluator1" directory.



  2. Double-click "SPLMFEvaluator1.sln" file.



  3. Open Program.cs file.




2. C# code to use SPL Evaluator
  1. Program.cs

      
    
    using System;
    
    using Microsoft.SPOT;
    using Microsoft.SPOT.Input;
    using Microsoft.SPOT.Presentation;
    using Microsoft.SPOT.Presentation.Controls;
    
    using SPL.Script.Engine;
    
    namespace SPLMFEvaluator1
    {
        public class Program : Microsoft.SPOT.Application
        {
            public static void Main()
            {
                Program myApplication = new Program();
    
                Window mainWindow = myApplication.CreateWindow();
    
                GPIOButtonInputProvider inputProvider = new GPIOButtonInputProvider(null);
    
                myApplication.Run(mainWindow);
            }
    
            private Window mainWindow;
    
            //##########################  Sample Code  #################################
            private ConsoleWindow _consoleWindow;
            private Evaluator _evaluator = null;
            private SPLHashtable _GlobalVariables = new SPLHashtable();
            //##########################  Sample Code  #################################
    
            public Window CreateWindow()
            {
                mainWindow = new Window();
                mainWindow.Height = SystemMetrics.ScreenHeight;
                mainWindow.Width = SystemMetrics.ScreenWidth;
    
                //##########################  Sample Code  #################################
                Font font = Resources.GetFont(Resources.FontResources.small);
                _consoleWindow = new ConsoleWindow(font);
    
                mainWindow.Child = _consoleWindow;
                //##########################  Sample Code  #################################
    
                mainWindow.AddHandler(Buttons.ButtonUpEvent, new ButtonEventHandler(OnButtonUp), false);
    
                mainWindow.Visibility = Visibility.Visible;
    
                Buttons.Focus(mainWindow);
    
    
                //##########################  Sample Code  #################################
                _GlobalVariables.Add("a", 100);
                _GlobalVariables.Add("b", 250);
                _GlobalVariables.Add("c", -33);
                _GlobalVariables.Add("d", 12.345);
    
                _evaluator = new Evaluator();
                _evaluator.GlobalVariables = _GlobalVariables;
    
                _consoleWindow.WriteLine("Please push any button!.");
                _consoleWindow.WriteLine("Select button will clear screen.");
                //##########################  Sample Code  #################################
    
                return mainWindow;
            }
    
            private void OnButtonUp(object sender, ButtonEventArgs e)
            {
                Debug.Print(e.Button.ToString());
    
                //##########################  Sample Code  #################################
                if (e.Button == Microsoft.SPOT.Hardware.Button.VK_SELECT)
                {
                    _consoleWindow.ClearConsole();
                    _consoleWindow.WriteLine("a = " + _evaluator.Evaluate("a").ToString());
                    _consoleWindow.WriteLine("b = " + _evaluator.Evaluate("b").ToString());
                    _consoleWindow.WriteLine("c = " + _evaluator.Evaluate("c").ToString());
                    _consoleWindow.WriteLine("d = " + _evaluator.Evaluate("d").ToString());
    
                }
                else if (e.Button == Microsoft.SPOT.Hardware.Button.VK_LEFT)
                {
                    object result = _evaluator.Evaluate("(a - b) * Math.Abs(c)");
    
                    _consoleWindow.WriteLine("(a - b) * Math.Abs(c) = " + result.ToString());
                }
                else if (e.Button == Microsoft.SPOT.Hardware.Button.VK_RIGHT)
                {
                    object result = _evaluator.Evaluate("a + b * Util.ToInt(d)");
    
                    _consoleWindow.WriteLine("a + b * Util.ToInt(d) = " + result.ToString());
                }
                else if (e.Button == Microsoft.SPOT.Hardware.Button.VK_UP)
                {
                    object result = _evaluator.Evaluate("a + b * d");
    
                    _consoleWindow.WriteLine("a + b * d = " + result.ToString());
                }
                else if (e.Button == Microsoft.SPOT.Hardware.Button.VK_DOWN)
                {
                    object result = _evaluator.Evaluate("a / b");
    
                    _consoleWindow.WriteLine("a / b = " + result.ToString());
                }
                //##########################  Sample Code  #################################
            }
        }
    }
    
    
      



3. Execute sample code
  1. Press "F5" key to run sample code.