Exemplo n.º 1
0
        public static FuncBlockViewModel CreateFuncBlockByXElement(XElement xEle, ProjectModel pmodel)
        {
            FuncBlockViewModel result = new FuncBlockViewModel(xEle.Attribute("Name").Value, pmodel);

            result.Code = xEle.Value;
            return(result);
        }
Exemplo n.º 2
0
 public void Remove(FuncBlockViewModel fbmodel)
 {
     if (FuncBlocks.Contains(fbmodel))
     {
         FuncBlocks.Remove(fbmodel);
         IsModify = true;
     }
 }
Exemplo n.º 3
0
 public void Add(FuncBlockViewModel fbmodel)
 {
     if (!FuncBlocks.Contains(fbmodel))
     {
         FuncBlocks.Add(fbmodel);
         IsModify = true;
     }
 }
Exemplo n.º 4
0
        public static XElement CreateXElementByFuncBlock(FuncBlockViewModel fbmodel)
        {
            XElement result = new XElement("FuncBlock");

            result.SetAttributeValue("Name", fbmodel.ProgramName);
            result.Value = fbmodel.Code;
            return(result);
        }
Exemplo n.º 5
0
 public void CreateFuncBlockModel(FuncBlockViewModel fbvmodel)
 {
     if (_generateViewModel.FBModel == null)
     {
         _generateViewModel.FBModel = new GenerateFuncBlockModel();
     }
     _generateViewModel.FBModel.Append(fbvmodel.Code);
 }
Exemplo n.º 6
0
        public ProjectModel(string projectname)
        {
            ProjectName = projectname;
            MainRoutine = new LadderDiagramViewModel("Main", this);
            MainRoutine.IsMainLadder = true;
            MMonitorManager          = new MonitorManager(this);
            MTVModel = new ModbusTableViewModel(this);
            MMonitorManager.MMWindow.Manager = MMonitorManager;
            PManager = new SerialPortManager();
            UManager = new USBManager();
            StreamReader sr = new StreamReader(
                String.Format(@"{0:s}\simug\simuflib.c", FileHelper.AppRootPath));
            FuncBlockViewModel libfuncblock = new FuncBlockViewModel(Properties.Resources.Library_Function, this);

            libfuncblock.Code       = sr.ReadToEnd();
            libfuncblock.IsReadOnly = true;
            LibFuncBlock            = libfuncblock;
        }
Exemplo n.º 7
0
        /// <summary>
        /// 写入函数块内的代码文本
        /// </summary>
        /// <param name="fbvmodel">函数块</param>
        /// <param name="option">选项</param>
        static private void Write(FuncBlockViewModel fbvmodel, int option)
        {
            edata.Add(0xfd);
            Write(fbvmodel.ProgramName);
            if ((option & OPTION_COMMENT) == 0)
            {
                Write32(fbvmodel.Code);
                return;
            }
            List <FuncBlock_Comment> comments = new List <FuncBlock_Comment>();

            GetComments(fbvmodel.Model.Root, comments);
            comments.Sort((fb1, fb2) =>
            {
                return(fb1.IndexStart.CompareTo(fb2.IndexStart));
            });
            int start = 0, end = 0;
            int szid = edata.Count();

            edata.Add(0x00);
            edata.Add(0x00);
            foreach (FuncBlock_Comment comment in comments)
            {
                end = comment.IndexStart;
                for (int i = start; i < end; i++)
                {
                    edata.Add((byte)fbvmodel.Code[i]);
                }
                start = comment.IndexEnd + 1;
            }
            end = fbvmodel.Code.Count();
            for (int i = start; i < end; i++)
            {
                edata.Add((byte)fbvmodel.Code[i]);
            }
            int sz = edata.Count() - szid - 2;

            edata[szid]     = Int32_Low(sz);
            edata[szid + 1] = Int32_High(sz);
        }
Exemplo n.º 8
0
        static private void Read(ProjectModel pmodel, IList <byte> _odata, IList <byte> _edata)
        {
            odata = _odata;
            oid   = 0;
            edata = _edata;
            eid   = 0;
            regs.Clear();
            try
            {
                option = edata[eid++];
                while (eid < edata.Count)
                {
                    int head = edata[eid++];
                    switch (head)
                    {
                    case 0xff:
                        LadderDiagramViewModel ldvmodel = new LadderDiagramViewModel(String.Empty, pmodel);
                        Read(ldvmodel);
                        if (ldvmodel.ProgramName.Equals("main"))
                        {
                            pmodel.MainRoutine = ldvmodel;
                        }
                        else
                        {
                            pmodel.Add(ldvmodel);
                        }
                        break;

                    case 0xfd:
                        FuncBlockViewModel fbvmodel = new FuncBlockViewModel(String.Empty, pmodel);
                        Read(fbvmodel);
                        pmodel.Add(fbvmodel);
                        break;

                    case 0xfc:
                        ReadRegisters();
                        break;

                    case 0xfb:
                        ModbusTableViewModel mtvmodel = new ModbusTableViewModel(pmodel);
                        Read(mtvmodel);
                        pmodel.MTVModel = mtvmodel;
                        break;

                    case 0xf9:
                        MainMonitor mmoni = new MainMonitor(pmodel);
                        Read(mmoni);
                        pmodel.MMonitorManager.MMWindow = mmoni;
                        break;

                    default:
                        throw new FormatException(
                                  String.Format("非法头标志符0x{0x2X}", head));
                    }
                }
                pmodel.MainRoutine = new LadderDiagramViewModel("main", pmodel);
            }
            catch (OutOfMemoryException)
            {
            }
            catch (FormatException)
            {
            }
        }
Exemplo n.º 9
0
 static private void Read(FuncBlockViewModel fbvmodel)
 {
     fbvmodel.ProgramName = ReadTextE8();
     fbvmodel.Code        = ReadTextE16();
 }