/// <summary> /// 设置门禁主机时间 /// </summary> /// <param name="deviceIp">门禁主机ip</param> /// <returns>true:成功 false:失败</returns> public bool SetDeviceTime(string deviceIp) { CHDOperate op = GetOPByIP(deviceIp); bool b = false; if (null != op && !string.IsNullOrWhiteSpace(deviceIp)) { if (!op.isLinkOn) { op.isLinkOn = op.LinkOn(false); } if (op.isLinkOn) { b = op.SetDeviceTime(); if (!b) { CHDDoorUseInfo info = GetUseInfo(deviceIp); if (null != info) { ReLogin(info); } } return(b); } } TextMsg?.Invoke(string.Format("门禁主机 {0} 同步时间 {1} 失败···", deviceIp, DateTime.Now)); return(b); }
/// <summary> /// 登出门禁主机 /// </summary> /// <param name="userInfo">门禁主机信息</param> public bool LoginOut(CHDDoorUseInfo userInfo) { CHDOperate op = GetOPByIP(userInfo.DeviceIp); if (null != op) { return(op.DisConnectionDevice()); } return(false); }
/// <summary> /// 重新登录门禁主机 /// </summary> /// <param name="infos">门禁主机信息</param> public void ReLogin(CHDDoorUseInfo infos) { LoginOut(infos); CHDOperate op = GetOPByIP(infos.DeviceIp); if (null != op) { opera.Remove(op); } (new Thread(new ParameterizedThreadStart(LoginDevice)) { IsBackground = true }).Start(infos); }
private void LoginDevice(object obj) { CHDDoorUseInfo item = obj as CHDDoorUseInfo; CHDOperate op = new CHDOperate(); op.CHDLogMsg += Op_CHDLogMsg; op.CHDEventInfo += Op_CHDEventInfo; serverIsStart = true; bool b = false; for (int i = 0; i < 5; i++) { try { if (!serverIsStart) { return; } b = op.ConnectionDevice(item.DeviceIp, DeviceType.CHD806D2CP, portOrBaud: (int)item.DevicePoint, szSysPwd: item.UserName, szKeyPwd: item.UserPwd); if (b) { opera.Add(op); (new Thread(new ParameterizedThreadStart(LinkOn)) { IsBackground = true }).Start(op); break; } else { Thread.Sleep(20); } } catch (Exception) { } } }
/// <summary> /// 门禁远程操作 /// </summary> /// <param name="deviceIp">门禁主机ip</param> /// <param name="type">操作类型</param> /// <param name="doorId">门禁编号</param> /// <param name="delay">持续时间</param> /// <param name="userCard">用户门禁卡</param> /// <returns>true:成功 false:失败</returns> public bool ControlDoor(string deviceIp, CHDControlDoorType type, uint doorId, uint delay, string userCard) { CHDOperate op = GetOPByIP(deviceIp); if (null != op) { // CHDDoorUseInfo info = GetUseInfo(deviceIp); bool b = false; if (op.isLinkOn) { switch (type) { case CHDControlDoorType.Open: b = op.OpenDoor(doorId, delay, userCard); break; case CHDControlDoorType.StartOpen: b = op.OpenAlwaysOpenDoor(doorId, delay, userCard); break; case CHDControlDoorType.StartClose: b = op.OpenAlwaysCloseDoor(doorId, delay, userCard); break; case CHDControlDoorType.EndOpen: b = op.CloseAlwaysOpenDoor(doorId, userCard); break; case CHDControlDoorType.EndClose: b = op.CloseAlwaysCloseDoor(doorId, userCard); break; } if (!b) { if (!op.ReConnection()) { CHDDoorUseInfo info = GetUseInfo(deviceIp); if (null != info) { ReLogin(info); } } op.isLinkOn = op.LinkOn(true); } return(b); } else { TextMsg?.Invoke(string.Format("门禁主机 {0} 远程 {1} 操作失败,身份确认失败···", deviceIp + " " + doorId, type.ToString())); if (!op.ReConnection()) { CHDDoorUseInfo info = GetUseInfo(deviceIp); if (null != info) { ReLogin(info); } } op.isLinkOn = op.LinkOn(true); return(false); } } TextMsg?.Invoke(string.Format("门禁主机 {0} 远程 {1} 操作失败···", deviceIp + " " + doorId, type.ToString())); return(false); }