using System;
using System.Collections.Generic;
namespace HDL_ON.Entity
{
public class Sensor
{
///
/// 获取名称文本ID
///
///
///
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;
}
///
///
///
public double GetValues(Function function)
{
var value = function.GetAttrState(FunctionAttributeKey.Value);
return Convert.ToDouble(value);
}
///
///
///
///
///
public void SetValues(int value, Function function)
{
function.SetAttrState(FunctionAttributeKey.Value, value);
}
///
/// 每个等级对区间值
///
public List GetIntervalValue(string spk)
{
var _intervalValue = new List();
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 List GetLevelColorList(string spk)
{
var _levelColorList = new List();
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;
}
///
/// 每个等级的名称
///
public List GetLevelTextList(string spk)
{
var _levelTextList = new List();
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;
}
///
/// 当前等级
///
public int GetCurLevel(Function function)
{
var spk = function.spk;
var values = GetValues(function);
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;
}
///
/// 当前等级
///
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;
}
}
}