using System;
|
using System.Collections.Generic;
|
using Shared;
|
|
namespace HDL_ON.Entity
|
{
|
public class AC : Function
|
{
|
/// <summary>
|
/// 当前温度模式
|
/// 0:摄氏度
|
/// 1:华氏度
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public int curTempType = 0;
|
/// <summary>
|
/// 当前温度模式字符
|
/// </summary>
|
public string tempUnitString
|
{
|
get
|
{
|
if (curTempType == 0)
|
{
|
return "°C";
|
}
|
else
|
{
|
return "°F";
|
}
|
}
|
}
|
|
/// <summary>
|
/// 当前模式索引
|
/// bus控制命令使用
|
/// </summary>
|
public byte curModeIndex()
|
{
|
try
|
{
|
string value = GetAttrState(FunctionAttributeKey.Mode);
|
byte index = 0;
|
switch (value)
|
{
|
case "auto":
|
index = 3;
|
break;
|
case "cool":
|
index = 0;
|
break;
|
case "heat":
|
index = 1;
|
break;
|
case "dry":
|
index = 4;
|
break;
|
case "fan":
|
index = 2;
|
break;
|
default:
|
index = 0;
|
break;
|
}
|
return index;
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"get curModeIndex error : {ex.Message}");
|
return 0;
|
}
|
}
|
|
/// <summary>
|
/// 设置bus协议模式标记
|
/// </summary>
|
public void SetModeIndex(int index)
|
{
|
string value = "auto";
|
switch (index)
|
{
|
case 3:
|
value = "auto";
|
break;
|
case 0:
|
value = "cool";
|
break;
|
case 1:
|
value = "heat";
|
break;
|
case 4:
|
value = "dry";
|
break;
|
case 2:
|
value = "fan";
|
break;
|
}
|
SetAttrState(FunctionAttributeKey.Mode, value);
|
}
|
|
/// <summary>
|
/// 当前风速索引
|
/// bus控制命令使用
|
/// </summary>
|
public byte curFanIndex()
|
{
|
try
|
{
|
string value = GetAttrState(FunctionAttributeKey.FanSpeed);
|
byte index = 0;
|
switch (value)
|
{
|
case "high":
|
index = 1;
|
break;
|
case "medium":
|
index = 2;
|
break;
|
case "low":
|
index = 3;
|
break;
|
case "auto":
|
index = 0;
|
break;
|
default:
|
index = 0;
|
break;
|
}
|
return index;
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"get curFanIndex error : {ex.Message}");
|
return 0;
|
}
|
}
|
/// <summary>
|
/// 设置bus协议风速标记
|
/// </summary>
|
public void SetFanIndex(int index)
|
{
|
string value = "high";
|
switch (index)
|
{
|
case 1:
|
value = "high";
|
break;
|
case 2:
|
value = "medium";
|
break;
|
case 3:
|
value = "low";
|
break;
|
case 0:
|
value = "auto";
|
break;
|
}
|
SetAttrState(FunctionAttributeKey.FanSpeed, value);
|
}
|
|
/* 去掉衍生属性,通过base.GetAttrState 查找属性与状态
|
FunctionAttributes _trait_mode;
|
/// <summary>
|
/// 模式属性
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public FunctionAttributes trait_mode
|
{
|
get
|
{
|
if (_trait_mode == null)
|
{
|
_trait_mode = attributes.Find((obj) => obj.key == "mode");
|
//找不到属性需要声明一个,防止报错闪退
|
if (_trait_mode == null)
|
{
|
_trait_mode = new FunctionAttributes()
|
{
|
key = "mode",
|
value = new List<string> { "auto", "cool", "heat", "dry", "fan" },
|
max = 4,
|
min = 0,
|
};
|
}
|
}
|
if (_trait_mode.curValue.ToString() == "{}")
|
_trait_mode.curValue = "cool";
|
return _trait_mode;
|
}
|
}
|
|
FunctionAttributes _trait_fan;
|
[Newtonsoft.Json.JsonIgnore]
|
public FunctionAttributes trait_fan
|
{
|
get
|
{
|
if (_trait_fan == null)
|
{
|
_trait_fan = attributes.Find((obj) => obj.key == "fan");
|
//找不到属性需要声明一个,防止报错闪退
|
if (_trait_fan == null)
|
{
|
_trait_fan = new FunctionAttributes()
|
{
|
key = "fan",
|
value = new List<string> { "high", "medium", "low", "auto" },
|
max = 3,
|
min = 0,
|
curValue = "high"
|
};
|
}
|
}
|
if (_trait_fan.curValue.ToString() == "{}")
|
_trait_fan.curValue = "high";
|
return _trait_fan;
|
}
|
}
|
|
FunctionAttributes _trait_temp;
|
/// <summary>
|
/// 当前空调温度
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public FunctionAttributes trait_temp
|
{
|
get
|
{
|
if (_trait_temp == null)
|
{
|
_trait_temp = attributes.Find((obj) => obj.key == "set_temp");
|
//找不到属性需要声明一个,防止报错闪退
|
if (_trait_temp == null)
|
{
|
_trait_temp = new FunctionAttributes()
|
{
|
key = "set_temp",
|
value = new List<string> { },
|
max = 32,
|
min = 16,
|
};
|
}
|
}
|
if (_trait_temp.curValue.ToString() == "{}")
|
{
|
_trait_temp.curValue = 16;
|
}
|
double vv = 16;
|
Double.TryParse(_trait_temp.curValue.ToString(), out vv);
|
_trait_temp.curValue = Convert.ToInt32(vv);
|
return _trait_temp;
|
}
|
}
|
|
FunctionAttributes _trait_swting;
|
[Newtonsoft.Json.JsonIgnore]
|
public FunctionAttributes trait_swting
|
{
|
get
|
{
|
if (_trait_swting == null)
|
{
|
_trait_swting = attributes.Find((obj) => obj.key == "swting");
|
//找不到属性需要声明一个,防止报错闪退
|
if (_trait_swting == null)
|
{
|
_trait_swting = new FunctionAttributes()
|
{
|
key = "swting",
|
value = new List<string> { "up", "down", "left", "right" },
|
max = 3,
|
min = 0,
|
};
|
}
|
}
|
if (_trait_swting.curValue.ToString() == "{}")
|
_trait_swting.curValue = "up";
|
return _trait_swting;
|
}
|
}
|
/// <summary>
|
/// 空调扫风模式列表
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public List<string> swting
|
{
|
get
|
{
|
try
|
{
|
return trait_swting.value;
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"ac get swting error : {ex.Message}");
|
return new List<string> { "up", "down", "left", "right" };
|
}
|
}
|
}
|
FunctionAttributes _trait_IndoorTemp;
|
/// <summary>
|
/// 室内温度
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public FunctionAttributes trait_IndoorTemp
|
{
|
get
|
{
|
if (_trait_IndoorTemp == null)
|
{
|
_trait_IndoorTemp = attributes.Find((obj) => obj.key == FunctionAttributeKey.IndoorTemp);
|
//找不到属性需要声明一个,防止报错闪退
|
if (_trait_IndoorTemp == null)
|
{
|
_trait_IndoorTemp = new FunctionAttributes()
|
{
|
key = FunctionAttributeKey.IndoorTemp,
|
value = new List<string> { },
|
max = 30,
|
min = 0,
|
};
|
}
|
}
|
if (_trait_IndoorTemp.curValue.ToString() == "{}")
|
{
|
_trait_IndoorTemp.curValue = 0;
|
}
|
var vv = Convert.ToDouble(_trait_IndoorTemp.curValue);
|
_trait_IndoorTemp.curValue = Convert.ToInt32(vv);
|
return _trait_IndoorTemp;
|
}
|
}
|
*/
|
|
/// <summary>
|
/// 当前模式的icon路径
|
/// </summary>
|
/// <param name="lightingIcon">获取的图标类型,默认是点亮</param>
|
/// <returns></returns>
|
public string GetModeIconPath(bool lightingIcon = true)
|
{
|
var value = GetAttrState(FunctionAttributeKey.Mode);
|
var imagePath = "FunctionIcon/AC/CoolIcon.png";
|
if (lightingIcon)
|
{
|
switch (value)
|
{
|
case "auto":
|
imagePath = "FunctionIcon/AC/AutoIcon.png";
|
break;
|
case "cool":
|
imagePath = "FunctionIcon/AC/CoolIcon.png";
|
break;
|
case "heat":
|
imagePath = "FunctionIcon/AC/HeatingIcon.png";
|
break;
|
case "dry":
|
imagePath = "FunctionIcon/AC/DehumidificationIcon.png";
|
break;
|
case "fan":
|
imagePath = "FunctionIcon/AC/AirSupplyIcon.png";
|
break;
|
default:
|
imagePath = "FunctionIcon/AC/CoolIcon.png";
|
break;
|
}
|
}
|
else
|
{
|
imagePath = "FunctionIcon/AC/AutoIconGray.png";
|
switch (value)
|
{
|
case "auto":
|
imagePath = "FunctionIcon/AC/AutoIconGray.png";
|
break;
|
case "cool":
|
imagePath = "FunctionIcon/AC/CoolIconGray.png";
|
break;
|
case "heat":
|
imagePath = "FunctionIcon/AC/HeatingIconGray.png";
|
break;
|
case "dry":
|
imagePath = "FunctionIcon/AC/DehumidificationIconGray.png";
|
break;
|
case "fan":
|
imagePath = "FunctionIcon/AC/AirSupplyIconGray.png";
|
break;
|
}
|
}
|
return imagePath;
|
}
|
|
/// <summary>
|
/// 当前风速的icon路径
|
/// </summary>
|
/// <param name="lightingIcon">获取的图标类型,默认是点亮</param>
|
/// <returns></returns>
|
public string GetFanIconPath(bool lightingIcon = true)
|
{
|
string value = GetAttrState(FunctionAttributeKey.FanSpeed);
|
var imagePath = "FunctionIcon/AC/WindHighIcon.png";
|
if (lightingIcon)
|
{
|
switch (value)
|
{
|
case "high":
|
imagePath = "FunctionIcon/AC/WindHighIcon.png";
|
break;
|
case "medium":
|
imagePath = "FunctionIcon/AC/WindMediumIcon.png";
|
break;
|
case "low":
|
imagePath = "FunctionIcon/AC/WindLowIcon.png";
|
break;
|
case "auto":
|
imagePath = "FunctionIcon/AC/AutoIcon.png";
|
break;
|
}
|
}
|
else
|
{
|
switch (value)
|
{
|
case "high":
|
imagePath = "FunctionIcon/AC/WindHighIconGray.png";
|
break;
|
case "medium":
|
imagePath = "FunctionIcon/AC/WindMediumIconGray.png";
|
break;
|
case "low":
|
imagePath = "FunctionIcon/AC/WindLowIconGray.png";
|
break;
|
case "auto":
|
imagePath = "FunctionIcon/AC/AutoIconGray.png";
|
break;
|
}
|
}
|
|
return imagePath;
|
}
|
|
|
/// <summary>
|
/// 获取模式属性文本
|
/// </summary>
|
/// <returns></returns>
|
public string GetModeAttrText(string value)
|
{
|
string text = "";
|
switch (value)
|
{
|
#region 模式
|
case "auto":
|
text = Language.StringByID(StringId.Auto);
|
break;
|
case "cool":
|
text = Language.StringByID(StringId.Cool);
|
break;
|
case "heat":
|
text = Language.StringByID(StringId.Heat);
|
break;
|
case "dry":
|
text = Language.StringByID(StringId.Dry);
|
break;
|
case "fan":
|
text = Language.StringByID(StringId.AirSupply);
|
break;
|
#endregion
|
}
|
return text;
|
}
|
|
/// <summary>
|
/// 获取风速属性文本
|
/// </summary>
|
/// <returns></returns>
|
public string GetFanAttrText(string value)
|
{
|
string text = "";
|
switch (value)
|
{
|
#region 风速
|
case "high":
|
text = Language.StringByID(StringId.HighWindSpeed);
|
break;
|
case "medium":
|
text = Language.StringByID(StringId.MiddleWindSpeed);
|
break;
|
case "low":
|
text = Language.StringByID(StringId.LowWindSpeed);
|
break;
|
case "auto":
|
text = Language.StringByID(StringId.Auto);
|
break;
|
#endregion
|
}
|
return text;
|
}
|
|
}
|
}
|