private void FrmAddOrModifyCtrlr_Load(object sender, EventArgs e) { this.tabControl1.SelectedTab = tabItemBase; if (_ctrlr != null) { tbCtrlName.Text = _ctrlr.NAME; tbCtrlrSn.Text = _ctrlr.SN_NO; cbCtrlrEnable.Checked = _ctrlr.IS_ENABLE; ipCtrlr.Value = _ctrlr.IP; ipCtrlr.Enabled = false; iiPort.Value = _ctrlr.PORT == null ? 60000 : (int)_ctrlr.PORT; tbDesc.Text = _ctrlr.CTRLR_DESC; if ((tbCtrlrSn.Text.Trim().Length == 0) || (_ctrlr.CTRLR_MODEL != "WGACCESS")) { if (_ctrlr.CTRLR_TYPE == null) { SetAccessExAttribute(ControllerDoorType.TwoDoorsTwoDirections); } else { ControllerDoorType type = ControllerDoorType.TwoDoorsTwoDirections; Enum.TryParse <ControllerDoorType>(_ctrlr.CTRLR_TYPE.ToString(), out type); if (type == ControllerDoorType.Elevator) { cbIsElevator.Checked = true; cbIsElevator.Visible = true; } else { SetAccessExAttribute(type); } } } else if (_lastType == null) { SetAccessExAttribute(ControllerDoorType.TwoDoorsTwoDirections); } } else { SetAccessExAttribute(ControllerDoorType.TwoDoorsTwoDirections); } DoLoadArea(); }
public static Controller ToController(Maticsoft.Model.SMT_CONTROLLER_INFO info) { Controller ctrlr = new Controller(); ControllerDoorType type = ControllerDoorType.TwoDoorsTwoDirections; Enum.TryParse <ControllerDoorType>(Convert.ToString(info.CTRLR_TYPE), out type); ctrlr.doorType = type; ctrlr.driverReleaseTime = info.DRIVER_DATE == null ? DateTime.MinValue : (DateTime)info.DRIVER_DATE; ctrlr.driverVersion = info.DRIVER_VERSION; ctrlr.gateway = info.GATEWAY; ctrlr.id = info.ID; ctrlr.ip = info.IP; ctrlr.mac = info.MAC; ctrlr.mask = info.MASK; ctrlr.model = info.CTRLR_MODEL; ctrlr.port = info.PORT == null ? 60000 : (int)info.PORT; ctrlr.sn = info.SN_NO; return(ctrlr); }
private void DoLoadCtrlr() { try { log.Info("加载抓拍配置..."); string sql = "SELECT SDC.*,SDI.CTRL_ID,SDI.CTRL_DOOR_INDEX,SCI.*,SCIF.* FROM SMT_DOOR_CAMERA SDC INNER JOIN SMT_DOOR_INFO SDI ON SDC.DOOR_ID=SDI.ID INNER JOIN SMT_CAMERA_INFO SCI ON SDC.CAMERA_ID=SCI.ID INNER JOIN SMT_CONTROLLER_INFO SCIF ON SDI.CTRL_ID=SCIF.ID WHERE SDC.ENABLE_CAP=1"; DataTable dt = Maticsoft.DBUtility.DbHelperSQL.Query(sql).Tables[0]; doorCameraObjects.Clear(); foreach (DataRow dr in dt.Rows) { try { DoorCameraObject dco = new DoorCameraObject(); Controller ctrlr = new Controller(); ControllerDoorType type = ControllerDoorType.TwoDoorsTwoDirections; Enum.TryParse <ControllerDoorType>(Convert.ToString(dr["CTRLR_TYPE"]), out type); ctrlr.doorType = type; ctrlr.driverReleaseTime = dr["DRIVER_DATE"] == null ? DateTime.MinValue : (DateTime)dr["DRIVER_DATE"]; ctrlr.driverVersion = Convert.ToString(dr["DRIVER_VERSION"]); ctrlr.gateway = Convert.ToString(dr["GATEWAY"]); ctrlr.id = dr["CTRL_ID"] == null ? -1 : (decimal)dr["CTRL_ID"]; ctrlr.ip = Convert.ToString(dr["IP"]); ctrlr.mac = Convert.ToString(dr["MAC"]); ctrlr.mask = Convert.ToString(dr["MASK"]); ctrlr.model = Convert.ToString(dr["CTRLR_MODEL"]); ctrlr.port = dr["PORT"] == null ? 60000 : (int)dr["PORT"]; ctrlr.sn = Convert.ToString(dr["SN_NO"]); dco.controller = ctrlr; IPCamera camera = new IPCamera(); camera.CapturePort = dr["CAMERA_CAP_PORT"] == null ? 80 : (int)dr["CAMERA_CAP_PORT"]; CapType ct = CapType.Onvif; Enum.TryParse <CapType>(Convert.ToString(dr["CAMERA_CAP_TYPE"]), out ct); camera.CapType = ct; camera.IP = Convert.ToString(dr["CAMERA_IP"]); CameraModel model = CameraModel.None; Enum.TryParse <CameraModel>(Convert.ToString(dr["CAMERA_MODEL"]), out model); camera.Model = model; camera.Password = Convert.ToString(dr["CAMERA_PWD"]); camera.Port = dr["CAMERA_PORT"] == null ? 80 : (int)dr["CAMERA_PORT"]; camera.User = Convert.ToString(dr["CAMERA_USER"]); dco.camera = camera; dco.ctrl_door_index = dr["CTRL_DOOR_INDEX"] == null ? 1 : (byte)dr["CTRL_DOOR_INDEX"]; doorCameraObjects.Add(dco); } catch (Exception ex) { log.Error("加载抓拍配置异常:DOOR_ID=" + dr["DOOR_ID"] + ",CAMERA_IP=" + dr["CAMERA_IP"], ex); } } List <string> sns = new List <string>(); var curSNs = watchService.GetControllerSNs(); foreach (var item in doorCameraObjects) { if (!curSNs.Contains(item.controller.sn)) { sns.Add(item.controller.sn); } } foreach (var item in curSNs) { if (!sns.Contains(item)) { watchService.RemoveController(item); } } foreach (var item in doorCameraObjects) { watchService.AddController(item.controller, ControllerStateCallBack, "test"); } } catch (Exception ex) { log.Error("读取抓拍配置异常:", ex); } }
private void SetAccessExAttribute(ControllerDoorType doorType) { if (_lastType == null) { _lastType = doorType; } else { if (_lastType == doorType) { return; } } _lastType = doorType; int doorCount = 1; int directionCount = 1; switch (doorType) { case ControllerDoorType.OneDoorTwoDirections: { this.tabItemDoor.Text = "【单门双向控制器】属性"; doorCount = 1; directionCount = 2; } break; case ControllerDoorType.TwoDoorsTwoDirections: { this.tabItemDoor.Text = "【双门双向控制器】属性"; doorCount = 2; directionCount = 2; } break; case ControllerDoorType.FourDoorsOneDirection: { this.tabItemDoor.Text = "【四门单向控制器】属性"; doorCount = 4; directionCount = 1; } break; case ControllerDoorType.Elevator: { return; } break; default: break; } List <DoorNameAttriData> doorNameDatas = new List <DoorNameAttriData>(); List <DoorReaderAttriData> doorReaderDatas = new List <DoorReaderAttriData>(); for (int i = 0; i < doorCount; i++) { DoorNameAttriData data = new DoorNameAttriData(); data.doorNo = i + 1; data.doorCtrlType = 0; data.doorEnable = true; data.doorName = "门_" + tbCtrlrSn.Text.Trim() + "_" + data.doorNo; data.doorSecond = 3; Maticsoft.Model.SMT_DOOR_INFO doorInfo = null; if (_ctrlr != null) { if (_ctrlr.DOOR_INFOS != null) { doorInfo = _ctrlr.DOOR_INFOS.Find(m => m.CTRL_ID == _ctrlr.ID && (m.CTRL_DOOR_INDEX == data.doorNo)); if (doorInfo != null) { if (!string.IsNullOrWhiteSpace(doorInfo.DOOR_NAME)) { data.doorName = doorInfo.DOOR_NAME; } data.doorCtrlType = doorInfo.CTRL_STYLE; data.doorEnable = doorInfo.IS_ENABLE; data.doorSecond = doorInfo.CTRL_DELAY_TIME; data.visitor = doorInfo.IS_ALLOW_VISITOR; } } } doorNameDatas.Add(data); for (int j = 0; j < directionCount; j++) { DoorReaderAttriData rdata = new DoorReaderAttriData(); rdata.doorNo = data.doorNo; rdata.isEnter = rdata.isNoEnter = j == 0; rdata.isAttend = false; rdata.isEnter1 = j == 0; if (doorInfo != null) { rdata.isEnter = j == 0 ? doorInfo.IS_ENTER1 : doorInfo.IS_ENTER2; rdata.isAttend = j == 0 ? doorInfo.IS_ATTENDANCE1 : doorInfo.IS_ATTENDANCE2; } doorReaderDatas.Add(rdata); } } doorNameAttriGroup.SetDatas(doorNameDatas); doorReaderAttriGroup.SetDatas(doorReaderDatas); }