public List <Model.LoopModel> CreateLoops <T>(int loopsAmount, int deviceAmount, Model.ControllerModel controller, IDeviceService <T> deviceService) { string strMachineNumber = controller.MachineNumber; ControllerOperationCommon controllerBase = new ControllerOperationCommon(); int loopID = controllerBase.GetMaxLoopID(); string strLoopLengthFormat = "#"; for (int i = 0; i < controller.LoopAddressLength; i++) { strLoopLengthFormat += "0"; } List <Model.LoopModel> lstLoopModel = new List <LoopModel>(); for (int i = 0; i < loopsAmount; i++) //创建回路 { LoopModel loop = new LoopModel(); loop.Controller = controller; loop.ID = loopID++; loop.Code = strMachineNumber + i.ToString(strLoopLengthFormat); loop.Name = strMachineNumber + i.ToString(strLoopLengthFormat); loop.DeviceAmount = deviceAmount; loop.SetDevices <T>(deviceService.InitializeDevices(deviceAmount)); lstLoopModel.Add(loop); loop.IsLoopDataDirty = true; // SetDataDirty(); } return(lstLoopModel); }
public bool AddLoops(LoopModel loop, string machineNumber, int loopsAmount) { try { ControllerOperationCommon controllerBase = new ControllerOperationCommon(); int loopID = controllerBase.GetMaxLoopID(); //ControllerModel controller = ProjectManager.GetInstance.GetPrimaryController(); int[] loopsCode = GetAllLoopCode(_controller, null); int currentMaxLoopCode = loopsCode.Max(); IControllerConfig config = ControllerConfigManager.GetConfigObject(_controller.Type); short allowMaxLoopValue = config.GetMaxLoopAmountValue(); if (loopsAmount > allowMaxLoopValue) { //超出最大数回数 return(false); } if ((allowMaxLoopValue - currentMaxLoopCode) < loopsAmount) { //剩余回路空间无法创建指定回路数量的回路 return(false); } string strLoopLengthFormat = "#"; for (int i = 0; i < _controller.LoopAddressLength; i++) { strLoopLengthFormat += "0"; } for (int i = 1; i <= loopsAmount; i++) { LoopModel l = new LoopModel(); l.ID = ++loopID; l.Code = _controller.MachineNumber + (currentMaxLoopCode + i).ToString().PadLeft(_controller.LoopAddressLength, '0'); l.Name = _controller.MachineNumber + (currentMaxLoopCode + i).ToString().PadLeft(_controller.LoopAddressLength, '0'); //l.Code = (currentMaxLoopCode + i).ToString().PadLeft(_controller.LoopAddressLength, '0'); //l.Name = loop.Name+i.ToString(); l.DeviceAmount = loop.DeviceAmount; l.Controller = _controller; _controller.Loops.Add(l); // SetDataDirty(); } } catch { return(false); } return(true); }
public bool AddLoops(LoopModel loop, string machineNumber, int loopsAmount) { try { ControllerOperationCommon controllerBase = new ControllerOperationCommon(); int loopID = controllerBase.GetMaxLoopID(); //ControllerModel controller = ProjectManager.GetInstance.GetPrimaryController(); int[] loopsCode = GetAllLoopCode(_controller, null); int currentMaxLoopCode = loopsCode.Max(); int specifiedLoopCode = 0; //指定的回路号 bool loopCodeExistFlag = false; //回路号已经存在标志 //if (loop.Code != "") //{ // specifiedLoopCode=Convert.ToInt32(loop.Code); // if (specifiedLoopCode > currentMaxLoopCode) // { // currentMaxLoopCode = specifiedLoopCode; // } //} for (int i = 0; i < loopsCode.Length; i++) { if (loopsCode[i] == specifiedLoopCode) { loopCodeExistFlag = true; break; } } IControllerConfig config = ControllerConfigManager.GetConfigObject(_controller.Type); short allowMaxLoopValue = config.GetMaxLoopAmountValue(); if (loopsAmount == 0) { return(false); } if (loopsAmount > allowMaxLoopValue) { //超出最大数回数 return(false); } if ((allowMaxLoopValue - currentMaxLoopCode) < loopsAmount) { //剩余回路空间无法创建指定回路数量的回路 return(false); } string strLoopLengthFormat = "#"; for (int i = 0; i < _controller.LoopAddressLength; i++) { strLoopLengthFormat += "0"; } for (int i = 1; i <= loopsAmount; i++) { LoopModel l = new LoopModel(); l.ID = ++loopID; if (!loopCodeExistFlag) { if (i == 1) //减少复杂性,只对指定的回路号使用一次 { l.Code = _controller.MachineNumber + loop.Code.ToString().PadLeft(_controller.LoopAddressLength, '0'); } else { l.Code = _controller.MachineNumber + (currentMaxLoopCode + i - 1).ToString().PadLeft(_controller.LoopAddressLength, '0'); } } else { l.Code = _controller.MachineNumber + (currentMaxLoopCode + i).ToString().PadLeft(_controller.LoopAddressLength, '0'); } l.Name = loop.Name + "(" + l.Code + ")";// _controller.MachineNumber + (currentMaxLoopCode + i).ToString().PadLeft(_controller.LoopAddressLength, '0'); //l.Code = (currentMaxLoopCode + i).ToString().PadLeft(_controller.LoopAddressLength, '0'); //l.Name = loop.Name+i.ToString(); l.DeviceAmount = loop.DeviceAmount; l.Controller = _controller; l.ControllerID = _controller.ID; InitializeDevicesToLoop(_controller.Type, l); _controller.Loops.Add(l); // SetDataDirty(); } } catch { return(false); } return(true); }