예제 #1
0
파일: P0102.cs 프로젝트: slawer/sgt
        /// <summary>
        /// Сохранить параметр в Xml узел
        /// </summary>
        /// <param name="document">XML документ, куда будет добавлен данный XmlNode</param>
        /// <returns>Узел в котором сохранен параметр</returns>
        public override XmlNode Save(XmlDocument document)
        {
            XmlNode root = base.Save(document);

            if (root != null)
            {
                if (slim.TryEnterReadLock(100))
                {
                    try
                    {
                        XmlNode SourceTypeNode = document.CreateElement(SourceTypeName);

                        SourceTypeNode.InnerText = s_type.ToString();
                        root.AppendChild(SourceTypeNode);

                        return(root);
                    }
                    finally
                    {
                        slim.ExitReadLock();
                    }
                }
            }

            return(null);
        }
예제 #2
0
        public Sensor(string name, int index, bool defaultHidden,
                      SensorType sensorType, Hardware hardware,
                      ParameterDescription[] parameterDescriptions, ISettings settings)
        {
            this.index         = index;
            this.defaultHidden = defaultHidden;
            this.sensorType    = sensorType;
            this.hardware      = hardware;
            this.identifier    = new Identifier(hardware.Identifier,
                                                sensorType.ToString().ToLowerInvariant(),
                                                index.ToString(CultureInfo.InvariantCulture));
            this.identifierString = this.identifier.ToString();
            Parameter[] parameters = new Parameter[parameterDescriptions == null ?
                                                   0 : parameterDescriptions.Length];
            for (int i = 0; i < parameters.Length; i++)
            {
                parameters[i] = new Parameter(parameterDescriptions[i], this, settings);
            }
            this.parameters = parameters;

            this.settings    = settings;
            this.defaultName = name;
            this.name        = settings.GetValue(
                new Identifier(Identifier, "name").ToString(), name);

            GetSensorValuesFromSettings();

            hardware.Closing += delegate(IHardware h)
            {
                SetSensorValuesToSettings();
            };
        }
예제 #3
0
        protected string GetPNId(SensorType type, SensorMode mode)
        {
            string pnId = null;

            do
            {
                if (type < 0 || mode < 0)
                {
                    break;
                }

                switch (type)
                {
                case SensorType.Source:
                case SensorType.Sink:
                    pnId = type.ToString();
                    break;

                default:
                    pnId = mode.ToString();
                    break;
                } // switch
            } while (false);

            return(pnId);
        }
예제 #4
0
파일: Sensor.cs 프로젝트: GangDang/ntminer
        public Sensor(string name, int index, SensorType sensorType, Hardware hardware, Parameter[] parameterDescriptions)
        {
            Index      = index;
            SensorType = sensorType;
            Parameters = parameterDescriptions;

            Name       = name;
            Identifier = $"{hardware.Identifier}/{SensorType.ToString()}/{Index.ToString()}";
        }
 // Use this for initialization
 private void Start()
 {
     if (!IsSupportedSensor)
     {
         if (OnError != null)
         {
             OnError.Invoke("Not supported: " + sensorType.ToString());
         }
     }
 }
예제 #6
0
        public async Task <Sensor> GetByBoxIdAndTypeAsync(string boxId, SensorType type)
        {
            var table = _client.GetTableClient(_tableName);
            await table.CreateIfNotExistsAsync();

            var sensorTypeString = type.ToString("G");
            var entityPages      = table.QueryAsync <TableEntity>(x => x.PartitionKey == boxId && x.RowKey == sensorTypeString);

            return((await entityPages.AsPages().FirstOrDefaultAsync())?.Values.Select(SensorMapper.Map).FirstOrDefault());
        }
예제 #7
0
        private string GetSensorType(SensorType sensorType)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(sensorType.ToString());

            switch (sensorType)
            {
            case SensorType.Voltage:
                sb.Append("V/mV");
                break;

            case SensorType.Clock:
                sb.Append("MHz");
                break;

            case SensorType.Temperature:
                sb.Append("°C");
                break;

            case SensorType.Load:
                sb.Append("%");
                break;

            case SensorType.Fan:
                sb.Append("RPM");
                break;

            case SensorType.Flow:
                break;

            case SensorType.Control:
                sb.Append("");
                break;

            case SensorType.Level:
                break;

            case SensorType.Factor:
                break;

            case SensorType.Power:
                sb.Append("W");
                break;

            case SensorType.Data:
                break;

            default:
                break;
            }

            return(sb.ToString());
        }
예제 #8
0
        public async Task <SensorAlarm> GetBySensorBoxIdAndSensorTypeAndStatusAsync(string sensorBoxId, SensorType sensorType, AlarmStatus status)
        {
            var table = _client.GetTableClient(_tableName);
            await table.CreateIfNotExistsAsync();

            var sensorTypeString  = sensorType.ToString("G");
            var alarmStatusString = status.ToString("G");
            var entityPages       = table.QueryAsync <TableEntity>($"{nameof(TableEntity.PartitionKey)} eq '{sensorBoxId}' and {nameof(SensorAlarm.SensorType)} eq '{sensorTypeString}' and {nameof(SensorAlarm.Status)} eq '{alarmStatusString}'");

            return((await entityPages.AsPages().FirstOrDefaultAsync())?.Values.Select(SensorAlarmMapper.Map).FirstOrDefault());
        }
예제 #9
0
 private static string Label(SensorType s)
 {
     return(s switch
     {
         SensorType.Clock => "MHz",
         SensorType.Temperature => "°C",
         SensorType.Power => "Watts",
         SensorType.Load => "%",
         SensorType.Voltage => "V",
         SensorType.Fan => "RPM",
         _ => s.ToString()
     });
예제 #10
0
        /// <summary>
        /// Sets the active sensor from the list of available sensors.
        /// </summary>
        /// <param name="sensorType">The sensor type to set as active.</param>
        private void SetActiveSensor(SensorType sensorType)
        {
            ISensor sensor;

            if (GetSensor(sensorType, out sensor))
            {
                activeSensor = sensor;
            }
            else
            {
                throw new System.ArgumentException("Sensor " + sensorType.ToString() + " unavailable.");
            }
        }
예제 #11
0
        private OpenHardwareSensorType MapSensorType(SensorType type)
        {
            switch (type)
            {
            case OpenHardwareMonitor.Hardware.SensorType.Clock:
                return(OpenHardwareSensorType.Clock);

            case OpenHardwareMonitor.Hardware.SensorType.Temperature:
                return(OpenHardwareSensorType.Temperature);

            case OpenHardwareMonitor.Hardware.SensorType.Load:
                return(OpenHardwareSensorType.Load);

            case OpenHardwareMonitor.Hardware.SensorType.Fan:
                return(OpenHardwareSensorType.Fan);

            default:
                throw new NotImplementedException(type.ToString());
            }
        }
        public static Visualizer CreateVisualizer(SensorUnity sensorUnity, SensorType sensorType)
        {
            Type finalVisualizerType = null;

            foreach (Type visualizerType in typeof(Visualizer).Assembly.GetTypes())
            {
                VisualizerAttribute visualizerAttribute = (VisualizerAttribute)visualizerType.GetCustomAttribute(typeof(VisualizerAttribute));
                if (visualizerAttribute != null && !visualizerType.IsInterface && visualizerAttribute.type == sensorType)
                {
                    if (visualizerAttribute.unity == sensorUnity)
                    {
                        finalVisualizerType = visualizerType;
                        break;
                    }
                    finalVisualizerType = visualizerType;
                }
            }
            if (finalVisualizerType == null)
            {
                throw new Exception("There is no visualizer supporting the type: " + sensorType.ToString());
            }
            return((Visualizer)Activator.CreateInstance(finalVisualizerType));
        }
        //         void cfg_OnUserUpdateControledDevices(List<DeviceAssociation> ControledDevices)
        //         {
        //             //             ZBClass class2 = new ZBClass();
        //             //             class2.header = class2.GetBytesFromString("ZSIG");
        //             //             class2.command = 11;
        //             //             class2.alphacommand = class2.GetBytesFromString("SendCmd");
        //             //             class2.label_base = class2.GetBytesFromString("");
        //             //             class2.command_text = class2.GetBytesFromString("");
        //             //             class2.serial = 0;
        //             //             class2.param1 = 1;
        //             //             class2.param2 = 22;
        //             //             class2.param3 = 0;
        //             //             class2.param4 = 0;
        //             //             byte[] rBuff = null;
        //             //             byte[] bytes = class2.GetBytes();
        //             //             ZibaseDll.ZBClass zb = new ZibaseDll.ZBClass();
        //             //             zb.UDPDataTransmit(bytes, ref rBuff, "192.168.0.210", 0xc34f);
        //
        //             m_Config.ControledDevices = ControledDevices;
        //             //m_ControledDevices = ControledDevices;
        //             try
        //             {
        //                 Util.SerializeToXml(m_Config, ConfigFilePath);
        //             }
        //             catch (Exception ex)
        //             {
        //                 HsObjet.getInstance().WriteLog("Error", ex.Message);
        //             }
        //
        //         }
        void cfg_OnUserAddDevice(char hc, int dc, string DeviceName, SensorType st)
        {
            Scheduler.Classes.DeviceClass dev = HsObjet.getInstance().NewDeviceEx(DeviceName);
            dev.dc = dc.ToString();
            dev.hc = hc.ToString();
            dev.@interface = HSPI.PlugInName;
            dev.iomisc = DeviceName + " " + st.ToString() + " zibase_sensor";
            dev.misc = 0x10; //status only

            var q = m_SensorDataManager.SensorList.Where(x => x.ID == DeviceName);
            if (q.Any())
            {
                Device AddedDevice = q.First();
                var AddedDeviceValue = AddedDevice.Values.First(x => x.ValueType == st);
                if (AddedDeviceValue != null)
                {
                    AddedDeviceValue.AlreadyInHS = true;
                    AddedDeviceValue.HSDevice = dev;
                    AddedDeviceValue.HSUpdate();
                }
            }
            m_SensorDataManager.HSDevice.Add(dev);
        }
예제 #14
0
 private void UpdateSensorLabel(TextBlock label, SensorType sensorType)
 {
     label.Text       = sensorType.ToString();
     label.Foreground = new SolidColorBrush(Colors.Black);
 }
        private void UpdateValue(Device sd, ZibaseDll.ZiBase.SensorInfo si, SensorType st)
        {
            DeviceValue dv = null;

            var q = sd.Values.Where(x => x.ValueType == st);
            if (q.Any())
            {
                dv = q.First();
                dv.Value = si.sHTMLValue;

                if (st == SensorType.ENERGY_KW || st == SensorType.ENERGY_KWH)
                {
                    String[] splitted = si.sValue.Split(new char[] { ' ' });
                    if (splitted.Length == 2)
                    {
                        float val = Convert.ToSingle(dv.Value,System.Globalization.CultureInfo.InvariantCulture); // Convert.ToInt32(splitted[0]);
                        //val /= 1000.0F;
                        dv.DisplayValue = val + " " + splitted[1];
                    }
                }
                else
                    dv.DisplayValue = si.sValue;
            }
            else
            {
                dv = new DeviceValue {Value = si.sHTMLValue, ValueType = st};
                if (st == SensorType.ENERGY_KW || st == SensorType.ENERGY_KWH)
                {
                    String[] splitted = si.sValue.Split(new char[] { ' ' });
                    if (splitted.Length == 2)
                    {
                        //float val = Convert.ToInt32(splitted[0]);
                        //val /= 1000.0F;
                        float val = Convert.ToSingle(dv.Value, System.Globalization.CultureInfo.InvariantCulture); // Convert.ToInt32(splitted[0]);
                        dv.DisplayValue = val + " " + splitted[1];
                    }
                }
                else
                    dv.DisplayValue = si.sValue;
                sd.Values.Add(dv);
            }

            // if no HSDevice associated,look for the current device in HS
            // IOMisc contains the ID followed by the SensorType
            if (dv.HSDevice == null)
            {
                var q2 = HSDevice.Where(x => x.iomisc.Contains(si.sID) && x.iomisc.Contains(st.ToString()));

                if (q2.Any())
                {
                    dv.AlreadyInHS = true;
                    dv.HSDevice = q2.First();
                }
            }
            dv.DwValue = si.dwValue;
            dv.HSUpdate();
        }
예제 #16
0
 /// <summary>
 /// Gets the name of the file.
 /// </summary>
 /// <param name="sensorType">Type of the sensor.</param>
 /// <param name="updateInterval">The update interval.</param>
 /// <param name="annLogicType">Type of the ANN logic.</param>
 /// <returns></returns>
 public string GetFileName(SensorType sensorType, int updateInterval, ANNLogicType annLogicType)
 {
     return string.Format(sensorType.ToString(), "_", updateInterval.ToString(), "_", annLogicType.ToString());
 }
예제 #17
0
        public TypeNode(SensorType sensorType, IHardware hardware,
                        PersistentSettings settings) : base()
        {
            this.settings   = settings;
            this.sensorType = sensorType;
            this.hardware   = hardware;

            switch (sensorType)
            {
            case SensorType.Voltage:
                this.Image = Utilities.EmbeddedResources.GetImage("voltage.png");
                this.Text  = "Voltages";
                break;

            case SensorType.Clock:
                this.Image = Utilities.EmbeddedResources.GetImage("clock.png");
                this.Text  = "Clocks";
                break;

            case SensorType.Load:
                this.Image = Utilities.EmbeddedResources.GetImage("load.png");
                this.Text  = "Load";
                break;

            case SensorType.Temperature:
                this.Image = Utilities.EmbeddedResources.GetImage("temperature.png");
                this.Text  = "Temperatures";
                break;

            case SensorType.Fan:
                this.Image = Utilities.EmbeddedResources.GetImage("fan.png");
                this.Text  = "Fans";
                break;

            case SensorType.Flow:
                this.Image = Utilities.EmbeddedResources.GetImage("flow.png");
                this.Text  = "Flows";
                break;

            case SensorType.Control:
                this.Image = Utilities.EmbeddedResources.GetImage("control.png");
                this.Text  = "Controls";
                break;

            case SensorType.Level:
                this.Image = Utilities.EmbeddedResources.GetImage("level.png");
                this.Text  = "Levels";
                break;

            case SensorType.Power:
                this.Image = Utilities.EmbeddedResources.GetImage("power.png");
                this.Text  = "Powers";
                break;

            case SensorType.Data:
                this.Image = Utilities.EmbeddedResources.GetImage("data.png");
                this.Text  = "Data";
                break;

            case SensorType.SmallData:
                this.Image = Utilities.EmbeddedResources.GetImage("data.png");
                this.Text  = "Data";
                break;

            case SensorType.Factor:
                this.Image = Utilities.EmbeddedResources.GetImage("factor.png");
                this.Text  = "Factors";
                break;

            case SensorType.Throughput:
                this.Image = Utilities.EmbeddedResources.GetImage("throughput.png");
                this.Text  = "Throughput";
                break;
            }

            NodeAdded   += new NodeEventHandler(TypeNode_NodeAdded);
            NodeRemoved += new NodeEventHandler(TypeNode_NodeRemoved);

            this.expandedIdentifier = new Identifier(new Identifier(hardware.Identifier,
                                                                    sensorType.ToString().ToLowerInvariant()), "expanded");
            base.IsExpanded =
                settings.GetValue(expandedIdentifier.ToString(), base.IsExpanded);
        }
예제 #18
0
        public TypeNode(SensorType sensorType, Identifier parentId, PersistentSettings settings)
        {
            SensorType          = sensorType;
            _expandedIdentifier = new Identifier(parentId, SensorType.ToString(), ".expanded").ToString();
            _settings           = settings;

            switch (sensorType)
            {
            case SensorType.Voltage:
                Image = Utilities.EmbeddedResources.GetImage("voltage.png");
                Text  = "Voltages";
                break;

            case SensorType.Clock:
                Image = Utilities.EmbeddedResources.GetImage("clock.png");
                Text  = "Clocks";
                break;

            case SensorType.Load:
                Image = Utilities.EmbeddedResources.GetImage("load.png");
                Text  = "Load";
                break;

            case SensorType.Temperature:
                Image = Utilities.EmbeddedResources.GetImage("temperature.png");
                Text  = "Temperatures";
                break;

            case SensorType.Fan:
                Image = Utilities.EmbeddedResources.GetImage("fan.png");
                Text  = "Fans";
                break;

            case SensorType.Flow:
                Image = Utilities.EmbeddedResources.GetImage("flow.png");
                Text  = "Flows";
                break;

            case SensorType.Control:
                Image = Utilities.EmbeddedResources.GetImage("control.png");
                Text  = "Controls";
                break;

            case SensorType.Level:
                Image = Utilities.EmbeddedResources.GetImage("level.png");
                Text  = "Levels";
                break;

            case SensorType.Power:
                Image = Utilities.EmbeddedResources.GetImage("power.png");
                Text  = "Powers";
                break;

            case SensorType.Data:
                Image = Utilities.EmbeddedResources.GetImage("data.png");
                Text  = "Data";
                break;

            case SensorType.SmallData:
                Image = Utilities.EmbeddedResources.GetImage("data.png");
                Text  = "Data";
                break;

            case SensorType.Factor:
                Image = Utilities.EmbeddedResources.GetImage("factor.png");
                Text  = "Factors";
                break;

            case SensorType.Frequency:
                Image = Utilities.EmbeddedResources.GetImage("clock.png");
                Text  = "Frequencies";
                break;

            case SensorType.Throughput:
                Image = Utilities.EmbeddedResources.GetImage("throughput.png");
                Text  = "Throughput";
                break;
            }

            NodeAdded   += TypeNode_NodeAdded;
            NodeRemoved += TypeNode_NodeRemoved;
            _expanded    = settings.GetValue(_expandedIdentifier, true);
        }
예제 #19
0
        // tries to find the sensor and the action from iot central command data
        public static ActionParameter DecodeSensorCommandAction(IEnumerable <Beacon> beacons, string bluetoothAddressAsString, string sensorAsString, string actionAsString, out string errors)
        {
            // decode BLE address and CommandAction parameter
            ActionParameter actionParameter = DecodeDeviceCommandAction(beacons, bluetoothAddressAsString, actionAsString, out errors);

            if (actionParameter == null)
            {
                return(null);
            }

            // check if sensor type arguments are null or empty
            errors = $"Error decoding sensor changed command:{Environment.NewLine}";
            Boolean error = false;

            if (String.IsNullOrWhiteSpace(sensorAsString) == true)
            {
                error   = true;
                errors += $"Argument sensor is empty{Environment.NewLine}";
            }

            // decode sensor type
            SensorType sensorType = Helper.DecodeSensorType(sensorAsString);

            if (sensorType == SensorType.None)
            {
                error   = true;
                errors += $"Invalid sensor {sensorAsString}{Environment.NewLine}";
            }

            if (error == false)
            {
                // find sensor for sensor type in beacon
                actionParameter.SensorData = actionParameter.Beacon.SensorDatas.FirstOrDefault(s => s.SensorType == sensorType);
                if (actionParameter.SensorData == null)
                {
                    error   = true;
                    errors += $"No sensor for bluetooth address 0x{actionParameter.Beacon.BluetoothAddress:X} sensor type {sensorType.ToString()}{Environment.NewLine}";
                }
                else
                {
                    return(actionParameter);
                }
            }
            return(null);
        }
예제 #20
0
 /// <summary>
 /// Sets the sensor type
 /// </summary>
 /// <param name="type">The type to set</param>
 public void SetType(SensorType type)
 {
     this.type = type.ToString();
 }
예제 #21
0
 public string toString()
 {
     return(HardwareName.ToString() + ";" + sensorType.ToString() + ";" + name.ToString() + ";" + value.ToString());
 }