| | |
| | | |
| | | namespace ZigBee.Device |
| | | { |
| | | public class DoorLock : CommonDevice |
| | | public class DoorLock : Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo |
| | | { |
| | | public DoorLock() |
| | | { |
| | |
| | | public List<Shared.Phone.UserCenter.MemberInfoRes> localAllAccountList = new List<Shared.Phone.UserCenter.MemberInfoRes> { }; |
| | | public static int RemoteUnlockCount = 3;//远程开锁次数限制 |
| | | public static string RemoteUnlockPassword = string.Empty;//远程开锁密码 |
| | | public static string LocalTempPassword = string.Empty;//本地生成的临时密码 |
| | | public static DateTime maxValue = DateTime.MaxValue; |
| | | public static DateTime minValue = DateTime.MinValue; |
| | | |
| | | public string LocalTempPassword = string.Empty;//本地生成的临时密码 |
| | | |
| | | |
| | | #region 临时密码信息 |
| | | /// <summary> |
| | | /// 临时密码本地存储对象 |
| | | /// 用户管理发送数据回复 |
| | | /// </summary> |
| | | public TempPasswordObj tempPasswordObj = new TempPasswordObj(); |
| | | public TempPasswordObject tempPasswordObject; |
| | | /// <summary> |
| | | /// 临时密码本地对象 |
| | | /// </summary> |
| | | [System.Serializable] |
| | | public class TempPasswordObj |
| | | public class TempPasswordObject |
| | | { |
| | | /// <summary> |
| | | /// 门锁有效时间 |
| | | /// 临时密码ID |
| | | /// </summary> |
| | | public int validTime; |
| | | /// <summary> |
| | | /// 门锁时间 |
| | | /// </summary> |
| | | public int times; |
| | | } |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 门锁编程事件通知 |
| | | /// </summary> |
| | | [System.Serializable] |
| | | public class LocaDoorLockObj |
| | | { |
| | | /// <summary> |
| | | /// 用户id |
| | | ///门锁本地录入的密码、指纹、感应卡都有唯一对应的用户Id |
| | | /// </summary> |
| | | public int UserID; |
| | | /// <summary> |
| | | /// 开锁类型 |
| | | /// 常用: |
| | | /// 0:Keypad(键盘/密码);3:RFID(射频卡);15:指纹 |
| | | ///不常用: |
| | | /// 1:RF(Zigbee无线);2:Manual(手动);255:Indeterminate(不确定) |
| | | /// </summary> |
| | | public int UnlockType; |
| | | /// <summary> |
| | | /// 关联账户的ID |
| | | /// </summary> |
| | | public string ConnectedAccount = string.Empty; |
| | | /// <summary> |
| | | /// 门锁用户名 |
| | | /// </summary> |
| | | public string UserName = string.Empty; |
| | | /// <summary> |
| | | /// 门锁录入的时 |
| | | /// </summary> |
| | | public DateTime EntryTime = System.DateTime.MinValue; |
| | | public int UserId; |
| | | /// <summary> |
| | | /// PrimaryId 门锁云端主 键(非更新字段,以下均为更新字段) -->键名 : PrimaryId默认值: null |
| | | /// </summary> |
| | | public string PrimaryId = ""; |
| | | //public string PrimaryId; |
| | | /// <summary> |
| | | /// 6位有动态临时密码 |
| | | /// </summary> |
| | | public string TempPassword; |
| | | /// <summary> |
| | | /// 门锁有效时间 |
| | | /// </summary> |
| | | public DateTime ValidTime; |
| | | /// <summary> |
| | | /// 门锁失效时间 |
| | | /// </summary> |
| | | public DateTime InValidTime; |
| | | } |
| | | #endregion |
| | | |
| | | #endregion |
| | | |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region 添加门锁临时密码 |
| | | /// <summary> |
| | | /// 添加门锁 |
| | | /// </summary> |
| | | public class AddDoorLockTempPasswordData |
| | | { |
| | | /// <summary> |
| | | /// RequestVersion |
| | | /// </summary> |
| | | public string RequestVersion = Shared.Common.CommonPage.RequestVersion; |
| | | /// <summary> |
| | | /// LoginAccessToken |
| | | /// </summary> |
| | | public string LoginAccessToken = Shared.Common.Config.Instance.Token; |
| | | /// <summary> |
| | | /// 住宅Id -->键名 : HomeId |
| | | /// </summary> |
| | | public string HomeId = Shared.Common.Config.Instance.HomeId; |
| | | /// <summary> |
| | | /// 门锁Id -->键名 : DoorLockId |
| | | /// </summary> |
| | | public string LocalDoorLockId = ""; |
| | | /// <summary> |
| | | /// 临时密码Id -->键名 : TempPwdId |
| | | /// </summary> |
| | | public string TempPwdId = ""; |
| | | /// <summary> |
| | | /// 临时密码 -->键名 : TempPwd |
| | | /// </summary> |
| | | public string TempPwd = ""; |
| | | /// <summary> |
| | | /// 0:00:00] ValidBeginTime 有效开始时间 -->键名 : ValidBeginTime 默认值: 0001/1/1 |
| | | /// </summary> |
| | | public DateTime ValidBeginTime; |
| | | /// <summary> |
| | | /// 0:00:00] ValidEndTime 有效结束时间 -->键名 : ValidEndTime |
| | | /// </summary> |
| | | public DateTime ValidEndTime; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加门锁结果 |
| | | /// </summary> |
| | | public class AddDoorLockTempPasswordDataRes : AddDoorLockDataRes |
| | | { |
| | | } |
| | | #endregion |
| | | |
| | | #region 删除门锁临时密码 |
| | | /// <summary> |
| | | /// 删除门锁 |
| | | /// </summary> |
| | | public class DelDoorLockTempPasswordData |
| | | { |
| | | /// <summary> |
| | | /// RequestVersion |
| | | /// </summary> |
| | | public string RequestVersion = Shared.Common.CommonPage.RequestVersion; |
| | | /// <summary> |
| | | /// LoginAccessToken |
| | | /// </summary> |
| | | public string LoginAccessToken = Shared.Common.Config.Instance.Token; |
| | | /// <summary> |
| | | /// 住宅Id -->键名 : HomeId |
| | | /// </summary> |
| | | public string HomeId = Shared.Common.Config.Instance.HomeId; |
| | | /// <summary> |
| | | /// LocalDoorLockId 搜索本地门锁Id -->键名 : LocalDoorLockId 默认值: null |
| | | /// </summary> |
| | | public string LocalDoorLockId = ""; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除门锁结果 |
| | | /// </summary> |
| | | public class DelDoorLockTempPasswordDataRes : AddDoorLockDataRes |
| | | { |
| | | } |
| | | #endregion |
| | | |
| | | #region 更新门锁临时密码 |
| | | /// <summary> |
| | | /// 更新门锁 |
| | | /// </summary> |
| | | public class ModifyDoorLockTempPasswordData |
| | | { |
| | | /// <summary> |
| | | /// RequestVersion |
| | | /// </summary> |
| | | public string RequestVersion = Shared.Common.CommonPage.RequestVersion; |
| | | /// <summary> |
| | | /// LoginAccessToken |
| | | /// </summary> |
| | | public string LoginAccessToken = Shared.Common.Config.Instance.Token; |
| | | /// <summary> |
| | | /// 住宅Id -->键名 : HomeId |
| | | /// </summary> |
| | | public string HomeId = Shared.Common.Config.Instance.HomeId; |
| | | /// <summary> |
| | | /// 门锁密码主键(获取门锁密码分页中的Id) -->键名 : DoorLockPwdId |
| | | /// </summary> |
| | | public string DoorLockPwdId = ""; |
| | | /// <summary> |
| | | /// 门锁Id -->键名 : DoorLockId |
| | | /// </summary> |
| | | public string LocalDoorLockId = ""; |
| | | /// <summary> |
| | | /// 临时密码Id -->键名 : TempPwdId |
| | | /// </summary> |
| | | public string TempPwdId = ""; |
| | | /// <summary> |
| | | /// 临时密码 -->键名 : TempPwd |
| | | /// </summary> |
| | | public string TempPwd = ""; |
| | | /// <summary> |
| | | /// 0:00:00] ValidBeginTime 有效开始时间 -->键名 : ValidBeginTime 默认值: 0001/1/1 |
| | | /// </summary> |
| | | public DateTime ValidBeginTime; |
| | | /// <summary> |
| | | /// 0:00:00] ValidEndTime 有效结束时间 -->键名 : ValidEndTime |
| | | /// </summary> |
| | | public DateTime ValidEndTime; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加门锁结果 |
| | | /// </summary> |
| | | public class ModigDoorLockTempPasswordDataRes : AddDoorLockDataRes |
| | | { |
| | | } |
| | | #endregion |
| | | |
| | | #region 获取门锁临时密码 |
| | | /// <summary> |
| | | /// 获取门锁 |
| | | /// </summary> |
| | | public class GetDoorLockTempPasswordData |
| | | { |
| | | /// <summary> |
| | | /// RequestVersion |
| | | /// </summary> |
| | | public string RequestVersion = Shared.Common.CommonPage.RequestVersion; |
| | | /// <summary> |
| | | /// LoginAccessToken |
| | | /// </summary> |
| | | public string LoginAccessToken = Shared.Common.Config.Instance.Token; |
| | | /// <summary> |
| | | /// 住宅Id -->键名 : HomeId |
| | | /// </summary> |
| | | public string HomeId = Shared.Common.Config.Instance.HomeId; |
| | | /// <summary> |
| | | /// 门锁Id -->键名 : DoorLockId |
| | | /// </summary> |
| | | public string LocalDoorLockId = ""; |
| | | /// <summary> |
| | | /// 临时密码Id -->键名 : TempPwdId |
| | | /// </summary> |
| | | public string TempPwdId = ""; |
| | | /// <summary> |
| | | /// 临时密码 -->键名 : TempPwd |
| | | /// </summary> |
| | | public string TempPwd = ""; |
| | | /// <summary> |
| | | /// 0:00:00] ValidBeginTime 有效开始时间 -->键名 : ValidBeginTime 默认值: 0001/1/1 |
| | | /// </summary> |
| | | public DateTime? ValidBeginTime; |
| | | /// <summary> |
| | | /// 0:00:00] ValidEndTime 有效结束时间 -->键名 : ValidEndTime |
| | | /// </summary> |
| | | public DateTime? ValidEndTime; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取门锁临时密码结果 |
| | | /// </summary> |
| | | [Serializable] |
| | | public class GetDoorLockTempPasswordDataRes |
| | | { |
| | | public List<CloudDoorLockTempPasswordObj> PageData = new List<CloudDoorLockTempPasswordObj>(); |
| | | public int PageIndex; |
| | | public int PageSize; |
| | | public int TotalCount; |
| | | public int TotalPages; |
| | | public bool HasPreviousPage; |
| | | public bool HasNextPage; |
| | | } |
| | | [Serializable] |
| | | public class CloudDoorLockTempPasswordObj |
| | | { |
| | | /// <summary> |
| | | /// 门锁Id -->键名 : DoorLockId |
| | | /// </summary> |
| | | public string LocalDoorLockId = ""; |
| | | /// <summary> |
| | | /// 临时密码Id -->键名 : TempPwdId |
| | | /// </summary> |
| | | public string TempPwdId = ""; |
| | | /// <summary> |
| | | /// 临时密码 -->键名 : TempPwd |
| | | /// </summary> |
| | | public string TempPwd = ""; |
| | | /// <summary> |
| | | /// 0:00:00] ValidBeginTime 有效开始时间 -->键名 : ValidBeginTime 默认值: 0001/1/1 |
| | | /// </summary> |
| | | public DateTime ValidBeginTime; |
| | | /// <summary> |
| | | /// 0:00:00] ValidEndTime 有效结束时间 -->键名 : ValidEndTime |
| | | /// </summary> |
| | | public DateTime ValidEndTime; |
| | | /// <summary> |
| | | /// 【门锁云端主键】,用于【添加门锁历史】接口中的DoorLockId参数及【删除门锁】接口中的PrimaryId参数,注意不是网关中的【门锁Id |
| | | /// </summary> |
| | | public string Id; |
| | | /// <summary> |
| | | /// 创建时间 |
| | | /// </summary> |
| | | public DateTime CreatedOnUtc; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 从云服务器中获取门锁临时密码 |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<GetDoorLockTempPasswordDataRes> GetDoorLockTempPasswordFromServer(string RequestName, GetDoorLockTempPasswordData getDoorLockTempPasswordData) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<GetDoorLockTempPasswordDataRes>>)(async () => |
| | | { |
| | | GetDoorLockTempPasswordDataRes listInfo = null; |
| | | var revertObj = await SendDoorLockToServer(RequestName, getDoorLockTempPasswordData); |
| | | if (revertObj != null && revertObj.ResponseData != null) |
| | | { |
| | | var result = revertObj.ResponseData.ToString(); |
| | | if (result != null) |
| | | { |
| | | listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetDoorLockTempPasswordDataRes>(result); |
| | | } |
| | | } |
| | | return listInfo; |
| | | })); |
| | | } |
| | | #endregion |
| | | |
| | | #region 获取门锁 |
| | | /// <summary> |
| | | /// 获取门锁 |
| | |
| | | /// 云端帐号Id -->键名 : CloudAccountId (可选) |
| | | /// </summary> |
| | | public string CloudAccountId = ""; |
| | | /// <summary> |
| | | /// OpenLockMode 开锁方式(密码、指纹、IC卡) -->键名 : OpenLockMode (可选) |
| | | /// </summary> |
| | | //public int OpenLockMode = 0; |
| | | } |
| | | |
| | | [Serializable] |
| | |
| | | public class CloudDoorLockObj |
| | | { |
| | | /// <summary> |
| | | /// 门锁Id |
| | | /// 门锁Id |
| | | /// </summary> |
| | | public string DoorLockId; |
| | | /// <summary> |
| | | /// 云端帐号Id |
| | | /// 云端帐号Id |
| | | /// </summary> |
| | | public string CloudAccountId; |
| | | /// <summary> |
| | | /// OpenLockMode 开锁方式(密码、指纹、IC卡) |
| | | /// OpenLockMode 开锁方式(密码、指纹、IC卡) |
| | | /// </summary> |
| | | public int OpenLockMode; |
| | | /// <summary> |
| | | /// 门锁本地用户Id |
| | | /// 门锁本地用户Id |
| | | /// </summary> |
| | | public string DoorLockLocalUserId; |
| | | /// <summary> |
| | | /// 住宅Id |
| | | /// 住宅Id |
| | | /// </summary> |
| | | public byte[] Data; |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public bool IsTempUnlockAuthority; |
| | | /// <summary> |
| | | /// 录入时间 |
| | | /// 录入时间 |
| | | /// </summary> |
| | | public DateTime EntryTime; |
| | | /// <summary> |
| | | /// 最后更新时间 |
| | | /// 最后更新时间 |
| | | /// </summary> |
| | | public string LastChangeTime; |
| | | /// <summary> |
| | |
| | | |
| | | /// <summary> |
| | | /// 获取门锁给云服务器 |
| | | /// </summary> |
| | | /// </summary> |
| | | public static async System.Threading.Tasks.Task<GetDoorLockDataRes> GetDoorLockInfoFromServer(string RequestName, GetDoorLockData getDoorLockData) |
| | | { |
| | | return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<GetDoorLockDataRes>>)(async () => |
| | |
| | | if (result != null) |
| | | { |
| | | listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetDoorLockDataRes>(result); |
| | | int i = 0; |
| | | } |
| | | } |
| | | return listInfo; |
| | |
| | | |
| | | /// <summary> |
| | | /// 获取子账户信息 |
| | | /// </summary> |
| | | /// </summary> |
| | | static List<Shared.Phone.UserCenter.MemberInfoRes> DoorLockAccountList = new List<Shared.Phone.UserCenter.MemberInfoRes> { }; |
| | | public static async System.Threading.Tasks.Task<List<Shared.Phone.UserCenter.MemberInfoRes>> GetSubAccountByDistributedMark() |
| | | { |
| | |
| | | /// 保留 |
| | | /// </summary> |
| | | public int UserStatus; |
| | | /// <summary> |
| | | /// <summary> |
| | | /// 编程事件触发源 |
| | | /// 常用: |
| | | /// 0:Keypad(键盘/密码);3:RFID(射频卡);15:指纹 |
| | |
| | | /// 常用: |
| | | /// 键盘/密码,指纹、感应卡:1:Lock命令成功事件;2:Unlock命令成功事件 |
| | | ///不常用: |
| | | /// 请查看枚举 |
| | | /// 请查看枚举 |
| | | /// </summary> |
| | | public int ProgramEventCode; |
| | | /// <summary> |
| | |
| | | /// <summary> |
| | | /// 矫正门锁时间 |
| | | /// </summary> |
| | | /// <returns>The writable value async.</returns> |
| | | /// <returns>The writable value async.</returns> |
| | | /// <param name="timestamp">矫正门锁的时间</param> |
| | | public async System.Threading.Tasks.Task<SetWritableValueResponAllData> RectifyDoorLockTimeAsync(int timestamp) |
| | | { |
| | |
| | | if (command == "0002") |
| | | { |
| | | var tempD = new DefaultControlResponseData(); |
| | | tempD.command = Convert.ToInt32(data[10].ToString() + data[11].ToString() + data[12].ToString() + data[13].ToString(), 16); |
| | | 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:0402_{ topic}"); |
| | |
| | | /// <summary> |
| | | ///响应操作码(0-ffff) |
| | | /// </summary> |
| | | public int command = -1; |
| | | public string command = ""; |
| | | /// <summary> |
| | | /// 状态值 |
| | | /// <para>默认响应结果: |
| | |
| | | ///<para>32 冻结成功</para> |
| | | ///<para>34 冻结失败</para> |
| | | ///<para>33 解冻成功</para> |
| | | ///<para>35 解冻失败</para> |
| | | ///<para>35 解冻失败</para> |
| | | /// </summary> |
| | | public int status = -1; |
| | | } |
| | |
| | | #region 验证门锁密码 |
| | | ///<summary > |
| | | ///验证门锁密码 |
| | | ///<para>inputPassword:输入的门锁密码</para> |
| | | ///<para>inputPassword:输入的门锁密码</para> |
| | | /// </summary> |
| | | public async System.Threading.Tasks.Task<VerifyPasswordResponseAllData> VerifyPasswordAsync(string inputPassword) |
| | | { |
| | |
| | | { |
| | | var result1 = Convert.ToInt32(data[10].ToString() + data[11].ToString(), 16); |
| | | result = new VerifyPasswordResponseAllData { result = result1 }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0402_{ topic}"); |
| | | DebugPrintLog($"UI收到通知后的主题_command:0454_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(10); |
| | | if (result != null) |
| | | if (result != null && result.result == 0) |
| | | { |
| | | break; |
| | | } |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region 远程开锁 |
| | | #region 远程开锁 |
| | | ///<summary > |
| | | ///远程开锁 |
| | | ///<para>inputPassword: 输入密码/para> |
| | | ///远程开锁 |
| | | ///<para>inputPassword: 输入密码/para> |
| | | /// </summary> |
| | | public async System.Threading.Tasks.Task<ResponseAllData> RemoteControlAsync(string inputPassword) |
| | | public async System.Threading.Tasks.Task<TempPasswordResponseAllData> RemoteControlAsync(string inputPassword) |
| | | { |
| | | ResponseAllData result = null; |
| | | TempPasswordResponseAllData result = null; |
| | | if (Gateway == null) |
| | | { |
| | | result = new ResponseAllData { errorMessageBase = "当前没有网关" }; |
| | | result = new TempPasswordResponseAllData { errorMessageBase = "当前没有网关" }; |
| | | return result; |
| | | } |
| | | return await System.Threading.Tasks.Task.Run(async () => |
| | |
| | | |
| | | if (temp == null) |
| | | { |
| | | result = new ResponseAllData { errorMessageBase = "网关错误回复,且数据是空" }; |
| | | result = new TempPasswordResponseAllData { errorMessageBase = "网关错误回复,且数据是空" }; |
| | | } |
| | | |
| | | else |
| | | { |
| | | result = new ResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; |
| | | result = new TempPasswordResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; |
| | | } |
| | | } |
| | | if (topic == gatewayID + "/" + "ZbDataPassthrough") |
| | |
| | | |
| | | if (gatewayTemp.clientDataPassthroughResponseData == null) |
| | | { |
| | | result = new ResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | result = new TempPasswordResponseAllData { errorMessageBase = "网关返回的数据为空" }; |
| | | } |
| | | else |
| | | { |
| | |
| | | var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); |
| | | if (command == "0002") |
| | | { |
| | | var tempD = new ResponseData(); |
| | | tempD.command = Convert.ToInt32(data[10].ToString() + data[11].ToString() + data[12].ToString() + data[13].ToString(), 16); |
| | | 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 ResponseAllData { responseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0400_{ topic}"); |
| | | result = new TempPasswordResponseAllData { responseData = tempD }; |
| | | DebugPrintLog($"UI收到通知后的主题_command:0462_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(10); |
| | | if (result != null) |
| | | if (result != null && result.responseData != null && result.responseData.command == "0462") |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) |
| | | { |
| | | result = new ResponseAllData { errorMessageBase = " 回复超时,请重新操作" }; |
| | | result = new TempPasswordResponseAllData |
| | | { errorMessageBase = " 回复超时,请重新操作" }; |
| | | } |
| | | Gateway.Actions -= action; |
| | | DebugPrintLog("ClientDataPassthrough_Actions 退出" + System.DateTime.Now.ToString()); |
| | |
| | | |
| | | #region 临时密码发送数据 |
| | | ///<summary > |
| | | ///远程开锁 |
| | | ///<para>inputPassword: 输入密码/para> |
| | | ///远程开锁 |
| | | ///<para>inputPassword: 输入密码/para> |
| | | /// </summary> |
| | | public async System.Threading.Tasks.Task<TempPasswordResponseAllData> TempPasswordAsync(string inputPassword, System.DateTime startTime, System.DateTime endTime, string fixedPassword = "190605") |
| | | { |
| | |
| | | if (command == "0002") |
| | | { |
| | | var tempD = new TempPasswordResponseData(); |
| | | tempD.command = Convert.ToInt32(data[10].ToString() + data[11].ToString() + data[12].ToString() + data[13].ToString(), 16); |
| | | 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:0400_{ topic}"); |
| | | DebugPrintLog($"UI收到通知后的主题_command:0463_{ topic}"); |
| | | } |
| | | } |
| | | } |
| | |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)// WaitReceiveDataTime) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(10); |
| | | if (result != null) |
| | | if (result != null && result.responseData != null && result.responseData.command == "0463") |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) |
| | | if ((DateTime.Now - dateTime).TotalMilliseconds > 9000) |
| | | { |
| | | result = new TempPasswordResponseAllData |
| | | { errorMessageBase = " 回复超时,请重新操作" }; |
| | |
| | | passwordStr += pawStr.Substring(i, 2); |
| | | } |
| | | |
| | | double dStartTimeStr = startTime.ToOADate(); |
| | | Byte[] bStartTimeStr = BitConverter.GetBytes(dStartTimeStr); |
| | | StringBuilder sb = new StringBuilder(); |
| | | Array.Reverse(bStartTimeStr); |
| | | foreach (byte b in bStartTimeStr) |
| | | sb.AppendFormat("{0:x2}", b); |
| | | var startTimeStr = sb.ToString(); |
| | | var startTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(startTime); |
| | | var endTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(endTime); |
| | | startTimeStr = string.Format("{0:X}", System.Convert.ToInt64(startTimeStr)); |
| | | endTimeStr = string.Format("{0:X}", System.Convert.ToInt64(endTimeStr)); |
| | | for (int i = 6; i >= 0; i = i - 2) |
| | | { |
| | | vaildTimeStr += startTimeStr.Substring(i, 2); |
| | | //invalidTimeStr += endTimeStr.Substring(i, 2); |
| | | invalidTimeStr += endTimeStr.Substring(i, 2); |
| | | } |
| | | |
| | | //var startTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(startTime); |
| | | //var endTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(startTime); |
| | | //var startTimeInt = System.Convert.ToInt64(startTimeStr, 16).ToString(); |
| | | //var endTimeInt = System.Convert.ToInt64(endTimeStr, 16).ToString(); |
| | | |
| | | |
| | | data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + |
| | | passwordStr + vaildTimeStr + vaildTimeStr; |
| | | passwordStr + vaildTimeStr + invalidTimeStr; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | var mess = ex.Message; |
| | | }; |
| | | |
| | | return data; |
| | | } |
| | | |
| | |
| | | /// <summary> |
| | | ///响应操作码(0-ffff) |
| | | /// </summary> |
| | | public int command = -1; |
| | | public string command = ""; |
| | | /// <summary> |
| | | /// 状态值 |
| | | /// <para>0--注册成功</para> |
| | |
| | | { |
| | | string passwordStr = ""; |
| | | var result = await GetKeyPassworAsync(); |
| | | //返回小端 |
| | | //返回小端 |
| | | if (result == null || result.keyPassword == null) |
| | | { |
| | | return 0; |
| | |
| | | public class DoorLockUserDetailData |
| | | { |
| | | /// <summary> |
| | | /// 类型 |
| | | /// 类型(读取锁上已有用户) |
| | | /// </summary> |
| | | public int userType; |
| | | /// <summary> |