/// <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); } }
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(); }
/// <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); }); }