| | |
| | | public string currentUserDisplayMethod = string.Empty;//当前用户显示方式 |
| | | //本地所有账户列表 |
| | | public List<Shared.Phone.UserCenter.MemberInfoRes> localAllAccountList = new List<Shared.Phone.UserCenter.MemberInfoRes> { }; |
| | | |
| | | /// <summary> |
| | | /// 是否常开模式 |
| | | /// ture:常开; false:关闭 |
| | | /// </summary> |
| | | public bool IsDoorLockNormallyMode = false; |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string LocalTempPassword = string.Empty;//本地生成的临时密码 |
| | | public Dictionary<string, bool> IsFreezeAccount = new Dictionary<string, bool> { };//是否冻结子账户 |
| | | public Dictionary<string, bool> HasRemoteUnlockAccess = new Dictionary<string, bool> { };//是否给子账户拥有远程开锁的条件 |
| | | public Dictionary<string, bool> IsFailedToGetDoorLockInfo = new Dictionary<string, bool> { };//是否获取门锁数据失败 |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string RemoteUnlockPassword = string.Empty;//远程开锁密码 |
| | | |
| | | public static int RemoteUnlockCount = 5;//远程开锁次数限制 |
| | | public static DateTime maxValue = DateTime.MaxValue; |
| | | public static int failedCount = 3;//远程开锁失败次数 |
| | | public static DateTime minValue = DateTime.MinValue; |
| | | |
| | | #region 临时密码信息 |
| | | /// <summary> |
| | | /// 用户管理发送数据回复 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public TempPasswordObject tempPasswordObject; |
| | | /// <summary> |
| | | /// 临时密码本地对象 |
| | |
| | | /// 云端帐号Id -->键名 : CloudAccountId (可选) |
| | | /// </summary> |
| | | public string CloudAccountId = ""; |
| | | /// <summary> |
| | | /// 第几页 |
| | | /// </summary> |
| | | public PageSetting pageSetting = new PageSetting(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取门锁 |
| | | /// </summary> |
| | | public class PageSetting |
| | | { |
| | | /// <summary> |
| | | /// 第几页 |
| | | /// </summary> |
| | | public int Page = 1; |
| | | /// <summary> |
| | | /// 第几页 |
| | | /// </summary> |
| | | public int PageSize = 10; |
| | | } |
| | | |
| | | [Serializable] |
| | |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<List<Shared.Phone.UserCenter.MemberInfoRes>>>)(async () => |
| | | { |
| | | var pra = new Shared.Phone.UserCenter.MemberListInfoPra(); |
| | | string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra); |
| | | string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra);
|
| | | if (result == null)
|
| | | {
|
| | | return null;
|
| | | } |
| | | var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Shared.Phone.UserCenter.MemberInfoRes>>(result); |
| | | return listInfo; |
| | | })); |
| | |
| | | /// <summary> |
| | | /// 门锁操作事件通知 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public DoorLockOperatingEventNotificationCommand doorLockOperatingEventNotificationCommand; |
| | | /// <summary> |
| | | /// 门锁操作事件通知 |
| | |
| | | /// Unlock命令:error,invalid schedule事件 |
| | | /// </summary> |
| | | UnlockInvalidScheduleEvent = 6, |
| | | } |
| | | }
|
| | | #endregion |
| | | |
| | |
|
| | | #region 门锁编程事件通知 |
| | | /// <summary> |
| | | /// 门锁编程事件通知 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public DoorLockProgrammingEventNotificationCommand doorLockProgrammingEventNotificationCommand; |
| | | /// <summary> |
| | | /// 门锁编程事件通知 |
| | |
| | | /// <summary> |
| | | /// 矫正门锁时间 |
| | | /// </summary> |
| | | /// <returns>The writable value async.</returns> |
| | | /// <param name="timestamp">矫正门锁的时间</param> |
| | | /// <param name="timestamp"></param> |
| | | /// <returns></returns> |
| | | public async System.Threading.Tasks.Task<SetWritableValueResponAllData> RectifyDoorLockTimeAsync(int timestamp) |
| | | { |
| | | if (Gateway == null) |
| | |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | |
| | | |
| | | if (topic == gatewayID + "/" + "SetWritableValue_Respon") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; |
| | | var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<SetWritableValueResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (tempData == null) |
| | |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 网关版本信息,网关反馈信息 |
| | | /// </summary> |
| | | public SetWritableValueResponAllData setWritableValueResponAllData; |
| | | /// <summary> |
| | | /// 网关版本信息,网关反馈信息 |
| | | /// </summary> |
| | | [System.Serializable] |
| | | public class SetWritableValueResponAllData |
| | | { |
| | | /// <summary> |
| | | /// 错误信息 |
| | | /// </summary> |
| | | public string errorMessageBase; |
| | | /// <summary> |
| | | /// 网关信息错误反馈 |
| | | /// <para>当网关接收到客户端信息后,出现以下异常情况将反馈错误。</para> |
| | | /// </summary> |
| | | public ErrorResponData errorResponData; |
| | | /// <summary> |
| | | /// 网关版本信息 |
| | | /// </summary> |
| | | public SetWritableValueResponData setWritableValueResponData; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置可写属性的值的数据 |
| | | /// </summary> |
| | | [System.Serializable] |
| | | public class SetWritableValueResponData |
| | | { |
| | | /// <summary> |
| | | /// 配置属性所在的cluster |
| | | /// </summary> |
| | | public int Cluster; |
| | | /// <summary> |
| | | /// 0:配置成功(若配置成功,下面的AttributeId字段不存在) |
| | | ///<para>134:不支持该属性</para> |
| | | ///<para>135:无效的属性值</para> |
| | | ///<para>141:无效的数据类型</para> |
| | | /// </summary> |
| | | public int Status; |
| | | |
| | | } |
| | | #endregion |
| | | #endregion |
| | | |
| | |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | |
| | | } |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; |
| | | gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (gatewayTemp.clientDataPassthroughResponseData == null) |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new DefaultControlResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | {
|
| | | if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = gatewayTemp.clientDataPassthroughResponseData.PassData; |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 16) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | |
| | | var tempD = new DefaultControlResponseData(); |
| | | tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); |
| | | tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); |
| | | result = new DefaultControlResponseAllData { defaultControlResponseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0450_{ topic}"); |
| | | if (tempD.command == "0450") |
| | | { |
| | | result = new DefaultControlResponseAllData { defaultControlResponseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0450_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | return result; |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 用户管理发送数据 |
| | | /// userIdList:个数不能超过10个 |
| | | /// </summary> |
| | | public string FreezeAccountData(List<int> userIdList, AccessType accessType) |
| | | { |
| | | string data = ""; |
| | | string dataLength = ""; |
| | | string dataComand1 = "50"; |
| | | string dataComand2 = "04"; |
| | | string dataSerialNum = "01"; |
| | | string addDataLength = ""; |
| | | string delUserTypeStr = ""; |
| | | string userIdStr = ""; |
| | | try |
| | | { |
| | | if (userIdList.Count == 0) |
| | | { |
| | | return null; |
| | | } |
| | | if (userIdList.Count > 9) |
| | | { |
| | | return null; |
| | | } |
| | | var tempLength = 5 + userIdList.Count * 2; |
| | | string tempLength1 = Convert.ToString(tempLength, 16); |
| | | switch (tempLength1.Length) |
| | | { |
| | | case 1: |
| | | dataLength = "0" + tempLength1.ToUpper(); |
| | | break; |
| | | case 2: |
| | | dataLength = tempLength1.ToUpper(); |
| | | break; |
| | | } |
| | | |
| | | var tempAddDataLength = 1 + userIdList.Count * 2; |
| | | string tempAddDataLength1 = Convert.ToString(tempAddDataLength, 16); |
| | | switch (tempAddDataLength1.Length) |
| | | { |
| | | case 1: |
| | | addDataLength = "0" + tempAddDataLength1.ToUpper(); |
| | | break; |
| | | case 2: |
| | | addDataLength = tempAddDataLength1.ToUpper(); |
| | | break; |
| | | } |
| | | |
| | | switch ((int)accessType) |
| | | { |
| | | case 0: |
| | | delUserTypeStr = "00"; |
| | | break; |
| | | case 1: |
| | | delUserTypeStr = "01"; |
| | | break; |
| | | case 2: |
| | | delUserTypeStr = "20"; |
| | | break; |
| | | case 3: |
| | | delUserTypeStr = "21"; |
| | | break; |
| | | case 4: |
| | | delUserTypeStr = "10"; |
| | | break; |
| | | case 5: |
| | | delUserTypeStr = "30"; |
| | | break; |
| | | case 6: |
| | | delUserTypeStr = "31"; |
| | | break; |
| | | } |
| | | |
| | | var sbString = new System.Text.StringBuilder(); |
| | | foreach (var userId in userIdList) |
| | | { |
| | | string temp = Convert.ToString(userId, 16); |
| | | switch (temp.Length) |
| | | { |
| | | case 1: |
| | | userIdStr = "0" + temp + "00"; |
| | | break; |
| | | case 2: |
| | | userIdStr = temp + "00"; |
| | | break; |
| | | case 3: |
| | | var thirdBit = temp.Substring(temp.Length - 2, 1); |
| | | userIdStr = temp + "0" + thirdBit; |
| | | break; |
| | | case 4: |
| | | userIdStr = temp; |
| | | break; |
| | | } |
| | | sbString.Append(userIdStr.ToString().ToUpper()); |
| | | } |
| | | data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + |
| | | delUserTypeStr + sbString; |
| | | } |
| | | catch { }; |
| | | |
| | | return data; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <summary> |
| | | /// 用户管理发送数据回复 |
| | | /// </summary> |
| | | public DefaultControlResponseAllData defaultControlResponseAllData; |
| | | [System.Serializable] |
| | | public class DefaultControlResponseAllData |
| | | { |
| | |
| | | /// <summary> |
| | | /// 状态值 |
| | | /// <para>默认响应结果: |
| | | ///<para>0 删除成功</para> |
| | | ///<para>1 删除失败</para> |
| | | ///<para>0 成功</para> |
| | | ///<para>1 失败</para> |
| | | ///<para>2 用户不存在</para> |
| | | ///<para>32 冻结成功</para> |
| | | ///<para>34 冻结失败</para> |
| | |
| | | public enum AccessType |
| | | { |
| | | /// <summary> |
| | | /// 0x00 删除全部单次用户 |
| | | /// 0x00 删除全部临时用户 |
| | | /// </summary> |
| | | DelAllUsers = 0, |
| | | /// <summary> |
| | |
| | | /// 0x21 解冻指定用户 |
| | | /// </summary> |
| | | Enable = 3, |
| | | /// <summary> |
| | | /// 0x10 多个指定用户删除 |
| | | /// </summary> |
| | | DelMoreUsers = 4, |
| | | /// <summary> |
| | | /// 0x30 多个指定用户冻结 |
| | | /// </summary> |
| | | DisEnableMoreUsers = 5, |
| | | /// <summary> |
| | | /// 0x31 多个指定用户解冻 |
| | | /// </summary> |
| | | EnableMoreUsers = 6, |
| | | } |
| | | #endregion |
| | | |
| | |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | |
| | | } |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; |
| | | gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (gatewayTemp.clientDataPassthroughResponseData == null) |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new VerifyPasswordResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | | if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = gatewayTemp.clientDataPassthroughResponseData.PassData; |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 12) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | |
| | | /// <summary> |
| | | /// 用户管理发送数据回复 |
| | | /// </summary> |
| | | public VerifyPasswordResponseAllData verifyPasswordResponseAllData; |
| | | [System.Serializable] |
| | | public class VerifyPasswordResponseAllData |
| | | { |
| | |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | |
| | | } |
| | | else if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; |
| | | gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (gatewayTemp.clientDataPassthroughResponseData == null) |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new RemoteResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | | if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = gatewayTemp.clientDataPassthroughResponseData.PassData; |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 16) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | |
| | | var tempD = new RemoteResponseData(); |
| | | tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); |
| | | tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); |
| | | result = new RemoteResponseAllData { responseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0462_{ topic}"); |
| | | if (tempD.command == "0462") |
| | | { |
| | | result = new RemoteResponseAllData { responseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0462_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// 远程回复数据 |
| | | /// </summary> |
| | | public RemoteResponseAllData remoteResponseAllData; |
| | | [System.Serializable] |
| | | public class RemoteResponseAllData |
| | | { |
| | |
| | | |
| | | #region 临时密码发送数据 |
| | | ///<summary > |
| | | ///远程开锁 |
| | | ///临时密码 |
| | | ///<para>inputPassword: 输入密码/para> |
| | | /// </summary> |
| | | public async System.Threading.Tasks.Task<TempPasswordResponseAllData> TempPasswordAsync(string inputPassword, System.DateTime startTime, System.DateTime endTime, string fixedPassword = "190605") |
| | |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | |
| | | } |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; |
| | | gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (gatewayTemp.clientDataPassthroughResponseData == null) |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new TempPasswordResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | | if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = gatewayTemp.clientDataPassthroughResponseData.PassData; |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 16) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | |
| | | var tempD = new TempPasswordResponseData(); |
| | | tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); |
| | | tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); |
| | | result = new TempPasswordResponseAllData { responseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0463_{ topic}"); |
| | | if (tempD.command == "0463") |
| | | { |
| | | result = new TempPasswordResponseAllData { responseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0463_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// 临时密码回复数据 |
| | | /// </summary> |
| | | public TempPasswordResponseAllData tempPasswordResponseAllData; |
| | | [System.Serializable] |
| | | public class TempPasswordResponseAllData |
| | | { |
| | |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | |
| | | |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; |
| | | gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (gatewayTemp.clientDataPassthroughResponseData == null) |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new KeyPasswordInfo { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | | if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = gatewayTemp.clientDataPassthroughResponseData.PassData; |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 20) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | |
| | | doorLockUserDetailData.userType = Convert.ToInt32(data[10].ToString() + data[11].ToString(), 16); |
| | | doorLockUserDetailData.totalNum = Convert.ToInt32(data[12].ToString() + data[13].ToString(), 16); |
| | | doorLockUserDetailData.currentNum = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); |
| | | totalNum = doorLockUserDetailData.totalNum; |
| | | currentNum = doorLockUserDetailData.currentNum; |
| | | result = new DoorlockUserInfo { doorLockUserDetailData = doorLockUserDetailData }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0451_{ topic}"); |
| | | } |
| | |
| | | var data = new JObject { { "PassData", passData } }; |
| | | jObject.Add("Data", data); |
| | | Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); |
| | | |
| | | } |
| | | catch { } |
| | | |
| | | //接收一个包最多等3秒,没有收到就退出 |
| | | //接收一个包最多等3秒,没有收到就退出,单次数据包不超过30个用户 |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 3000) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(100); |
| | | if (totalNum == currentNum) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | //if ((DateTime.Now - dateTime).TotalMilliseconds > 3000) |
| | | //{ |
| | | // result = new DoorlockUserInfo { errorMessageBase = " 回复超时,请重新操作" }; |
| | | //} |
| | | Gateway.Actions -= action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 退出" + System.DateTime.Now.ToString()); |
| | | |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region 音量 |
| | | ///<summary > |
| | | ///获取音量 |
| | | /// </summary> |
| | | public async System.Threading.Tasks.Task<VolumeResponseAllData> GetVolumeAsync() |
| | | { |
| | | VolumeResponseAllData result = null; |
| | | if (Gateway == null) |
| | | { |
| | | result = new VolumeResponseAllData { errorMessageBase = "当前没有网关" }; |
| | | return result; |
| | | } |
| | | return await System.Threading.Tasks.Task.Run(async () => |
| | | { |
| | | Action<string, string> action = (topic, message) => |
| | | { |
| | | var gatewayID = topic.Split('/')[0]; |
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | | result = new VolumeResponseAllData { errorMessageBase = "网关错误回复,且数据是空" }; |
| | | } |
| | | |
| | | else |
| | | { |
| | | result = new VolumeResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; |
| | | } |
| | | } |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new VolumeResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 14) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | | if (command == "0456") |
| | | { |
| | | var tempD = new VolumeResponseData(); |
| | | tempD.command = data[10].ToString() + data[11].ToString(); |
| | | tempD.value = Convert.ToInt32(data[12].ToString() + data[13].ToString(), 16); |
| | | result = new VolumeResponseAllData { volumeResponseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0456_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | |
| | | Gateway.Actions += action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 启动" + System.DateTime.Now.ToString()); |
| | | |
| | | try |
| | | { |
| | | var passData = VolumeData(-1); |
| | | var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; |
| | | var data = new JObject { { "PassData", passData } }; |
| | | jObject.Add("Data", data); |
| | | Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); |
| | | } |
| | | catch { } |
| | | |
| | | var dateTime = DateTime.Now; |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(10); |
| | | if (result != null && result.volumeResponseData != null) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if ((DateTime.Now - dateTime).TotalMilliseconds > 9000) |
| | | { |
| | | result = new VolumeResponseAllData |
| | | { errorMessageBase = " 回复超时,请重新操作" }; |
| | | } |
| | | Gateway.Actions -= action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 退出" + System.DateTime.Now.ToString()); |
| | | |
| | | return result; |
| | | }); |
| | | } |
| | | |
| | | ///<summary > |
| | | ///音量 |
| | | ///<para>命令值: comandValue</para> |
| | | ///<para>comandValue: 0-0x64 音量</para> |
| | | /// </summary> |
| | | public async System.Threading.Tasks.Task<DefaultControlResponseAllData> SetVolumeAsync(int comandValue) |
| | | { |
| | | DefaultControlResponseAllData result = null; |
| | | if (Gateway == null) |
| | | { |
| | | result = new DefaultControlResponseAllData { errorMessageBase = "当前没有网关" }; |
| | | return result; |
| | | } |
| | | return await System.Threading.Tasks.Task.Run(async () => |
| | | { |
| | | Action<string, string> action = (topic, message) => |
| | | { |
| | | var gatewayID = topic.Split('/')[0]; |
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | | result = new DefaultControlResponseAllData { errorMessageBase = "网关错误回复,且数据是空" }; |
| | | } |
| | | |
| | | else |
| | | { |
| | | result = new DefaultControlResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; |
| | | } |
| | | } |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new DefaultControlResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 16) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | | if (command == "0002") |
| | | { |
| | | var tempD = new DefaultControlResponseData(); |
| | | tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); |
| | | tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); |
| | | if (tempD.command == "0455") |
| | | { |
| | | result = new DefaultControlResponseAllData { defaultControlResponseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0455_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | |
| | | Gateway.Actions += action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 启动" + System.DateTime.Now.ToString()); |
| | | |
| | | try |
| | | { |
| | | var passData = VolumeData(comandValue); |
| | | var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; |
| | | var data = new JObject { { "PassData", passData } }; |
| | | jObject.Add("Data", data); |
| | | Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); |
| | | } |
| | | catch { } |
| | | |
| | | var dateTime = DateTime.Now; |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(10); |
| | | if (result != null && result.defaultControlResponseData != null) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if ((DateTime.Now - dateTime).TotalMilliseconds > 9000) |
| | | { |
| | | result = new DefaultControlResponseAllData |
| | | { errorMessageBase = " 回复超时,请重新操作" }; |
| | | } |
| | | Gateway.Actions -= action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 退出" + System.DateTime.Now.ToString()); |
| | | |
| | | return result; |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 音量发送数据 |
| | | ///<para>comandValue: 0-100 音量</para> |
| | | /// </summary> |
| | | public string VolumeData(int comandValue) |
| | | { |
| | | string data = ""; |
| | | string dataLength = "05"; |
| | | string dataComand1 = "55"; |
| | | string dataComand2 = "04"; |
| | | string dataSerialNum = "01"; |
| | | string addDataLength = "01"; |
| | | string cValue = ""; |
| | | try |
| | | { |
| | | if (comandValue >= 1) |
| | | { |
| | | cValue = Convert.ToString(comandValue, 16).ToUpper(); |
| | | if (cValue.Length == 1) |
| | | { |
| | | cValue = "0" + cValue; |
| | | } |
| | | else |
| | | { |
| | | cValue = cValue; |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | switch (comandValue) |
| | | { |
| | | case -1: |
| | | cValue = "AA"; |
| | | break; |
| | | case 0: |
| | | cValue = "EB"; |
| | | break; |
| | | } |
| | | } |
| | | data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + |
| | | cValue; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | var mess = ex.Message; |
| | | }; |
| | | return data; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 音量回复数据 |
| | | /// </summary> |
| | | [System.Serializable] |
| | | public class VolumeResponseAllData |
| | | { |
| | | /// <summary> |
| | | /// 错误信息 |
| | | /// </summary> |
| | | public string errorMessageBase; |
| | | /// <summary> |
| | | /// 网关信息错误反馈 |
| | | /// <para>当网关接收到客户端信息后,出现以下异常情况将反馈错误。</para> |
| | | /// </summary> |
| | | public ErrorResponData errorResponData; |
| | | /// <summary> |
| | | /// 音量回复数据 |
| | | /// </summary> |
| | | public VolumeResponseData volumeResponseData; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 音量回复数据 |
| | | /// </summary> |
| | | [System.Serializable] |
| | | public class VolumeResponseData |
| | | { |
| | | /// <summary> |
| | | ///命令 |
| | | ///<para>0x00 接收成功</para> |
| | | ///<para>0xea 语音模式</para> |
| | | ///<para>0xeb 静音模式</para> |
| | | /// </summary> |
| | | public string command = ""; |
| | | /// <summary> |
| | | /// 音量值 |
| | | /// <para>0xf1~0xfe 1-14音量</para> |
| | | /// <para>0 无音量值</para> |
| | | /// </summary> |
| | | public int value = -1; |
| | | } |
| | | #endregion |
| | | |
| | | #region 常开模式 |
| | | /// <summary> |
| | | /// 读取常开模式 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public async System.Threading.Tasks.Task<OpenModeResponseAllData> ReadNormallyOpenModeFuncAsync() |
| | | { |
| | | OpenModeResponseAllData result = null; |
| | | if (Gateway == null) |
| | | { |
| | | result = new OpenModeResponseAllData { errorMessageBase = "当前没有网关" }; |
| | | return result; |
| | | } |
| | | return await System.Threading.Tasks.Task.Run(async () => |
| | | { |
| | | Action<string, string> action = (topic, message) => |
| | | { |
| | | var gatewayID = topic.Split('/')[0]; |
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | | result = new OpenModeResponseAllData { errorMessageBase = "网关错误回复,且数据是空" }; |
| | | } |
| | | |
| | | else |
| | | { |
| | | result = new OpenModeResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; |
| | | } |
| | | } |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new OpenModeResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 12) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | | if (command == "0458") |
| | | { |
| | | result = new OpenModeResponseAllData(); |
| | | result.command = data[10].ToString() + data[11].ToString(); |
| | | DebugPrintLog($"UI收到通知后的主题_command:0457_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | |
| | | Gateway.Actions += action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 启动" + System.DateTime.Now.ToString()); |
| | | |
| | | try |
| | | { |
| | | var passData = OpenModeData(SwitchMode.Obtain); |
| | | var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; |
| | | var data = new JObject { { "PassData", passData } }; |
| | | jObject.Add("Data", data); |
| | | Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); |
| | | } |
| | | catch { } |
| | | |
| | | var dateTime = DateTime.Now; |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(10); |
| | | if (result != null) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if ((DateTime.Now - dateTime).TotalMilliseconds > 9000) |
| | | { |
| | | result = new OpenModeResponseAllData |
| | | { errorMessageBase = " 回复超时,请重新操作" }; |
| | | } |
| | | Gateway.Actions -= action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 退出" + System.DateTime.Now.ToString()); |
| | | |
| | | return result; |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置常开模式 |
| | | /// </summary> |
| | | /// <param name="IsNormallyOpenMode">是否打开常开模式:true:打开 false:关闭</param> |
| | | /// <returns></returns> |
| | | public async System.Threading.Tasks.Task<DefaultControlResponseAllData> SetNormallyOpenModeFuncAsync(bool IsNormallyOpenMode) |
| | | { |
| | | DefaultControlResponseAllData result = null; |
| | | if (Gateway == null) |
| | | { |
| | | result = new DefaultControlResponseAllData { errorMessageBase = "当前没有网关" }; |
| | | return result; |
| | | } |
| | | return await System.Threading.Tasks.Task.Run(async () => |
| | | { |
| | | Action<string, string> action = (topic, message) => |
| | | { |
| | | var gatewayID = topic.Split('/')[0]; |
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); |
| | | |
| | | if (topic == gatewayID + "/" + "Error_Respon") |
| | | { |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); |
| | | |
| | | if (temp == null) |
| | | { |
| | | result = new DefaultControlResponseAllData { errorMessageBase = "网关错误回复,且数据是空" }; |
| | | } |
| | | |
| | | else |
| | | { |
| | | result = new DefaultControlResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; |
| | | } |
| | | } |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | | { |
| | | var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); |
| | | |
| | | if (clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new DefaultControlResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | | if (clientDataPassthroughResponseData?.PassData != null) |
| | | { |
| | | var data = clientDataPassthroughResponseData.PassData; |
| | | if (data.Length == 16) |
| | | { |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | | if (command == "0002") |
| | | { |
| | | var tempD = new DefaultControlResponseData(); |
| | | tempD.command = data[12].ToString() + data[13].ToString() + data[10].ToString() + data[11].ToString(); |
| | | tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); |
| | | if (tempD.command == "0457") |
| | | { |
| | | result = new DefaultControlResponseAllData { defaultControlResponseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0457_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | |
| | | Gateway.Actions += action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 启动" + System.DateTime.Now.ToString()); |
| | | |
| | | try |
| | | { |
| | | var passData = ""; |
| | | if (IsNormallyOpenMode) |
| | | { |
| | | passData = OpenModeData(SwitchMode.NormallyOpen); |
| | | } |
| | | else |
| | | { |
| | | passData = OpenModeData(SwitchMode.NormallyClose); |
| | | } |
| | | var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; |
| | | var data = new JObject { { "PassData", passData } }; |
| | | jObject.Add("Data", data); |
| | | Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); |
| | | } |
| | | catch { } |
| | | |
| | | var dateTime = DateTime.Now; |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(10); |
| | | if (result != null && result.defaultControlResponseData != null) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if ((DateTime.Now - dateTime).TotalMilliseconds > 9000) |
| | | { |
| | | result = new DefaultControlResponseAllData |
| | | { errorMessageBase = " 回复超时,请重新操作" }; |
| | | } |
| | | Gateway.Actions -= action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 退出" + System.DateTime.Now.ToString()); |
| | | |
| | | return result; |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 常开模式 发送数据 |
| | | /// </summary> |
| | | public string OpenModeData(SwitchMode switchMode) |
| | | { |
| | | string data = ""; |
| | | string dataLength = "05"; |
| | | string dataComand1 = "57"; |
| | | string dataComand2 = "04"; |
| | | string dataSerialNum = "01"; |
| | | string addDataLength = "01"; |
| | | string cValue = ""; |
| | | try |
| | | { |
| | | switch (switchMode) |
| | | { |
| | | case SwitchMode.Obtain: |
| | | cValue = "10"; |
| | | break; |
| | | case SwitchMode.NormallyOpen: |
| | | cValue = "12"; |
| | | break; |
| | | case SwitchMode.NormallyClose: |
| | | cValue = "13"; |
| | | break; |
| | | } |
| | | data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + |
| | | cValue; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | var mess = ex.Message; |
| | | }; |
| | | return data; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 常开模式 回复数据 |
| | | /// </summary> |
| | | [System.Serializable] |
| | | public class OpenModeResponseAllData |
| | | { |
| | | /// <summary> |
| | | /// 错误信息 |
| | | /// </summary> |
| | | public string errorMessageBase; |
| | | /// <summary> |
| | | /// 网关信息错误反馈 |
| | | /// <para>当网关接收到客户端信息后,出现以下异常情况将反馈错误。</para> |
| | | /// </summary> |
| | | public ErrorResponData errorResponData; |
| | | /// <summary> |
| | | /// 0x10 常开已开启 |
| | | /// <para>0x11 常开已关闭</para> |
| | | /// </summary> |
| | | public string command; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 开关模式 |
| | | /// </summary> |
| | | public enum SwitchMode |
| | | { |
| | | /// <summary> |
| | | /// 0x10 查询常开状态 |
| | | /// </summary> |
| | | Obtain = 0x10, |
| | | /// <summary> |
| | | /// 0x12 开启常开 |
| | | /// </summary> |
| | | NormallyOpen = 0x12, |
| | | /// <summary> |
| | | /// 0x13 关闭常开 |
| | | /// </summary> |
| | | NormallyClose = 0x13 |
| | | } |
| | | #endregion |
| | | |
| | | #endregion |
| | | } |
| | | } |