Beispiel #1
0
        private void rock_Load(object sender, EventArgs e)
        {
            // create brick object and connect it to robot
            brick = new Brick <Sensor, Sensor, Sensor, Sensor>(Connect.Globalvariable.sComPort);
            //brick.Connection.Open();

            // Create touch sensor and connect it to port 2
            sensorTouch   = new TouchSensor();
            brick.Sensor2 = sensorTouch;

            // update form with brick details
            lblConnnection.Text = "Connected to EV3 Robot";

            // Create an IR sensor and connect it to port 4
            sensorDistance = new IRSensor();
            brick.Sensor4  = sensorDistance;

            // Create a colour sensor and connect it to port 3
            sensorColour  = new ColorSensor();
            brick.Sensor3 = sensorColour;

            // Set ports for synchronised motor vehicle
            brick.Vehicle.LeftPort  = MotorPort.OutB;
            brick.Vehicle.RightPort = MotorPort.OutC;
        }
Beispiel #2
0
        public Form1()
        {
            try
            {
                Nuitrack.Init("");
            }
            catch (System.Exception exception)
            {
                Console.WriteLine("Cannot initialize Nuitrack.");
                throw exception;
            }

            try
            {
                // Create and setup all required modules
                _depthSensor     = DepthSensor.Create();
                _colorSensor     = ColorSensor.Create();
                _userTracker     = UserTracker.Create();
                _skeletonTracker = SkeletonTracker.Create();
            }
            catch (System.Exception exception)
            {
                Console.WriteLine("Cannot create Nuitrack module.");
                throw exception;
            }

            _depthSensor.SetMirror(false);

            // Add event handlers for all modules
            _depthSensor.OnUpdateEvent             += onDepthSensorUpdate;
            _colorSensor.OnUpdateEvent             += onColorSensorUpdate;
            _userTracker.OnUpdateEvent             += onUserTrackerUpdate;
            _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate;

            Nuitrack.onIssueUpdateEvent += onIssueDataUpdate;

            mode      = _depthSensor.GetOutputMode();
            colorMode = _colorSensor.GetOutputMode();

            if (mode.XRes < colorMode.XRes)
            {
                mode.XRes = colorMode.XRes;
            }
            if (mode.YRes < colorMode.YRes)
            {
                mode.YRes = colorMode.YRes;
            }

            _bitmap = new DirectBitmap(mode.XRes, mode.YRes);
            for (int y = 0; y < mode.YRes; ++y)
            {
                for (int x = 0; x < mode.XRes; ++x)
                {
                    _bitmap.SetPixel(x, y, Color.FromKnownColor(KnownColor.Aqua));
                }
            }

            InitializeComponent();
        }
        public Robot(Brick brick, ILogger <Robot> logger)
        {
            Brick  = brick;
            Logger = logger;

            ColorSensor colorSensor = brick.FindDevice <ColorSensor>("colorSensor");

            colorSensor.InputChanged += ColorSensor_InputChanged;
        }
Beispiel #4
0
 /// <summary>
 /// returns the current colorId of the EV3ColorSensor
 /// </summary>
 /// <returns>
 /// int: the current colorId seen by the EV3ColorSensor
 /// </returns>
 public static RGBColor GetRGBColor()
 {
     if (ColorSensor != null)
     {
         return(ColorSensor.ReadRGB());
     }
     else
     {
         Robot.Print("color sensor not initialized!");
         return(null);
     }
 }
Beispiel #5
0
        public static void Main(string[] args)
        {
            const string to       = "*****@*****.**";
            const string from     = "*****@*****.**";
            const string password = "******";

            ManualResetEvent terminateProgram = new ManualResetEvent(false);
            var          colorSensor          = new ColorSensor(SensorPort.In1);
            ButtonEvents buts        = new ButtonEvents();
            SmtpClient   smptpClient = new SmtpClient("smtp.gmail.com", 587);

            smptpClient.EnableSsl             = true;
            smptpClient.UseDefaultCredentials = false;
            smptpClient.Credentials           = new NetworkCredential(from, password);
            smptpClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
            ServicePointManager.ServerCertificateValidationCallback =
                delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
            { return(true); };
            MailMessage message = new MailMessage();

            message.To.Add(to);
            message.From    = new MailAddress(from);
            message.Subject = "Color mail from my EV3";
            LcdConsole.Clear();
            LcdConsole.WriteLine("Use color on port1");
            LcdConsole.WriteLine("Enter send mail");
            LcdConsole.WriteLine("Esc. terminate");
            buts.EscapePressed += () => {
                terminateProgram.Set();
            };
            buts.EnterPressed += () => {
                LcdConsole.WriteLine("Sending email");
                try{
                    message.Body = "EV3 read color: " + colorSensor.ReadColor();
                    smptpClient.Send(message);
                    LcdConsole.WriteLine("Done sending email");
                }
                catch (Exception e)
                {
                    LcdConsole.WriteLine("Failed to send email");
                    Console.WriteLine(e.StackTrace);
                }
            };
            terminateProgram.WaitOne();
            message = null;
        }
Beispiel #6
0
        /* Initialize the Nuitrack Environment */
        private void Initialize()
        {
            try {
                Nuitrack.Init("");
            }
            catch (nuitrack.Exception exception) {
                Console.WriteLine("Cannot initialize Nuitrack.");
                throw exception;
            }
            // Select the device
            _device = SelectDevice();

            // Select video configurations
            _configVideo = SelectVideoMode();


            // Activate the license
            ActivateDevice();

            Nuitrack.SetDevice(_device);

            // Add modules Sensors
            _depthSensor     = DepthSensor.Create();
            _colorSensor     = ColorSensor.Create();
            _userTracker     = UserTracker.Create();
            _skeletonTracker = SkeletonTracker.Create();

            // Add modules Events Handlers
            _depthSensor.OnUpdateEvent             += onDepthSensorUpdate;
            _colorSensor.OnUpdateEvent             += onColorSensorUpdate;
            _userTracker.OnUpdateEvent             += onUserTrackerUpdate;
            _userTracker.OnNewUserEvent            += onUserTrackerNewUser;
            _userTracker.OnLostUserEvent           += onUserTrackerLostUser;
            _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate;

            // Connect to remote
            _streamer = SelectStreamer();


            // Run Nuitrack
            Nuitrack.Run();
            _running = true;

            Console.WriteLine("Nuitrack is Running...");
        }
        public static IObservable <ColorFrameEventArgs> ColorFrameArrived(ColorSensor sensor)
        {
            if (sensor is null)
            {
                return(Observable.Empty <ColorFrameEventArgs>());
            }

            return(Observable.FromEvent <ColorSensor.OnUpdate, ColorFrameEventArgs>(handler =>
            {
                ColorSensor.OnUpdate cfaHandler = (x) =>
                {
                    handler(new ColorFrameEventArgs(x));
                };

                return cfaHandler;
            },
                                                                                    cfaHandler => sensor.OnUpdateEvent += cfaHandler,
                                                                                    cfaHandler => sensor.OnUpdateEvent -= cfaHandler));
        }
Beispiel #8
0
        public static void Main(string[] args)
        {
            ManualResetEvent terminateProgram = new ManualResetEvent(false);
            string           fbToken          = "CAACpSl1Qm3cBAHAMyZAY...";//This is not valied
            var          fb          = new FacebookClient(fbToken);
            Lcd          lcd         = new Lcd();
            Font         f           = Font.MediumFont;
            Point        offset      = new Point(0, 25);
            Point        p           = new Point(10, Lcd.Height - 75);
            Point        boxSize     = new Point(100, 24);
            Rectangle    box         = new Rectangle(p, p + boxSize);
            var          colorSensor = new ColorSensor(SensorPort.In1);
            ButtonEvents buts        = new ButtonEvents();

            LcdConsole.WriteLine("Use color on port1");
            LcdConsole.WriteLine("Enter post value");
            LcdConsole.WriteLine("Esc. terminate");
            buts.EscapePressed += () => {
                terminateProgram.Set();
            };

            buts.EnterPressed += () => {
                Color color = colorSensor.ReadColor();
                lcd.Clear();
                lcd.WriteTextBox(f, box + offset * 0, "Color: " + color, true);
                lcd.WriteTextBox(f, box + offset * 1, "Send to Facebook" + color, true);
                lcd.Update();
                colorSensor.ReadColor();
                var    me      = fb.Get("monobrick.dk") as JsonObject;
                var    uid     = me["id"];
                string url     = string.Format("{0}/{1}", uid, "feed");
                var    argList = new Dictionary <string, object>();
                argList["message"] = "A program running MonoBrick Firmware was aked to read the color sensor. Color read: " + colorSensor.ReadColor().ToString();
                fb.Post(url, argList);
            };
            terminateProgram.WaitOne();
        }
Beispiel #9
0
    void Start()
    {
        /*
         * __ _______ __
         |W3| FRONT |W4|
         |__|       |__|
         * __|       |__
         |W1|NXT    |W2|
         |__|_______|__|
         *
         */

        rb = gameObject.GetComponent <Rigidbody>();

        Component[] cmpnts = gameObject.transform.GetComponentsInChildren(typeof(WheelCollider));
        LBWheel = (WheelCollider)cmpnts[0];
        RBWheel = (WheelCollider)cmpnts[1];
        LFWheel = (WheelCollider)cmpnts[2];
        RFWheel = (WheelCollider)cmpnts[3];

        for (int i = 0; i < gameObject.transform.childCount; ++i)
        {
            GameObject gObj = gameObject.transform.GetChild(i).gameObject;

            if (gObj.name.Contains("cross") || gObj.name.Contains("hole"))
            {
                switch (gObj.name[gObj.name.Length - 1])
                {
                case '1':
                    LBWheelTransform = gObj.transform;
                    break;

                case '2':
                    RBWheelTransform = gObj.transform;
                    break;

                case '3':
                    LFWheelTransform = gObj.transform;
                    break;

                case '4':
                    RFWheelTransform = gObj.transform;
                    break;

                default:
                    break;
                }
            }

            if (gObj.name.Contains("WCollider"))
            {
                switch (gObj.name[gObj.name.Length - 1])
                {
                case '1':
                    LBWheel = gObj.GetComponent(typeof(WheelCollider)) as WheelCollider;
                    break;

                case '2':
                    RBWheel = gObj.GetComponent(typeof(WheelCollider)) as WheelCollider;
                    break;

                case '3':
                    LFWheel = gObj.GetComponent(typeof(WheelCollider)) as WheelCollider;
                    break;

                case '4':
                    RFWheel = gObj.GetComponent(typeof(WheelCollider)) as WheelCollider;
                    break;

                default:
                    break;
                }
            }

            if (gObj.name.Contains("SensorColor"))
            {
                GameObject tmp = gObj.transform.Find("Sensor").gameObject;
                cs = tmp.GetComponent <ColorSensor>();
            }
        }

        planeObj         = GameObject.Find("Plane");
        plane            = planeObj.GetComponent <MeshRenderer>().material.mainTexture as Texture2D;
        plane.filterMode = FilterMode.Point;
        if (plane.width > plane.height)
        {
            float ratio = plane.width / plane.height;
            blockX = (int)(planeObj.transform.localScale.z * 2) * (int)ratio;
            blockZ = (int)(planeObj.transform.localScale.x * 2);
        }
        else
        {
            float ratio = plane.height / plane.width;
            blockX = (int)(planeObj.transform.localScale.z * 2);
            blockZ = (int)(planeObj.transform.localScale.x * 2) * (int)ratio;
        }
    }
Beispiel #10
0
 /// <summary>
 /// returns the current colorId of the EV3ColorSensor
 /// </summary>
 /// <returns>
 /// int: the current colorId seen by the EV3ColorSensor
 /// </returns>
 private static int GetColorId()
 {
     return(ColorSensor.Read());
 }
 private void ColorSensor_InputChanged(ColorSensor sensor, ColorSensorValue value)
 {
     Logger.LogInformation($"{sensor.Id} {value.Value}");
     Log.Add(new LogEntry(sensor, value));
 }
 public LogEntry(ColorSensor sensor, ColorSensorValue value)
 {
     ColorSensorId = sensor.Id;
     Value         = value.Value;
     TimeStamp     = DateTime.Now;
 }
Beispiel #13
0
        public MainWindow()
        {
            InitializeComponent();

            try
            {
                Nuitrack.Init();
            }
            catch (nuitrack.Exception exception)
            {
                Debug.WriteLine("Can not initialize Nuitrack. Exception: ", exception);
            }

            try
            {
                // Create and setup all required modules
                _depthSensor       = DepthSensor.Create();
                _colorSensor       = ColorSensor.Create();
                _userTracker       = UserTracker.Create();
                _skeletonTracker   = SkeletonTracker.Create();
                _handTracker       = HandTracker.Create();
                _gestureRecognizer = GestureRecognizer.Create();
            }
            catch (nuitrack.Exception exception)
            {
                Debug.WriteLine("Cannot create Nuitrack module.");
                throw exception;
            }

            // Add event handlers for all modules
            _depthSensor.OnUpdateEvent             += onDepthSensorUpdate;
            _colorSensor.OnUpdateEvent             += onColorSensorUpdate;
            _userTracker.OnUpdateEvent             += onUserTrackerUpdate;
            _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate;
            _handTracker.OnUpdateEvent             += onHandTrackerUpdate;
            _gestureRecognizer.OnNewGesturesEvent  += onNewGestures;

            // Add an event handler for the IssueUpdate event
            Nuitrack.onIssueUpdateEvent += onIssueDataUpdate;

            // Create and configure the Bitmap object according to the depth sensor output mode
            OutputMode mode      = _depthSensor.GetOutputMode();
            OutputMode colorMode = _colorSensor.GetOutputMode();

            if (mode.XRes < colorMode.XRes)
            {
                mode.XRes = colorMode.XRes;
            }
            if (mode.YRes < colorMode.YRes)
            {
                mode.YRes = colorMode.YRes;
            }
            _bitmap = new DirectBitmap(mode.XRes, mode.YRes);

            for (int y = 0; y < mode.YRes; ++y)
            {
                for (int x = 0; x < mode.XRes; ++x)
                {
                    _bitmap.SetPixel(x, y, System.Drawing.Color.FromKnownColor(KnownColor.Aqua));
                }
            }
        }
    // Update is called once per frame
    void Update()
    {
        updateCounter++;
        if (updateCounter >= Settings.statusUpdateNumber)
        {
            string status = "invalid";

            string   objectName;
            string[] nameSubstrings;

            objectName = gameObject.transform.parent.name;

            nameSubstrings = objectName.Split('_');

            int    pos         = objectName.IndexOf('_');
            string cleanedName = objectName.Substring(pos + 1);

            Item i = ItemManager.getInstance().getItem(cleanedName);
            if (i != null)
            {
                status = i.state;
                if (i.type.Equals("Sensor"))
                {
                    status += " " + ((Sensor)i).unit;

                    if (cleanedName.Contains("idscan"))
                    {
                        status = ((NfcReader)i).getName();
                    }
                }
                updateCounter = 0;
                this.transform.GetChild(0).GetChild(1).GetComponent <Text>().text = i.shortName;
                //if(objectName.Contains("dimmer"))
                //    Debug.Log("shortname of " + objectName + " is " + i.shortName + " with status " + status);
            }
            if (i is ColorSensor || i is HueDimmer || i is CoffeeMachineActuator)
            {
                if (i is ColorSensor || i is HueDimmer)
                {
                    byte r, g, b;

                    if (i is ColorSensor)
                    {
                        ColorSensor c = (ColorSensor)i;
                        r = Convert.ToByte(c.r);
                        g = Convert.ToByte(c.g);
                        b = Convert.ToByte(c.b);
                        this.transform.GetChild(0).GetChild(1).GetChild(0).GetComponent <Image>().color = new Color32(r, g, b, 255);
                    }
                    else
                    {
                        HueDimmer hd = (HueDimmer)i;
                        HueColor  c  = hd.hueColor;

                        float hf = (float)c.h / 360;
                        float sf = (float)c.s / 100;
                        float vf = (float)c.v / 100;

                        Color rgbColor = Color.HSVToRGB(hf, sf, vf, false);
                        this.transform.GetChild(0).GetChild(1).GetChild(0).GetComponent <Image>().color = rgbColor;

                        string RGBstring = rgbColor.ToString();

                        int Ri = (int)(rgbColor.r * 255);
                        int Bi = (int)(rgbColor.b * 255);
                        int Gi = (int)(rgbColor.g * 255);

                        string RGBstr = Ri.ToString() + "," + Gi.ToString() + "," + Bi.ToString();
                        Debug.Log(RGBstr);
                        this.transform.GetChild(0).GetChild(1).GetChild(1).GetComponent <Text>().text = RGBstr;
                    }

                    this.transform.GetChild(0).GetChild(2).GetComponent <Text>().text = status;
                }
                else
                {
                    CoffeeMachineActuator c = (CoffeeMachineActuator)i;
                    this.transform.GetChild(0).GetChild(3).GetChild(1).GetComponent <Text>().text = c.getWaterLevel();
                    this.transform.GetChild(0).GetChild(2).GetComponent <Text>().text             = status;
                }
            }
            else
            {
                this.transform.GetChild(0).GetChild(2).GetComponent <Text>().text = status;
            }
        }
    }
Beispiel #15
0
        public MainForm()
        {
            // Initialize Nuitrack. This should be called before using any Nuitrack module.
            // By passing the default arguments we specify that Nuitrack must determine
            // the location automatically.
            try
            {
                Nuitrack.Init("");
            }
            catch (Exception exception)
            {
                Console.WriteLine("Cannot initialize Nuitrack.");
                throw exception;
            }

            try
            {
                // Create and setup all required modules
                _depthSensor       = DepthSensor.Create();
                _colorSensor       = ColorSensor.Create();
                _userTracker       = UserTracker.Create();
                _skeletonTracker   = SkeletonTracker.Create();
                _handTracker       = HandTracker.Create();
                _gestureRecognizer = GestureRecognizer.Create();
            }
            catch (Exception exception)
            {
                Console.WriteLine("Cannot create Nuitrack module.");
                throw exception;
            }

            //_depthSensor.SetMirror(false);

            // Add event handlers for all modules
            _depthSensor.OnUpdateEvent             += onDepthSensorUpdate;
            _colorSensor.OnUpdateEvent             += onColorSensorUpdate;
            _userTracker.OnUpdateEvent             += onUserTrackerUpdate;
            _userTracker.OnNewUserEvent            += onUserTrackerNewUser;
            _userTracker.OnLostUserEvent           += onUserTrackerLostUser;
            _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate;
            _handTracker.OnUpdateEvent             += onHandTrackerUpdate;
            _gestureRecognizer.OnNewGesturesEvent  += onNewGestures;

            // Add an event handler for the IssueUpdate event
            Nuitrack.onIssueUpdateEvent += onIssueDataUpdate;

            // Create and configure the Bitmap object according to the depth sensor output mode
            OutputMode mode      = _depthSensor.GetOutputMode();
            OutputMode colorMode = _colorSensor.GetOutputMode();

            if (mode.XRes < colorMode.XRes)
            {
                mode.XRes = colorMode.XRes;
            }
            if (mode.YRes < colorMode.YRes)
            {
                mode.YRes = colorMode.YRes;
            }

            _bitmap = new DirectBitmap(mode.XRes, mode.YRes);
            for (int y = 0; y < mode.YRes; ++y)
            {
                for (int x = 0; x < mode.XRes; ++x)
                {
                    _bitmap.SetPixel(x, y, Color.FromKnownColor(KnownColor.Aqua));
                }
            }

            // Set fixed form size
            this.MinimumSize = this.MaximumSize = new Size(mode.XRes, mode.YRes);

            // Disable unnecessary caption bar buttons
            this.MinimizeBox = this.MaximizeBox = false;

            // Enable double buffering to prevent flicker
            this.DoubleBuffered = true;

            // Run Nuitrack. This starts sensor data processing.
            try
            {
                Nuitrack.Run();
            }
            catch (Exception exception)
            {
                Console.WriteLine("Cannot start Nuitrack.");
                throw exception;
            }

            this.Show();
        }
Beispiel #16
0
        void Update()
        {
            //if (isSelected || isFocused)
            //{
            //    cubeMeshRenderer.material = style.highlightMat;
            //}
            //else
            //{
            //    cubeMeshRenderer.material = cubeDefaultMat;
            //}

            if (this.c != null)
            {
                updateCounter++;
                colorUpdateCounter++;
                if (updateCounter >= Settings.requestUpdateNumber)
                {
                    if (c.connState.Equals(Connection.States.Active))
                    {
                        Item source = ItemManager.getInstance().getItem(SourceName);
                        Item target = ItemManager.getInstance().getItem(TargetName);
                        if (source is Poti && target is DimmerActuator)
                        {
                            Poti           sPoti   = (Poti)source;
                            DimmerActuator tDimmer = (DimmerActuator)target;

                            int stateDim  = int.Parse(tDimmer.state);
                            int statePoti = int.Parse(sPoti.state);
                            if (statePoti == 0)
                            {
                                StartCoroutine(tDimmer.sendOFF());
                            }
                            else if (statePoti == 100)
                            {
                                StartCoroutine(tDimmer.sendON());
                            }
                            else if (stateDim <= (statePoti - 10))
                            {
                                StartCoroutine(tDimmer.sendINCREASE());
                            }
                            else if (stateDim >= (statePoti + 10))
                            {
                                StartCoroutine(tDimmer.sendDECREASE());
                            }
                        }
                        else
                        {
                            if (source is Poti && target is HueDimmer)
                            {
                                Poti      sPoti   = (Poti)source;
                                HueDimmer hDimmer = (HueDimmer)target;
                                StartCoroutine(hDimmer.sendState(sPoti.state));
                            }
                            else
                            {
                                if (source is ColorSensor && target is HueDimmer)
                                {
                                    if (colorUpdateCounter >= 100)
                                    {
                                        byte        r, g, b;
                                        ColorSensor cs = (ColorSensor)source;
                                        r = Convert.ToByte(cs.r);
                                        g = Convert.ToByte(cs.g);
                                        b = Convert.ToByte(cs.b);

                                        float h, s, v;

                                        Color32 colRgb = new Color32(r, g, b, 255);
                                        Color.RGBToHSV(colRgb, out h, out s, out v);
                                        HueDimmer hDimmer = (HueDimmer)target;

                                        int hr = (int)(h * 360);
                                        int sr = (int)(s * 100);
                                        int vr = (int)(v * 100);

                                        StartCoroutine(hDimmer.sendColor(hr, sr, vr));
                                        colorUpdateCounter = 0;
                                    }
                                }
                            }
                        }
                    }
                    updateCounter = 0;
                }
            }
        }
Beispiel #17
0
    static public void Main()
    {
        Console.CancelKeyPress += new ConsoleCancelEventHandler(consoleEventHandler);
        try
        {
            Nuitrack.Init("");

            // get devices list
            List <NuitrackDevice> devices = Nuitrack.GetDeviceList();
            if (devices.Count == 0)
            {
                throw new nuitrack.Exception("No devices found.");
            }

            // print available devices
            Console.Write("\nAvailable devices:\n");
            for (int i = 0; i < devices.Count; i++)
            {
                Console.WriteLine("    [{0}] {1} ({2}), License: {3}",
                                  i,
                                  devices[i].GetInfo(DeviceInfoType.SERIAL_NUMBER),
                                  devices[i].GetInfo(DeviceInfoType.DEVICE_NAME),
                                  ToString(devices[i].GetActivationStatus()));
            }
            // select a device
            int            devIndex = UserInteraction.AskInt("\nSelect the device number: ", 0, devices.Count);
            NuitrackDevice device   = devices[devIndex];

            // select video modes
            selectDeviceVideoMode(device, StreamType.DEPTH);
            selectDeviceVideoMode(device, StreamType.COLOR);

            // activate selected device
            bool isActivated = Convert.ToBoolean(device.GetActivationStatus());
            if (isActivated)
            {
                isActivated = !UserInteraction.Confirm("The device is already activated. Do you want to reactivate it?");
            }

            if (!isActivated)
            {
                string activationKey = UserInteraction.AskString("Enter the activation key: ");
                device.Activate(activationKey);
                Console.WriteLine("Activation status: {0}", ToString(device.GetActivationStatus()));
            }

            // set device and run Nuitrack
            if (UserInteraction.Confirm("Do you want to run Nuitrack with the selected device?"))
            {
                Nuitrack.SetDevice(device);

                DepthSensor depthSensor = DepthSensor.Create();
                ColorSensor colorSensor = ColorSensor.Create();

                depthSensor.OnUpdateEvent += onDepthSensorUpdate;
                colorSensor.OnUpdateEvent += onColorSensorUpdate;

                Nuitrack.Run();
                _run = true;

                while (!_finished)
                {
                    Nuitrack.WaitUpdate(depthSensor);
                }

                colorSensor.OnUpdateEvent -= onColorSensorUpdate;
                depthSensor.OnUpdateEvent -= onDepthSensorUpdate;
            }

            Nuitrack.Release();
        }
        catch (nuitrack.Exception exception)
        {
            Console.WriteLine("Error: " + exception.ToString());
        }
    }
Beispiel #18
0
 /// <summary>
 /// returns the current color name of the EV3ColorSensor
 /// </summary>
 /// <returns>
 /// string: the current color name seen by the EV3ColorSensor
 /// </returns>
 private static string GetColorName()
 {
     return(ColorSensor.ReadAsString());
 }
 public ColorHueConnection(string id, ColorSensor source, HueDimmer target) : base(id, source, target)
 {
     this.id     = id;
     this.source = source;
     this.target = target;
 }
        /// <summary>
        ///3D扫描的构造函数 -byCQZ 2019.6.16
        ///
        /// </summary>
        private void NuitrackCreate()
        {
            try
            {
                Nuitrack.Init("");
                Console.WriteLine("Initialize succneed.");
            }
            catch (nuitrack.Exception exception)
            {
                Console.WriteLine("Cannot initialize Nuitrack.");
                //throw exception;
                MessageBoxX.Warning("3D摄像头初始化失败,请检查SDK配置和是否进行密钥认证。");
                Application.Current.Shutdown();
            }

            try
            {
                // Create and setup all required modules
                _depthSensor     = DepthSensor.Create();
                _colorSensor     = ColorSensor.Create();
                _userTracker     = UserTracker.Create();
                _skeletonTracker = SkeletonTracker.Create();
                //_handTracker = HandTracker.Create();
                _gestureRecognizer = GestureRecognizer.Create();
            }
            catch (nuitrack.Exception exception)
            {
                Console.WriteLine("Cannot create Nuitrack module.");
                //throw exception;
                MessageBoxX.Warning("3D摄像头初始化失败,请检查SDK配置和是否进行密钥认证。");
                Application.Current.Shutdown();
            }

            _depthSensor.SetMirror(false);
            // Add event handlers for all modules
            _depthSensor.OnUpdateEvent             += onDepthSensorUpdate;
            _colorSensor.OnUpdateEvent             += onColorSensorUpdate;
            _userTracker.OnUpdateEvent             += onUserTrackerUpdate;
            _skeletonTracker.OnSkeletonUpdateEvent += onSkeletonUpdate;
            //_handTracker.OnUpdateEvent += onHandTrackerUpdate;
            _gestureRecognizer.OnNewGesturesEvent += onNewGestures;
            // Add an event handler for the IssueUpdate event
            Nuitrack.onIssueUpdateEvent += onIssueDataUpdate;

            // Create and configure the Bitmap object according to the depth sensor output mode
            OutputMode mode      = _depthSensor.GetOutputMode();
            OutputMode colorMode = _colorSensor.GetOutputMode();

            if (mode.XRes < colorMode.XRes)
            {
                mode.XRes = colorMode.XRes;
            }
            if (mode.YRes < colorMode.YRes)
            {
                mode.YRes = colorMode.YRes;
            }
            Console.WriteLine(mode.XRes + "=====================" + mode.YRes);
            _bitmap = new DirectBitmap(mode.XRes, mode.YRes);
            for (int y = 0; y < mode.YRes; ++y)
            {
                for (int x = 0; x < mode.XRes; ++x)
                {
                    _bitmap.SetPixel(x, y, Color.FromKnownColor(KnownColor.Aqua));
                }
            }
            try
            {
                Nuitrack.Run();
                Console.WriteLine("Start Nuitrack.");
            }
            catch (nuitrack.Exception exception)
            {
                Console.WriteLine("Cannot start Nuitrack.");
                //throw exception;
                MessageBoxX.Warning("3D摄像头启动失败,请检查SDK配置和是否进行密钥认证。");
                Application.Current.Shutdown();
            }
        }
Beispiel #21
0
    public IEnumerator performAction()
    {
        UnityWebRequest www;

        www = UnityWebRequest.Get(requestURL);

        yield return(www.Send());

        while (!www.isDone)
        {
            Debug.LogError(".");
            yield return(null);
        }

        if (www.isError)
        {
            Debug.Log(www.error);
        }
        else
        {
            string temp = www.downloadHandler.text;
#if WINDOWS_UWP
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List <GETResponse>));

            MemoryStream ms     = new MemoryStream();
            StreamWriter writer = new StreamWriter(ms);
            writer.Write(temp);
            writer.Flush();
            ms.Position = 0;
            //get status from json answer
            getResponses = (List <GETResponse>)ser.ReadObject(ms);
#endif
            foreach (string fullItemName in Settings.Items)
            {
                GETResponse singleItemGetResponse = getResponses.Find(x => x.name.Equals(fullItemName));
                if (singleItemGetResponse != null)
                {
                    //gather all info needed to update or create the item in the ItemManager
                    //we need key, name, state, shortName, unit (optionally). We already have key, name, state.
                    //first read in the unit, if existent
                    string unit = "";

                    if (singleItemGetResponse.stateDescription != null && singleItemGetResponse.stateDescription.pattern != null)
                    {
                        string[] stateDesc = singleItemGetResponse.stateDescription.pattern.Split(' ');
                        if (stateDesc.Length > 1)
                        {
                            unit = stateDesc[1];
                            if (unit.EndsWith("%"))
                            {
                                unit = unit.Remove(unit.Length - 1);
                            }
                        }
                    }

                    //next, the shortName
                    string shortName;
                    switch (fullItemName)
                    {
                    case Settings.LinearPoti:
                        shortName = Settings.LinearPoti;
                        break;

                    case Settings.NFCReader:
                        shortName = Settings.NFCReader;
                        break;

                    case Settings.CoffeeMachine:
                        shortName = Settings.CoffeeMachine;
                        break;

                    case Settings.myoArmband:
                        shortName = Settings.myoArmband;
                        break;

                    case Settings.hueLamp1dimmer:
                        shortName = "huedimmer_1";
                        break;

                    case Settings.hueLamp2dimmer:
                        shortName = "huedimmer_2";
                        break;

                    default:
                        string[] tempName = fullItemName.Split('_');
                        shortName = tempName[tempName.Length - 2] + "" + tempName[tempName.Length - 1];
                        break;
                    }

                    //now we have all we need. Update the list!

                    //if the current item is the dimmer, update both sensor and actuator reference
                    if (fullItemName.Contains("homematic_dimmer"))
                    {
                        ItemManager.getInstance().updateItem(fullItemName + "_Sensor", fullItemName, singleItemGetResponse.state, shortName, unit);
                        ItemManager.getInstance().updateItem(fullItemName + "_Actuator", fullItemName, singleItemGetResponse.state, shortName, unit);
                    }
                    else
                    if (fullItemName.Contains("bulb210_color"))
                    {
                        ItemManager.getInstance().updateItem(fullItemName, fullItemName, singleItemGetResponse.state, shortName, unit);
                        HueColor i      = (HueColor)ItemManager.getInstance().getItem(fullItemName);
                        string[] colors = singleItemGetResponse.state.Split(',');
                        int.TryParse(colors[0], out i.h);
                        int.TryParse(colors[1], out i.s);
                        int.TryParse(colors[2], out i.v);
                    }
                    else

                    if (fullItemName.Equals(Settings.colorSensor))
                    {
                        ItemManager.getInstance().updateItem(fullItemName, fullItemName, singleItemGetResponse.state, shortName, unit);
                        ColorSensor c      = (ColorSensor)ItemManager.getInstance().getItem(fullItemName);
                        string[]    colors = singleItemGetResponse.state.Split(',');
                        int.TryParse(colors[0], out c.r);
                        int.TryParse(colors[1], out c.g);
                        int.TryParse(colors[2], out c.b);
                    }
                    else
                    {
                        ItemManager.getInstance().updateItem(fullItemName, fullItemName, singleItemGetResponse.state, shortName, unit);
                    }
                }
            }
            //default case
        }
    }