| | |
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 简约面板震动功能___________________
|
| | |
|
| | | /// <summary>
|
| | | /// 获取简约面板震动功能的信息(null表示出错)
|
| | | /// </summary>
|
| | | /// <param name="device">某一回路</param>
|
| | | /// <returns></returns>
|
| | | public VibrationInfo GetPanelVibrationData(CommonDevice device)
|
| | | {
|
| | | var returnData = new VibrationInfo();
|
| | | var gateway = device.Gateway;
|
| | | if (gateway == null)
|
| | | {
|
| | | //错误:网关对象丢失
|
| | | this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg));
|
| | | return null;
|
| | | }
|
| | | string checkTopic = HdlGatewayLogic.Current.GetGatewayId(gateway) + "/" + "ZbDataPassthrough";
|
| | | bool canBreak = false;
|
| | |
|
| | | Action<string, string> action = (topic, message) =>
|
| | | {
|
| | | if (topic == checkTopic)
|
| | | {
|
| | | try
|
| | | {
|
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
|
| | | string PassData = jobject["Data"]["PassData"].ToString();
|
| | | if (PassData.Length != 18)
|
| | | {
|
| | | return;
|
| | | }
|
| | | string mytopic = PassData[4].ToString() + PassData[5].ToString() + PassData[2].ToString() + PassData[3].ToString();
|
| | | if (mytopic != "0802")
|
| | | {
|
| | | return;
|
| | | }
|
| | | returnData.A震动使能 = PassData.Substring(10, 2) == "01" ? true : false;
|
| | | returnData.A震动强度 = Convert.ToInt32(PassData.Substring(12, 2), 16);
|
| | | returnData.A震动时间 = Convert.ToInt32(PassData.Substring(14, 4), 16);
|
| | |
|
| | | canBreak = true;
|
| | | }
|
| | | catch { }
|
| | | }
|
| | | };
|
| | | gateway.Actions += action;
|
| | | try
|
| | | {
|
| | | var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
|
| | | var data = new Newtonsoft.Json.Linq.JObject { { "PassData", "050108110101" } };
|
| | | jObject.Add("Data", data);
|
| | | gateway.Send(("ClientDataPassthrough"), jObject.ToString());
|
| | | }
|
| | | catch { }
|
| | |
|
| | | int TimeOut = 0;
|
| | | while (canBreak == false && TimeOut < 60)
|
| | | {
|
| | | System.Threading.Thread.Sleep(100);
|
| | | TimeOut++;
|
| | | }
|
| | | gateway.Actions -= action;
|
| | |
|
| | | if (TimeOut >= 60)
|
| | | {
|
| | | //获取震动反馈配置信息失败
|
| | | string errorMsg = Language.StringByID(R.MyInternationalizationString.uGetVibrationFeedbackSettionFail);
|
| | | errorMsg = UserCenterLogic.CombineGatewayTimeOutMsg(errorMsg, null, "回复超时", false);
|
| | | this.ShowTipMsg(errorMsg);
|
| | | return null;
|
| | | }
|
| | | return returnData;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 设置简约面板震动功能的信息
|
| | | /// </summary>
|
| | | /// <param name="device">某一回路</param>
|
| | | /// <param name="datainfo">设置的信息</param>
|
| | | /// <returns></returns>
|
| | | public bool SetPanelVibrationData(CommonDevice device, VibrationInfo datainfo)
|
| | | {
|
| | | var gateway = device.Gateway;
|
| | | if (gateway == null)
|
| | | {
|
| | | //错误:网关对象丢失
|
| | | this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg));
|
| | | return false;
|
| | | }
|
| | | string checkTopic = HdlGatewayLogic.Current.GetGatewayId(gateway) + "/" + "ZbDataPassthrough";
|
| | | bool canBreak = false;
|
| | |
|
| | | bool success = false;
|
| | | Action<string, string> action = (topic, message) =>
|
| | | {
|
| | | if (topic == checkTopic)
|
| | | {
|
| | | try
|
| | | {
|
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
|
| | | if (jobject["DeviceAddr"].ToString() != device.DeviceAddr)
|
| | | {
|
| | | //不是同一个东西
|
| | | return;
|
| | | }
|
| | | string PassData = jobject["Data"]["PassData"].ToString();
|
| | | if (PassData.Length != 16)
|
| | | {
|
| | | return;
|
| | | }
|
| | | string mytopic = PassData[4].ToString() + PassData[5].ToString() + PassData[2].ToString() + PassData[3].ToString();
|
| | | if (mytopic != "0002")
|
| | | {
|
| | | return;
|
| | | }
|
| | | int command = Convert.ToInt32(PassData[10].ToString() + PassData[11].ToString() + PassData[12].ToString() + PassData[13].ToString(), 16);
|
| | | int status = Convert.ToInt32(PassData[14].ToString() + PassData[15].ToString(), 16);
|
| | | if (status == 0)
|
| | | {
|
| | | //成功
|
| | | success = true;
|
| | | }
|
| | | canBreak = true;
|
| | | }
|
| | | catch { }
|
| | | }
|
| | | };
|
| | | gateway.Actions += action;
|
| | | try
|
| | | {
|
| | | string passData = "0800081104";
|
| | | passData += datainfo.A震动使能 ? "01" : "00";
|
| | | passData += Convert.ToString(datainfo.A震动强度, 16).PadLeft(2, '0');
|
| | | string time = Convert.ToString(datainfo.A震动时间, 16).PadLeft(4, '0');
|
| | | //低位在前,高位在后
|
| | | passData += time.Substring(2, 2);
|
| | | passData += time.Substring(0, 2);
|
| | |
|
| | | var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
|
| | | var data = new Newtonsoft.Json.Linq.JObject { { "PassData", passData } };
|
| | | jObject.Add("Data", data);
|
| | | gateway.Send(("ClientDataPassthrough"), jObject.ToString());
|
| | | }
|
| | | catch { }
|
| | |
|
| | | int TimeOut = 0;
|
| | | while (canBreak == false && TimeOut < 60)
|
| | | {
|
| | | System.Threading.Thread.Sleep(100);
|
| | | TimeOut++;
|
| | | }
|
| | | gateway.Actions -= action;
|
| | |
|
| | | if (success == false)
|
| | | {
|
| | | //设置震动反馈配置信息失败
|
| | | string errorMsg = Language.StringByID(R.MyInternationalizationString.uSetVibrationFeedbackSettionFail);
|
| | | if (TimeOut >= 60)
|
| | | {
|
| | | errorMsg = UserCenterLogic.CombineGatewayTimeOutMsg(errorMsg, null, "回复超时", false);
|
| | | }
|
| | | this.ShowTipMsg(errorMsg);
|
| | | }
|
| | |
|
| | | return success;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 简约面板震动功能信息
|
| | | /// </summary>
|
| | | public class VibrationInfo
|
| | | {
|
| | | /// <summary>
|
| | | /// 震动使能
|
| | | /// </summary>
|
| | | public bool A震动使能 = false;
|
| | | /// <summary>
|
| | | /// 震动强度(十进制)
|
| | | /// </summary>
|
| | | public int A震动强度 = 0;
|
| | | /// <summary>
|
| | | /// 震动时间(十进制)
|
| | | /// </summary>
|
| | | public int A震动时间 = 0;
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 缓存中的设备私有属性_______________
|
| | |
|
| | | /// <summary>
|