コード例 #1
0
        public CC2650Sensor()
            : base()
        {
            accelerometer = new Accelerometer();
            humidity      = new HumiditySensor();
            light         = new LightSensor();
            pressure      = new PressureSensor();
            temperature   = new IRTemperatureSensor();
            battery       = new BatteryLevel();

            key = new SimpleKeyService();
            io  = new IOService();

            accelerometer.SensorValueChanged += CC2650Sensor_SensorValueChanged;
            humidity.SensorValueChanged      += CC2650Sensor_SensorValueChanged;
            light.SensorValueChanged         += CC2650Sensor_SensorValueChanged;
            pressure.SensorValueChanged      += CC2650Sensor_SensorValueChanged;
            temperature.SensorValueChanged   += CC2650Sensor_SensorValueChanged;
            battery.SensorValueChanged       += CC2650Sensor_SensorValueChanged;
            key.SensorValueChanged           += CC2650Sensor_SensorValueChanged;
        }
コード例 #2
0
        public override async void Initialize()
        {
            Debug.WriteLine("*CC2650Sensor::Initialize: enter");
            try
            {
                if (await accelerometer.Initialize(accelerometer.SensorServiceUuid))
                {
                    await accelerometer.EnableSensor();

                    await accelerometer.EnableNotifications();

                    Debug.WriteLine("Accelerometer enabled");
                }
                else
                {
                    Debug.WriteLine("Accelerometer doesn't exists");
                }

                if (await humidity.Initialize(humidity.SensorServiceUuid))
                {
                    await humidity.EnableSensor();

                    await humidity.EnableNotifications();

                    Debug.WriteLine("Humidity enabled");
                }
                else
                {
                    Debug.WriteLine("Humidity doesn't exists");
                }

                if (await light.Initialize(light.SensorServiceUuid))
                {
                    await light.EnableSensor();

                    await light.EnableNotifications();

                    Debug.WriteLine("Lightness enabled");
                }
                else
                {
                    Debug.WriteLine("Lightness doesn't exists");
                }

                if (await pressure.Initialize(pressure.SensorServiceUuid))
                {
                    await pressure.EnableSensor();

                    await pressure.EnableNotifications();

                    Debug.WriteLine("Pressure enabled");
                }
                else
                {
                    Debug.WriteLine("Pressure doesn't exists");
                }

                if (await temperature.Initialize(temperature.SensorServiceUuid))
                {
                    await temperature.EnableSensor();

                    await temperature.EnableNotifications();

                    Debug.WriteLine("Temperature enabled");
                }
                else
                {
                    Debug.WriteLine("Temperature doesn't exists");
                }

                if (await key.Initialize(key.SensorServiceUuid))
                {
                    await key.EnableSensor();

                    await key.EnableNotifications();

                    Debug.WriteLine("Simple Key Service enabled");
                }
                else
                {
                    Debug.WriteLine("Simple Key doesn't exists");
                }

                if (await battery.Initialize(battery.SensorServiceUuid))
                {
                    await battery.Setup();

                    byte[] bytes = await BatteryLevel.GetLevel();

                    double bl = BatteryLevel.CalculateBatteryInPercent(bytes);
                    Debug.WriteLine("Battery Level Service enabled=" + (int)bl);
                }
                else
                {
                    Debug.WriteLine("Battery Level doesn't exists");
                }

                if (await io.Initialize(io.SensorServiceUuid))
                {
                    await io.EnableSensor();

                    Debug.WriteLine("IO Service enabled");
                }
                else
                {
                    Debug.WriteLine("IO Service doesn't exists");
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
            Debug.WriteLine("*CC2650Sensor::Initialize: exit");
            InitializedStatus = true;
        }
コード例 #3
0
        private void CC2650Sensor_SensorValueChanged(object sender, SensorValueChangedEventArgs e)
        {
            //Debug.WriteLine("*CC2650Sensor_SensorValueChanged:" + e.Origin);
            switch (e.Origin)
            {
            case SensorName.Accelerometer:
                float[] accValues = Accelerometer.CalculateCoordinates(e.RawData, AccelRange);
                lock (lastSensorReading)
                {
                    lastSensorReading.AccelX = accValues[0];
                    lastSensorReading.AccelY = accValues[1];
                    lastSensorReading.AccelZ = accValues[2];
                    lastSensorReading.GyroX  = accValues[3];
                    lastSensorReading.GyroY  = accValues[4];
                    lastSensorReading.GyroZ  = accValues[5];
                    lastSensorReading.MagX   = accValues[6];
                    lastSensorReading.MagY   = accValues[7];
                    lastSensorReading.MagZ   = accValues[8];
                }
                break;

            case SensorName.HumiditySensor:
                double rh = HumiditySensor.CalculateHumidityInPercent(e.RawData);
                double rt = HumiditySensor.CalculateHumidityTempareture(e.RawData, TemparetureScale);
                lock (lastSensorReading)
                {
                    lastSensorReading.Humidity     = rh;
                    lastSensorReading.HTemperature = rt;
                }
                break;

            case SensorName.LightSensor:
                double rl = LightSensor.CalculateLightnessInLux(e.RawData);
                lock (lastSensorReading)
                {
                    lastSensorReading.Lightness = rl;
                }

                //Special service for Battery here!
                Task <byte[]> task  = Task.Run(() => BatteryLevel.GetLevel());
                byte[]        bytes = task.Result;
                if (bytes != null)
                {
                    double bl = BatteryLevel.CalculateBatteryInPercent(bytes);
                    //Debug.WriteLine("Battery Level:" + (int) bl);
                    lock (lastSensorReading)
                    {
                        lastSensorReading.BatteryLevel = bl;
                    }
                }
                break;

            case SensorName.PressureSensor:
                double hp = (PressureSensor.CalculatePressure(e.RawData));
                double ht = (PressureSensor.CalculatePressureTempareture(e.RawData, TemparetureScale));
                lock (lastSensorReading)
                {
                    lastSensorReading.Pressure     = hp;
                    lastSensorReading.PTemperature = ht;
                }
                break;

            case SensorName.BatteryLevel:
                Debug.WriteLine("Battery Level Service is not here.");
                break;

            case SensorName.SimpleKeyService:
                bool leftKey = false;
                if (SimpleKeyService.LeftKeyHit(e.RawData))
                {
                    leftKey = true;
                    //Debug.WriteLine("leftKey");
                }
                bool rightKey = false;
                if (SimpleKeyService.RightKeyHit(e.RawData))
                {
                    rightKey = true;
                    //Debug.WriteLine("rightKey");
                }
                lock (lastSensorReading)
                {
                    lastSensorReading.LeftKey  = leftKey;
                    lastSensorReading.RightKey = rightKey;
                }
                break;

            case SensorName.TemperatureSensor:
                double ambient = IRTemperatureSensor.CalculateAmbientTemperature(e.RawData, TemparetureScale);
                double target  = IRTemperatureSensor.CalculateTargetTemperature(e.RawData, ambient, TemparetureScale);
                lock (lastSensorReading)
                {
                    lastSensorReading.ATemperature = ambient;
                    lastSensorReading.OTemperature = target;
                }
                break;
            }
        }