Exemple #1
0
        private void AddButton_Click(object sender, RoutedEventArgs e)
        {
            this.ErrorMessagePromptName.Text     = "";
            this.ErrorMessagePromptFilePath.Text = "";
            bool verifyFlag = true;

            ProjectConfig projectConfig = new ProjectConfig();
            Dictionary <string, RuleAndErrorMessage> dictRule = projectConfig.GetProjectInfoRegularExpression();
            RuleAndErrorMessage rule = dictRule["Name"];

            Regex exminator = new Regex(rule.Rule);

            if (!exminator.IsMatch(this.ProjectNameInputTextBox.Text))
            {
                this.ErrorMessagePromptName.Text = rule.ErrorMessage;
                verifyFlag = false;
            }

            if (string.IsNullOrEmpty(this.FilePathInputTextBox.Text))
            {
                this.ErrorMessagePromptFilePath.Text += "请选择有效路径";
                verifyFlag = false;
            }
            if (verifyFlag)
            {
                SCA.Model.ProjectModel project = new Model.ProjectModel();
                project.Name        = this.ProjectNameInputTextBox.Text;
                project.SavePath    = this.FilePathInputTextBox.Text + "\\" + project.Name + ".nt";
                project.FileVersion = BusinessLogic.DBFileVersionManager.CurrentDBFileVersion;
                SCA.BusinessLib.ProjectManager.GetInstance.CreateProject(project);
                RaiseEvent(new RoutedEventArgs(AddButtonClickEvent));
            }
        }
        private void AddButton_Click(object sender, RoutedEventArgs e)
        {
            ClearAllErrorMessage();
            ControllerModel controller = new ControllerModel();

            bool verifyFlag = true;

            if (ControllerTypeComboBox.SelectedItem != null)
            {
                controller.Type = (ControllerType)ControllerTypeComboBox.SelectedItem;
            }
            else
            {
                this.ErrorMessageControllerType.Text = "请选择控制器类型";
                verifyFlag = false;
            }
            if (DeviceCodeLengthComboBox.SelectedItem != null)
            {
                controller.DeviceAddressLength = Convert.ToInt32(DeviceCodeLengthComboBox.SelectedItem);
            }
            else
            {
                this.ErrorMessageControllerDeviceAddressLength.Text = "请选择器件长度";
                verifyFlag = false;
            }
            if (SerialPortNumberComboBox.SelectedItem != null)
            {
                controller.PortName = SerialPortNumberComboBox.SelectedItem.ToString();
            }
            else
            {
                this.ErrorMessageControllerPortName.Text = "请选择端口";
                verifyFlag = false;
            }
            if (this.ControllerMachineNumInputTextBox.Text == "")
            {
                this.ErrorMessageControllerDeviceAddressLength.Text = "请填写器件长度";
                verifyFlag = false;
            }
            if (verifyFlag)
            {
                controller.Name              = ControllerNameInputTextBox.Text;
                controller.MachineNumber     = ControllerMachineNumInputTextBox.Text;
                controller.LoopAddressLength = 2;//回路地址长度默认为2
                IControllerConfig config = ControllerConfigManager.GetConfigObject(controller.Type);
                int maxMachineNumber     = config.GetMaxMachineAmountValue(controller.DeviceAddressLength);
                Dictionary <string, RuleAndErrorMessage> dictRule = config.GetControllerInfoRegularExpression(controller.DeviceAddressLength);

                RuleAndErrorMessage rule = dictRule["Name"];

                Regex exminator = new Regex(rule.Rule);
                if (!string.IsNullOrEmpty(controller.Name))
                {
                    if (!exminator.IsMatch(controller.Name))
                    {
                        this.ErrorMessageControllerName.Text = rule.ErrorMessage;
                        verifyFlag = false;
                    }
                }
                else
                {
                    this.ErrorMessageControllerName.Text = "请填写控制器名称";
                    verifyFlag = false;
                }
                rule      = dictRule["MachineNumber"];
                exminator = new Regex(rule.Rule);
                if (!exminator.IsMatch(ControllerMachineNumInputTextBox.Text))
                {
                    this.ErrorMessageControllerMachineNumber.Text = rule.ErrorMessage;
                    verifyFlag = false;
                }
                else
                {
                    controller.MachineNumber = this.ControllerMachineNumInputTextBox.Text;
                }
                if (verifyFlag)
                {
                    if (Convert.ToInt16(controller.MachineNumber) > maxMachineNumber)
                    {
                        this.ErrorMessageControllerMachineNumber.Text = "机号超出范围,最大机号为" + maxMachineNumber.ToString();

                        verifyFlag = false;
                    }
                }
            }
            if (verifyFlag)
            {
                ControllerManager controllerManager = new ControllerManager();
                controllerManager.InitializeAllControllerOperation(null);
                IControllerOperation controllerOperation = controllerManager.GetController(controller.Type);
                controllerOperation.AddControllerToProject(controller);
                RaiseEvent(new RoutedEventArgs(AddButtonClickEvent));
            }
        }
Exemple #3
0
        public void ComfirmExecute()
        {
            this.ErrorMessagePromptImportFilePath = "";
            this.ErrorMessagePromptName           = "";
            this.ErrorMessagePromptSaveFilePath   = "";
            bool          verifyFlag    = true;
            ProjectConfig projectConfig = new ProjectConfig();
            Dictionary <string, RuleAndErrorMessage> dictRule = projectConfig.GetProjectInfoRegularExpression();
            RuleAndErrorMessage rule = dictRule["Name"];
            Regex exminator          = new Regex(rule.Rule);

            if (!string.IsNullOrEmpty(ProjectName))
            {
                if (!exminator.IsMatch(ProjectName))
                {
                    ErrorMessagePromptName = rule.ErrorMessage;
                    verifyFlag             = false;
                }
            }
            else
            {
                ErrorMessagePromptName = "请输入工程名称";
                verifyFlag             = false;
            }
            if (string.IsNullOrEmpty(ImportedFilePath))
            {
                ErrorMessagePromptImportFilePath = "请选择有效导入文件路径";
                verifyFlag = false;
            }
            if (string.IsNullOrEmpty(SavedFilePath))
            {
                ErrorMessagePromptSaveFilePath = "请选择有效文件存储路径";
                verifyFlag = false;
            }
            if (verifyFlag)
            {
                IFileService         _fileService         = new FileService();
                ILogRecorder         _logRecorder         = null;
                string               strImportedFilePath  = this.ImportedFilePath;
                string               strExtentionName     = strImportedFilePath.Substring(strImportedFilePath.LastIndexOf(".") + 1);
                DBFileVersionManager dbFileVersionManager = new DBFileVersionManager(this.ImportedFilePath, _logRecorder, _fileService);
                //取得某一系列的数据文件操作服务(4,5,6 系列没有项目,7开始有项目信息,以文件扩展名作为划分依据)
                IDBFileVersionService dbFileVersionService = dbFileVersionManager.GetDBFileVersionServiceByExtentionName(strExtentionName);
                //取得文件版本
                int fileVersion = dbFileVersionService.GetFileVersion();
                dbFileVersionService = dbFileVersionManager.GetDBFileVersionServiceByVersionID(fileVersion);
                //取得项目信息
                ProjectModel project = dbFileVersionService.GetProject(1);
                project.Name     = this.ProjectName;                                 //以当前设置的名称作为项目名
                project.SavePath = this.SavedFilePath + "\\" + project.Name + ".nt"; //以当前设置的路径作为项目的存储路径
                IControllerOperation controllerOperation = null;
                //取得项目下所有控制器信息
                List <ControllerModel> lstController = dbFileVersionService.GetControllersByProject(project);
                int             dataFileVersion      = 0;     //数据文件版本
                ControllerModel controller           = null;
                foreach (var controllerInfo in lstController) //取得控制器操作服务
                {
                    if (project.FileVersion == -1)            //4,5,6版本文件无项目信息
                    {
                        project.FileVersion = controllerInfo.FileVersion;
                    }
                    switch (controllerInfo.Type)
                    {
                    case ControllerType.FT8000:
                        controllerOperation = new ControllerOperation8000();
                        break;

                    case ControllerType.FT8003:
                        controllerOperation = new ControllerOperation8003();
                        break;

                    case ControllerType.NT8001:
                        controllerOperation = new ControllerOperation8001();
                        break;

                    case ControllerType.NT8007:
                        controllerOperation = new ControllerOperation8007();
                        break;

                    case ControllerType.NT8021:
                        controllerOperation = new ControllerOperation8021();
                        break;

                    case ControllerType.NT8036:
                        controllerOperation = new ControllerOperation8036();
                        break;
                    }
                    if (controllerOperation != null)                                                                                             //合法控制器类型
                    {
                        dataFileVersion      = Convert.ToInt32(project.FileVersion);                                                             //取得当前项目文件版本号
                        dbFileVersionService = dbFileVersionManager.GetDBFileVersionServiceByVersionID(dataFileVersion);                         //取得当前文件的数据文件服务
                        //controllerInfo = controllerOperation.OrganizeControllerInfoFromOldVersionSoftwareDataFile(oldVersionService);
                        controller = controllerOperation.OrganizeControllerInfoFromSpecifiedDBFileVersion(dbFileVersionService, controllerInfo); //取得组织完成的控制器信息
                    }
                    if (controller != null)                                                                                                      //将组织完成的信息增加至项目中
                    {
                        project.Controllers.Add(controllerInfo);
                    }
                }
                if (dataFileVersion != 0)//将所有数据转换为当前软件应用的数据版本
                {
                    project = dbFileVersionManager.VersionConverter(dataFileVersion, DBFileVersionManager.CurrentDBFileVersion, project);
                }
                SCA.BusinessLib.ProjectManager.GetInstance.CreateProject(project);
                EventMediator.NotifyColleagues("DisplayTheOpenedProject", null);
            }
        }
        //public static readonly RoutedEvent AllControllerInfoUploadedEvent = EventManager.RegisterRoutedEvent(
        //    "AllControllerInfoUploaded", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(SummaryInfoView)
        //);


        //public event RoutedEventHandler AllControllerInfoUploaded
        //{
        //    add { AddHandler(AllControllerInfoUploadedEvent, value); }
        //    remove { RemoveHandler(AllControllerInfoUploadedEvent, value); }
        //}


        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            this.ErrorMessage.Text = "";
            // if (TheController != null)
            // {
            // ControllerModel controller=new ControllerModel();
            // //controller.ID = TheController.ID;

            // ControllerModel controller = ((SCA.WPF.ViewModelsRoot.ViewModels.Query.SummaryInfoViewModel)this.DataContext).TheController;
            // TheController.Name = ControllerNameInputTextBox.Text;
            // TheController.MachineNumber = MachineNumberInputTextBox.Text;

            // TheController.BaudRate = Convert.ToInt32(BaudsRateComboBox.SelectedItem);

            // TheController.PortName = ComPortComboBox.SelectedItem.ToString();
            SCA.WPF.ViewModelsRoot.ViewModels.Query.SummaryInfoViewModel vm = (SCA.WPF.ViewModelsRoot.ViewModels.Query.SummaryInfoViewModel) this.DataContext;
            ControllerModel controller = vm.TheController;

            IControllerConfig config = ControllerConfigManager.GetConfigObject(controller.Type);
            int maxMachineNumber     = config.GetMaxMachineAmountValue(controller.DeviceAddressLength);
            Dictionary <string, RuleAndErrorMessage> dictRule = config.GetControllerInfoRegularExpression(controller.DeviceAddressLength);

            RuleAndErrorMessage rule = dictRule["Name"];

            Regex  exminator    = new Regex(rule.Rule);
            string errorMessage = "";
            bool   verifyFlag   = true;

            if (!exminator.IsMatch(ControllerNameInputTextBox.Text))
            {
                errorMessage += "控制器名称:" + rule.ErrorMessage + "; ";
                //errorMessage += rule.ErrorMessage+";";
                verifyFlag = false;
            }
            rule      = dictRule["MachineNumber"];
            exminator = new Regex(rule.Rule);
            if (!exminator.IsMatch(MachineNumberInputTextBox.Text))
            {
                //errorMessage += rule.ErrorMessage+";";
                errorMessage += "控制器机号:" + rule.ErrorMessage + "; ";
                verifyFlag    = false;
            }

            if (verifyFlag)
            {
                if (Convert.ToInt16(MachineNumberInputTextBox.Text) > maxMachineNumber)
                {
                    errorMessage += "控制器机号:机号超出范围,最大机号为" + maxMachineNumber.ToString() + "; ";
                    //errorMessage += "机号超出范围,最大机号为" + maxMachineNumber.ToString();
                    verifyFlag = false;
                }
            }
            if (verifyFlag)
            {
                controller.Name          = ControllerNameInputTextBox.Text;
                controller.MachineNumber = MachineNumberInputTextBox.Text;

                controller.PortName = ComPortComboBox.SelectedItem.ToString();
                controller.BaudRate = Convert.ToInt32(BaudsRateComboBox.SelectedItem);
                vm.SaveExecute(controller);
                controller.IsDirty = true;

                EventMediator.NotifyColleagues("RefreshNavigator", controller);
                RaiseEvent(new RoutedEventArgs(AddButtonClickEvent, controller));
            }
            else
            {
                this.ErrorMessage.Text       = errorMessage;
                this.ErrorMessage.Visibility = Visibility.Visible;
            }
            // }
        }
        public void ConfirmExecute()
        {
            ClearAllErrorMessage();
            RuleAndErrorMessage rule;
            Regex             exminator;
            IControllerConfig config = ControllerConfigManager.GetConfigObject(TheController.Type);
            bool verifyFlag          = true;

            if (LoopCode == null)
            {
                ErrorMessageLoopCode = "请指定回路号";
                verifyFlag           = false;
            }
            if (DeviceAmount != null)
            {
                rule      = new RuleAndErrorMessage("^[0-9]{1,3}$", "请填写数字");
                exminator = new Regex(rule.Rule);
                if (!exminator.IsMatch(DeviceAmount))
                {
                    ErrorMessageDeviceAmount = rule.ErrorMessage;
                    verifyFlag = false;
                }
                else
                {
                    int maxValue = config.GetMaxDeviceAmountValue();
                    if (Convert.ToInt32(DeviceAmount) > maxValue)
                    {
                        ErrorMessageDeviceAmount = "控制器最大节点数为:" + maxValue.ToString();
                        verifyFlag = false;
                    }
                }
            }
            if (LoopsAmount != null)
            {
                rule      = new RuleAndErrorMessage("^[0-9]{1,3}$", "请填写数字");
                exminator = new Regex(rule.Rule);
                if (!exminator.IsMatch(LoopsAmount))
                {
                    ErrorMessageLoopAmount = rule.ErrorMessage;
                    verifyFlag             = false;
                }
                else
                {
                    int maxValue = config.GetMaxLoopAmountValue();
                    if (Convert.ToInt32(LoopsAmount) > maxValue)
                    {
                        ErrorMessageLoopAmount = "控制器最大回路数为:" + maxValue.ToString();
                        verifyFlag             = false;
                    }
                }
            }
            rule      = new RuleAndErrorMessage("^[A-Za-z0-9\u4E00-\u9FFF()()]{0,8}$", "允许填写”中英文字符、阿拉伯数字、圆括号”,最大长度8个字符");
            exminator = new Regex(rule.Rule);
            if (!exminator.IsMatch(LoopName))
            {
                ErrorMessageLoopName = rule.ErrorMessage;
                verifyFlag           = false;
            }
            if (verifyFlag)
            {
                LoopModel loop = new LoopModel();
                loop.Code         = LoopCode;
                loop.DeviceAmount = Convert.ToInt32(DeviceAmount);
                loop.Name         = LoopName;
                loop.Controller   = TheController;
                loop.ControllerID = TheController.ID;
                SCA.Interface.ILoopService loopService = new SCA.BusinessLib.BusinessLogic.LoopService(loop.Controller);
                bool result = loopService.AddLoops(loop, ControllerMachineNumber, Convert.ToInt32(LoopsAmount));
                SCA.WPF.Infrastructure.EventMediator.NotifyColleagues("RefreshNavigator", result);
            }
        }