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();
 }
Example #2
0
        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);
        }
Example #3
0
        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);
        }