예제 #1
0
        /// <summary>
        /// 获取节点属性
        /// </summary>
        /// <param name="id">
        /// </param>
        private void GetProperity(int id, string tag)
        {
            //this.advPropertyGrid1.SelectedObject = null;

            if (tag.Equals("SensorDeviceUnit"))
            {
                var s = SensorDeviceUnit.FindByID(id);
                s.ModularDevices = s.ModularDeviceName;
                s.Sensors        = s.SensorName;

                this.advPropertyGrid1.SelectedObject = Mapper.Map <SensorDeviceUnitDto>(s);
                selectObj = new Tuple <IEntity>(s);
                //var sensor = Sensor.FindByID(s.SensorId);
                //PropertyHandle.SetPropertyReadOnly(s,"Remark", true);
            }
            else if (tag.Equals("ControlDeviceUnit"))
            {
                var c = ControlDeviceUnit.FindByID(id);
                c.ModularDevices  = c.ModularDeviceName;
                c.DeviceTypes     = c.DeviceTypeName;
                c.ControlJobTypes = c.ControlJobTypeName;
                c.RelayTypes      = c.RelayTypeName;
                this.advPropertyGrid1.SelectedObject = Mapper.Map <ControlDeviceUnitDto>(c);
                selectObj = new Tuple <IEntity>(c);
            }
            else if (tag.Equals("Camera"))
            {
                var c = Camera.FindByID(id);
                this.advPropertyGrid1.SelectedObject = Mapper.Map <CameraDto>(c);
                selectObj = new Tuple <IEntity>(c);
            }
            else if (tag.Equals("ShowDevice"))
            {
                var sd = ShowDevice.FindByID(id);
                sd.ShowDeviceTypes    = sd.ShowDeviceTypeName;
                sd.CommunicateDevices = sd.CommunicateDeviceName;
                this.advPropertyGrid1.SelectedObject = Mapper.Map <ShowDeviceDto>(sd);;
                selectObj = new Tuple <IEntity>(sd);
            }

            else if (tag.Equals("Facility"))
            {
                var fac = Facility.FindByID(id);
                fac.Farms         = fac.FarmName;
                fac.FacilityTypes = fac.FacilityTypeName;
                this.advPropertyGrid1.SelectedObject = Mapper.Map <FacilityDto>(fac);;
                selectObj = new Tuple <IEntity>(fac);
            }
        }
예제 #2
0
        private void advTreeData_DragDrop(object sender, DragEventArgs e)
        {
            //var item = e.Data.GetData(e.Data.GetFormats()[0]);
            if (status)
            {
                var location = this.advTreeData.PointToClient(new Point(e.X, e.Y));
                var node     = this.advTreeData.GetNodeAt(location.X, location.Y);

                if (node != null && node.Tag.Equals(parent))
                {
                    #region 采集设备
                    if (parent.Equals("SensorDeviceUnit"))
                    {
                        var device  = SensorDeviceUnit.FindByID(dragId);
                        var faciliy = node.Parent.Tag as Facility;
                        if (MessageBox.Show("确定要将该设备移动到该设施下吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            var dbList = FacilitySensorDeviceUnit.FindAllByFacilityIdAndCollectDeviceId(faciliy.ID,
                                                                                                        device.ID);

                            if (dbList == null || dbList.Count == 0)
                            {
                                var fas = new FacilitySensorDeviceUnit()
                                {
                                    FacilityID         = faciliy.ID,
                                    SensorDeviceUnitID = device.ID
                                };
                                fas.Code1 = fas.GetCode1();
                                int i = fas.Insert();
                                if (i != 0)
                                {
                                    FacilitySensorDeviceUnit.DeleteByFacilityAndSensorDeviceunit(facId, device.ID);//删除原有关系
                                }
                            }
                            else
                            {
                                var fas = dbList[0];
                                if (!(fas.Code1 + "").StartsWith(faciliy.Code1))
                                {
                                    fas.Code1 = fas.GetCode1();
                                    fas.Update();
                                }
                            }
                        }
                    }
                    #endregion

                    #region 控制设备
                    if (parent.Equals("ControlDeviceUnit"))
                    {
                        var device  = ControlDeviceUnit.FindByID(dragId);
                        var faciliy = node.Parent.Tag as Facility;
                        if (MessageBox.Show("确定要将该设备移动到该设施下吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            var dbList = FacilityControlDeviceUnit.FindAllByFacilityIdAndControlDeviceGroupNum(faciliy.ID,
                                                                                                               device.GroupNum);

                            if (dbList == null || dbList.Count == 0)
                            {
                                var fas = new FacilityControlDeviceUnit()
                                {
                                    FacilityID = faciliy.ID,
                                    ControlDeviceUnitGroupNum = device.GroupNum
                                };
                                fas.Code1 = fas.GetCode1();
                                int i = fas.Insert();
                                if (i != 0)
                                {
                                    FacilityControlDeviceUnit.DeleteByFacilityAndControlDeviceunGroupNum(facId, device.GroupNum);//删除原有关系
                                }
                            }
                            else
                            {
                                var fas = dbList[0];
                                if (!(fas.Code1 + "").StartsWith(faciliy.Code1))
                                {
                                    fas.Code1 = fas.GetCode1();
                                    fas.Update();
                                }
                            }
                            InitData();
                        }
                    }
                    #endregion

                    #region 视频设备
                    if (parent.Equals("Camera"))
                    {
                        var device  = Camera.FindByID(dragId);
                        var faciliy = node.Parent.Tag as Facility;
                        if (MessageBox.Show("确定要将该设备移动到该设施下吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            var dbList = FacilityCamera.FindAllByFacilityIdAndCameraId(faciliy.ID,
                                                                                       device.ID);

                            if (dbList == null || dbList.Count == 0)
                            {
                                var fas = new FacilityCamera()
                                {
                                    FacilityID = faciliy.ID,
                                    CameraID   = device.ID
                                };
                                fas.Code1 = fas.GetCode1();
                                int i = fas.Insert();
                                if (i != 0)
                                {
                                    FacilityCamera.GetDeviceByFacilityIdAndCameraId(facId, device.ID);//删除原有关系
                                }
                            }
                            else
                            {
                                var fas = dbList[0];
                                if (!(fas.Code1 + "").StartsWith(faciliy.Code1))
                                {
                                    fas.Code1 = fas.GetCode1();
                                    fas.Update();
                                }
                            }
                            InitData();
                        }
                    }
                    #endregion
                }
            }
            else
            {
                return;
            }
            InitData();
        }
예제 #3
0
        /// <summary>
        /// 控制设备
        /// </summary>
        /// <param name="deviceId">控制设备ID</param>
        /// <param name="status">设备状态</param>
        private void Control(int deviceId, int status)
        {
            const bool result = false;
            List <FacilityControlDeviceUnit> fac = FacilityControlDeviceUnit.FindAllByControlDeviceUnitGroupNum(deviceId);

            if (fac == null || !fac.Any())
            {
                return;
            }
            var device = ControlDeviceUnit.FindByID(deviceId);

            if (device == null)
            {
                return;
            }
            string            reason = null;
            TransportTypeEnum type;

            if (
                !Enum.TryParse(device.ModularDevice.CommunicateDevice.CommunicateDeviceTypeName,
                               true, out type))
            {
                type = TransportTypeEnum.Unknow;
            }
            var host    = device.ModularDevice.CommunicateDevice.Args1;
            var e       = Convert.ToInt32(device.ModularDevice.CommunicateDevice.Args2);
            var timeout = Convert.ToInt32(device.ModularDevice.CommunicateDevice.Args3);
            //获取Transport
            var transport           = TransportFactory.GetTransport(type, host, e, timeout);
            var modbusControlDevice = new ModbusControlDevice(transport,
                                                              Convert.ToByte(device.ModularDevice.Address));

            try
            {
                //待编写控制指令

                //if (device.IsComposite) //三态设备  正转  反转  停止
                //{
                //    if (status == -1)
                //    {
                //        result = modbusControlDevice.Write(device.RegisterAddress1, true);
                //    }
                //    else if (status == 0)
                //    {
                //        result = modbusControlDevice.Write(device.RegisterAddress1, false);
                //        result = modbusControlDevice.Write(device.RegisterAddress2, false);
                //    }
                //    else if (status == 1)
                //    {
                //        result = modbusControlDevice.Write(device.RegisterAddress2, true);
                //    }
                //}
                //else //两态设备 开 关
                //{
                //    result = modbusControlDevice.Write(device.RegisterAddress1, status == 1 ? true : false);
                //}
            }
            catch (Exception ex)
            {
                reason = ex.ToString();
            }
            LogHelper.Debug("指令执行" + (result ? "成功" : "失败"));

            DeviceControlCommand.FindAllByControlDeviceUnitID(deviceId).ToList().ForEach(deviceControlCommand =>
            {
                var controlResult = new ControlResult
                {
                    Serialnum = deviceControlCommand.Code1,
                    //Command = status,
                    //FacilityCode = fac[0].Facility.Code1,
                    //DeviceCode = fac[0].Code1,
                    //ContinueTime = 5,
                    Time       = DateTime.Now,
                    Result     = result,
                    FailReason = reason
                };
                var devControlLog = new DeviceControlLog
                {
                    Code1 = deviceControlCommand.Code1,
                    ControlDeviceUnitID    = deviceControlCommand.ControlDeviceUnitGroupNum,
                    ControlResult          = result,
                    CreateTime             = DateTime.Now,
                    DeviceControlCommand   = deviceControlCommand,
                    DeviceControlCommandID = deviceControlCommand.ID,
                    DeviceValue            = Convert.ToInt32(CalcControlDeviceValue.CalcProcessValue(fac[0])),
                    ShowValue  = CalcControlDeviceValue.CalcOriginal(fac[0]).ToString(),
                    FailReason = reason
                };
                devControlLog.Save();
                UploadControlCommand(controlResult, fac[0].Facility); //上传控制指令
                Thread.Sleep(50);
            });
        }