using System;
|
using System.Collections.Generic;
|
|
namespace HDL_ON.Entity
|
{
|
public class Sensor
|
{
|
/// <summary>
|
/// 获取名称文本ID
|
/// </summary>
|
/// <param name="spk"></param>
|
/// <returns></returns>
|
public int GetFunctionTypeNameId(string spk)
|
{
|
int nameId = 0;
|
switch (spk)
|
{
|
case SPK.SensorPm25:
|
nameId = StringId.PM25;
|
break;
|
case SPK.SensorCO2:
|
nameId = StringId.CO2;
|
break;
|
case SPK.SensorTemperature:
|
nameId = StringId.Temp;
|
break;
|
case SPK.SensorTVOC:
|
nameId = StringId.TVOC;
|
break;
|
case SPK.SensorHumidity:
|
nameId = StringId.Humidity;
|
break;
|
}
|
return nameId;
|
}
|
/// <summary>
|
///
|
/// </summary>
|
public double GetValues(Function function)
|
{
|
FunctionAttributes attr = function.GetAttribute(FunctionAttributeKey.Value);
|
if (attr == null)
|
{
|
switch (function.spk)
|
{
|
case SPK.SensorCO2:
|
attr = function.GetAttribute(FunctionAttributeKey.Co2);
|
break;
|
case SPK.SensorTemperature:
|
attr = function.GetAttribute(FunctionAttributeKey.Temperature);
|
break;
|
case SPK.SensorTVOC:
|
attr = function.GetAttribute(FunctionAttributeKey.Tvoc);
|
break;
|
case SPK.SensorPm25:
|
attr = function.GetAttribute(FunctionAttributeKey.Pm25);
|
break;
|
case SPK.SensorHcho:
|
attr = function.GetAttribute(FunctionAttributeKey.Hcho);
|
break;
|
case SPK.SensorHumidity:
|
attr = function.GetAttribute(FunctionAttributeKey.Humidity);
|
break;
|
}
|
}
|
double value = 0.0;
|
double.TryParse(attr.state, out value);
|
|
return Convert.ToDouble(value);
|
}
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="value"></param>
|
/// <param name="function"></param>
|
public void SetValues(int value, Function function)
|
{
|
function.SetAttrState(FunctionAttributeKey.Value, value);
|
}
|
|
List<string> _intervalValue = new List<string>();
|
|
public void SetIntervalValue(List<string> intervalValue)
|
{
|
_intervalValue = intervalValue;
|
}
|
|
/// <summary>
|
/// 每个等级对区间值
|
/// </summary>
|
public List<string> GetIntervalValue(string spk)
|
{
|
if(_intervalValue.Count != 0)
|
{
|
return _intervalValue;
|
}
|
_intervalValue = new List<string>();
|
switch (spk)
|
{
|
case SPK.SensorPm25:
|
_intervalValue.Add("0 ~ 35");
|
_intervalValue.Add("36 ~ 75");
|
_intervalValue.Add("76 ~ 115");
|
_intervalValue.Add("115 ~");
|
break;
|
case SPK.SensorCO2:
|
_intervalValue.Add("0 ~ 1000");
|
_intervalValue.Add("1001 ~ 2000");
|
_intervalValue.Add("2001 ~ 5000");
|
_intervalValue.Add("5001 ~");
|
break;
|
case SPK.SensorTemperature:
|
_intervalValue.Add("~ 18°C");
|
_intervalValue.Add("18 ~ 20°C");
|
_intervalValue.Add("20 ~ 25°C");
|
_intervalValue.Add("25 ~ 27°C");
|
_intervalValue.Add("27 ~ 30°C");
|
_intervalValue.Add("30 ~ 33°C");
|
_intervalValue.Add("33°C ~");
|
break;
|
case SPK.SensorTVOC:
|
_intervalValue.Add("0 ~ 600");
|
_intervalValue.Add("601 ~ 2000");
|
_intervalValue.Add("2001 ~ 5000");
|
_intervalValue.Add("5001 ~");
|
break;
|
case SPK.SensorHumidity:
|
_intervalValue.Add("70 ~");
|
_intervalValue.Add("71 ~ 40");
|
_intervalValue.Add("0 ~ 39");
|
break;
|
case SPK.SensorHcho:
|
_intervalValue.Add("~ 0.08");
|
_intervalValue.Add("0.08 ~ 0.1");
|
_intervalValue.Add("0.1 ~ ");
|
break;
|
|
}
|
return _intervalValue;
|
}
|
|
public string Unit(Function function)
|
{
|
string unit = "";
|
|
if (function.attrKeyConfigs.Count > 0)
|
{
|
|
foreach (var attrKey in function.attrKeyConfigs)
|
{
|
if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
|
{
|
if (!string.IsNullOrEmpty(attrKey.unit))
|
return attrKey.unit;
|
}
|
}
|
}
|
|
switch (function.spk)
|
{
|
case SPK.SensorPm25:
|
unit = "ug/m³";
|
break;
|
case SPK.SensorTemperature:
|
unit = "°C";
|
break;
|
case SPK.SensorTVOC:
|
unit = "PPB";
|
break;
|
case SPK.SensorCO2:
|
unit = "PPM";
|
break;
|
case SPK.SensorHumidity:
|
unit = "%";
|
break;
|
case SPK.SensorHcho:
|
unit = "mg/m3";
|
break;
|
}
|
|
return unit;
|
}
|
|
/// <summary>
|
/// 每个等级的颜色值
|
/// </summary>
|
public List<uint> GetLevelColorList(string spk)
|
{
|
var _levelColorList = new List<uint>();
|
switch (spk)
|
{
|
case SPK.SensorPm25:
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
case SPK.SensorCO2:
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
case SPK.SensorTemperature:
|
_levelColorList.Add(0xFF2172FF);
|
_levelColorList.Add(0xCC4484F4);
|
_levelColorList.Add(0x7F4484F4);
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
case SPK.SensorTVOC:
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFFD154);
|
_levelColorList.Add(0xFFFF9D54);
|
_levelColorList.Add(0xFFFF3D3D);
|
|
break;
|
case SPK.SensorHumidity:
|
_levelColorList.Add(0xFF2172FF);
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
case SPK.SensorHcho:
|
_levelColorList.Add(0xFF2172FF);
|
_levelColorList.Add(0xFFADE764);
|
_levelColorList.Add(0xFFFF3D3D);
|
break;
|
default:
|
_levelColorList.Add(0x00000000);
|
_levelColorList.Add(0x00000000);
|
_levelColorList.Add(0x00000000);
|
break;
|
}
|
return _levelColorList;
|
|
}
|
|
/// <summary>
|
/// 每个等级的名称
|
/// </summary>
|
public List<int> GetLevelTextList(string spk)
|
{
|
var _levelTextList = new List<int>();
|
switch (spk)
|
{
|
case SPK.SensorPm25:
|
_levelTextList.Add(StringId.Great);
|
_levelTextList.Add(StringId.Good);
|
_levelTextList.Add(StringId.MildPollution);
|
_levelTextList.Add(StringId.HeavyPollution);
|
break;
|
case SPK.SensorCO2:
|
_levelTextList.Add(StringId.SensorReferenceTipCO2Level1);
|
_levelTextList.Add(StringId.SensorReferenceTipCO2Level2);
|
_levelTextList.Add(StringId.SensorReferenceTipCO2Level3);
|
_levelTextList.Add(StringId.SensorReferenceTipCO2Level4);
|
break;
|
case SPK.SensorTemperature:
|
_levelTextList.Add(StringId.ExtremelyCold);
|
_levelTextList.Add(StringId.Cold);
|
_levelTextList.Add(StringId.SlightlyCold);
|
_levelTextList.Add(StringId.Comfortable);
|
_levelTextList.Add(StringId.TepidFever);
|
_levelTextList.Add(StringId.Heat_SensorTip);
|
_levelTextList.Add(StringId.ExtremeHeat);
|
break;
|
case SPK.SensorTVOC:
|
_levelTextList.Add(StringId.SensorReferenceTVOCTipLevel1);
|
_levelTextList.Add(StringId.SensorReferenceTVOCTipLevel2);
|
_levelTextList.Add(StringId.SensorReferenceTVOCTipLevel3);
|
_levelTextList.Add(StringId.SensorReferenceTVOCTipLevel4);
|
break;
|
case SPK.SensorHumidity:
|
_levelTextList.Add(StringId.SensorReferenceHumidityTipLevel1);
|
_levelTextList.Add(StringId.SensorReferenceHumidityTipLevel2);
|
_levelTextList.Add(StringId.SensorReferenceHumidityTipLevel3);
|
break;
|
case SPK.SensorHcho:
|
_levelTextList.Add(StringId.Class_I_BuildingStandard);
|
_levelTextList.Add(StringId.SecondaryBuildingStandard);
|
_levelTextList.Add(StringId.ExceedingTheStandard);
|
break;
|
default:
|
_levelTextList.Add(99999999);
|
_levelTextList.Add(99999999);
|
_levelTextList.Add(99999999);
|
break;
|
}
|
return _levelTextList;
|
}
|
|
/// <summary>
|
/// 获取
|
/// </summary>
|
/// <param name="function"></param>
|
/// <returns></returns>
|
public uint GetCurColor(Function function)
|
{
|
var spk = function.spk;
|
var values = GetValues(function);
|
uint level = 0x00000000;
|
if (function.attrKeyConfigs.Count > 0)
|
{
|
|
foreach (var attrKey in function.attrKeyConfigs)
|
{
|
if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
|
{
|
foreach (var info in attrKey.configs)
|
{
|
if ((Convert.ToInt32(info.start) >= values) && (Convert.ToInt32(info.end) < values))
|
{
|
return Convert.ToUInt32(info.color, 16);
|
}
|
}
|
}
|
}
|
}
|
|
return level;
|
}
|
|
/// <summary>
|
/// 获取文本
|
/// </summary>
|
/// <param name="function"></param>
|
/// <returns></returns>
|
public string GetCurText(Function function)
|
{
|
var spk = function.spk;
|
var values = GetValues(function);
|
var level = "";
|
if (function.attrKeyConfigs.Count > 0)
|
{
|
|
foreach (var attrKey in function.attrKeyConfigs)
|
{
|
if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
|
{
|
foreach (var info in attrKey.configs)
|
{
|
if ((Convert.ToInt32(info.start) >= values) && (Convert.ToInt32(info.end) < values))
|
{
|
return info.desc;
|
}
|
}
|
}
|
}
|
}
|
|
return level;
|
}
|
|
/// <summary>
|
/// 当前等级
|
/// </summary>
|
public int GetCurLevel(Function function)
|
{
|
var spk = function.spk;
|
var values = GetValues(function);
|
int level = 1;
|
|
|
|
if (function.attrKeyConfigs.Count > 0)
|
{
|
|
foreach (var attrKey in function.attrKeyConfigs)
|
{
|
if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
|
{
|
level = 1;
|
if(attrKey.configs.Count == 0)
|
{
|
break;
|
}
|
foreach (var info in attrKey.configs)
|
{
|
if ((Convert.ToDouble(info.start) < values) && (Convert.ToDouble(info.end) >= values))
|
{
|
return level;
|
}
|
level++;
|
|
}
|
}
|
}
|
return 1;
|
}
|
|
|
|
switch (spk)
|
{
|
case SPK.SensorPm25:
|
if (values < 35)
|
level = 1;
|
else if (values < 75)
|
level = 2;
|
else if (values < 115)
|
level = 3;
|
else if (values > 115)
|
level = 4;
|
break;
|
case SPK.SensorCO2:
|
if (values < 1000)
|
level = 1;
|
else if (values < 2000)
|
level = 2;
|
else if (values < 5000)
|
level = 3;
|
else if (values >= 5000)
|
level = 4;
|
break;
|
case SPK.SensorTemperature:
|
if (values < 18)
|
level = 1;
|
else if (values < 20)
|
level = 2;
|
else if (values < 25)
|
level = 3;
|
else if (values < 27)
|
level = 4;
|
else if (values < 30)
|
level = 5;
|
else if (values < 33)
|
level = 6;
|
else if (values > 33)
|
level = 7;
|
break;
|
case SPK.SensorTVOC:
|
if (values < 600)
|
level = 1;
|
else if (values < 2000)
|
level = 2;
|
else if (values < 5000)
|
level = 3;
|
else if (values >= 5000)
|
level = 4;
|
break;
|
case SPK.SensorHumidity:
|
if (values > 70)
|
level = 1;
|
else if (values > 40)
|
level = 2;
|
else if (values < 40)
|
level = 3;
|
break;
|
case SPK.SensorHcho:
|
if (values <= 0.08)
|
level = 1;
|
else if (values <= 0.1)
|
level = 2;
|
else
|
level = 3;
|
break;
|
}
|
return level;
|
}
|
|
|
/// <summary>
|
/// 当前等级
|
/// </summary>
|
public int GetCurLevel(string spk,double values)
|
{
|
int level = 1;
|
switch (spk)
|
{
|
case SPK.SensorPm25:
|
if (values < 35)
|
level = 1;
|
else if (values < 75)
|
level = 2;
|
else if (values < 115)
|
level = 3;
|
else if (values > 115)
|
level = 4;
|
break;
|
case SPK.SensorCO2:
|
if (values < 1000)
|
level = 1;
|
else if (values < 2000)
|
level = 2;
|
else if (values < 5000)
|
level = 3;
|
else if (values >= 5000)
|
level = 4;
|
break;
|
case SPK.SensorTemperature:
|
if (values < 18)
|
level = 1;
|
else if (values < 20)
|
level = 2;
|
else if (values < 25)
|
level = 3;
|
else if (values < 27)
|
level = 4;
|
else if (values < 30)
|
level = 5;
|
else if (values < 33)
|
level = 6;
|
else if (values > 33)
|
level = 7;
|
break;
|
case SPK.SensorTVOC:
|
if (values < 600)
|
level = 1;
|
else if (values < 2000)
|
level = 2;
|
else if (values < 5000)
|
level = 3;
|
else if (values >= 5000)
|
level = 4;
|
break;
|
case SPK.SensorHumidity:
|
if (values > 70)
|
level = 1;
|
else if (values > 40)
|
level = 2;
|
else if (values < 40)
|
level = 3;
|
break;
|
case SPK.SensorHcho:
|
if (values <= 0.08)
|
level = 1;
|
else if (values <= 0.1)
|
level = 2;
|
else
|
level = 3;
|
break;
|
}
|
return level;
|
}
|
|
}
|
}
|