private void SavePdo(List <ModuleInfoBase> ListAdjust, EnumModuleIOType IOType)
        {
            int SubIdx = 1;
            var n      = Xml.GetSingleElement(null, "EtherCATInfo", "Descriptions", "Devices", "Device", IOType == EnumModuleIOType.OUT? "RxPdo" : "TxPdo");

            while (Xml.GetMutifyElement(n, "Entry").Count() > 0)
            {
                n.Elements().ElementAt(n.Elements().Count() - 1).Remove();
            }

            foreach (var Module in ListAdjust)
            {
                var DesModules = Module.ModuleList.Where(m => m.IOType == IOType);
                for (int j = 0; j < DesModules.Count(); j++)
                {
                    var DesModule = DesModules.ElementAt(j);
                    var e         = Xml.CreateElement("Entry");
                    Xml.SetSubElement(e, "Index", "SubIndex", "BitLen", "Name", "DataType");

                    Xml.SetSubElementValue(e, "Index", IOType == EnumModuleIOType.OUT? "#x7010" : "#x6001");
                    Xml.SetSubElementValue(e, "SubIndex", $"{SubIdx++}");
                    Xml.SetSubElementValue(e, "BitLen", $"{DesModule.BitSize}");
                    Xml.SetSubElementValue(e, "Name", $"{DesModule.Header}{Module.Name}");
                    Xml.SetSubElementValue(e, "DataType", $"{DesModule.DataTypeOfSubItem}");

                    Xml.SetSubElement(n, e);
                }
            }
        }
        private void Savex2(List <ModuleInfoBase> ListAdjust, EnumModuleIOType IOType)
        {
            int SubIdx = 1;
            var n      = Xml.GetSingleElement(null, "EtherCATInfo", "Descriptions", "Devices", "Device", "Profile", "Dictionary", "Objects");
            var es     = Xml.GetMutifyElement(n, "Object");
            var Dic    = new Dictionary <string, string>();

            Dic.Add("Index", IOType == EnumModuleIOType.OUT? "#x7010" : "#x6001");
            var v = Xml.GetElementFromMutiElement(es, Dic);

            var infoE = Xml.GetSingleElement(v, "Info");
            var ss    = Xml.GetMutifyElement(infoE, "SubItem");

            while (Xml.GetMutifyElement(infoE, "SubItem").Count() > 1)
            {
                infoE.Elements().ElementAt(infoE.Elements().Count() - 1).Remove();
            }

            StringBuilder sb = new StringBuilder();

            foreach (var Module in ListAdjust)
            {
                var DesModules = Module.ModuleList.Where(m => m.IOType == IOType);
                for (int j = 0; j < DesModules.Count(); j++)
                {
                    var DesModule = DesModules.ElementAt(j);
                    var e         = Xml.CreateElement("SubItem");
                    Xml.SetSubElement(e, "Name", "Info");

                    Xml.SetSubElementValue(e, "Name", $"{DesModule.Header}{Module.Name}");
                    var ee = Xml.GetSingleElement(e, "Info");
                    Xml.SetSubElement(ee, "DefaultData");
                    //00-8Bit, 0000-16Bit, 00000000-32Bit
                    sb.Clear();
                    for (int i = 0; i < DesModule.BitSize / 8; i++)
                    {
                        sb.Append("00");
                    }
                    Xml.SetSubElementValue(ee, "DefaultData", sb.ToString());
                    Xml.SetSubElement(infoE, e);
                    SubIdx++;
                }
            }
            //修改第一个SubItem的DefaultData
            var FirstE = Xml.GetSingleElement(infoE, "SubItem", "Info");

            Xml.SetSubElementValue(FirstE, "DefaultData", $"{SubIdx - 1}");
        }
        /// <summary>
        /// 输出的详细名称
        /// </summary>
        /// <param name="ListAdjust"></param>
        private void SaveDT2(List <ModuleInfoBase> ListAdjust, EnumModuleIOType IOType)
        {
            int BitOffs = 16;
            int SubIdx  = 1;

            var n   = Xml.GetSingleElement(null, "EtherCATInfo", "Descriptions", "Devices", "Device", "Profile", "Dictionary", "DataTypes");
            var es  = Xml.GetMutifyElement(n, "DataType");
            var Dic = new Dictionary <string, string>();

            Dic.Add("Name", IOType == EnumModuleIOType.OUT? "DT7010" : "DT6001");
            var v  = Xml.GetElementFromMutiElement(es, Dic);
            var ss = Xml.GetMutifyElement(v, "SubItem");

            while (Xml.GetMutifyElement(v, "SubItem").Count() > 1)
            {
                v.Elements().ElementAt(v.Elements().Count() - 1).Remove();
            }

            foreach (var Module in ListAdjust)
            {
                var DesModules = Module.ModuleList.Where(m => m.IOType == IOType);
                for (int j = 0; j < DesModules.Count(); j++)
                {
                    var DesModule = DesModules.ElementAt(j);
                    var e         = Xml.CreateElement("SubItem");
                    Xml.SetSubElement(e, "SubIdx", "Name", "Type", "BitSize", "BitOffs", "Flags");

                    Xml.SetSubElementValue(e, "SubIdx", $"{SubIdx++}");
                    Xml.SetSubElementValue(e, "Name", $"{DesModule.Header}{Module.Name}");
                    Xml.SetSubElementValue(e, "Type", $"{DesModule.DataTypeOfSubItem.ToString()}");
                    Xml.SetSubElementValue(e, "BitSize", $"{DesModule.BitSize}");
                    Xml.SetSubElementValue(e, "BitOffs", $"{BitOffs}");
                    BitOffs += DesModule.BitSize;

                    var ee = Xml.GetSingleElement(e, "Flags");
                    Xml.SetSubElement(ee, "Access", "Category");

                    var eee = Xml.GetSingleElement(ee, "Access");
                    Xml.SetSubElementValue(ee, "Access", "ro");
                    Xml.SetSubElementValue(ee, "Category", "o");

                    Xml.SetSubElement(v, e);
                }
            }
            Xml.SetSubElementValue(v, "BitSize", $"{BitOffs}");
        }
Example #4
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            EnumModuleIOType msg = (EnumModuleIOType)value;

            switch (msg)
            {
            case EnumModuleIOType.IN:
                return(new SolidColorBrush(Color.FromRgb(128, 150, 128)));

            case EnumModuleIOType.OUT:
                return(new SolidColorBrush(Color.FromRgb(255, 255, 255)));

            default:
                break;
            }
            return(new SolidColorBrush(Color.FromRgb(128, 150, 128)));
        }
Example #5
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            EnumModuleIOType type   = (EnumModuleIOType)value;
            BitmapImage      bitmap = null;
            var basePath            = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

            switch (type)
            {
            case EnumModuleIOType.IN:
                bitmap = new BitmapImage(new Uri(basePath + @"images\in.png", UriKind.Absolute));
                break;

            case EnumModuleIOType.OUT:
                bitmap = new BitmapImage(new Uri(basePath + @"images\out.png", UriKind.Absolute));
                break;

            default:
                break;
            }
            return(bitmap);
        }
        private void Savex1(List <ModuleInfoBase> ListAdjust, EnumModuleIOType IOType)
        {
            int SubIdx = 1;
            var n      = Xml.GetSingleElement(null, "EtherCATInfo", "Descriptions", "Devices", "Device", "Profile", "Dictionary", "Objects");
            var es     = Xml.GetMutifyElement(n, "Object");
            var Dic    = new Dictionary <string, string>();

            Dic.Add("Index", IOType == EnumModuleIOType.OUT? "#x1601" : "#x1A00");
            var v = Xml.GetElementFromMutiElement(es, Dic);

            var infoE = Xml.GetSingleElement(v, "Info");
            var ss    = Xml.GetMutifyElement(infoE, "SubItem");

            while (Xml.GetMutifyElement(infoE, "SubItem").Count() > 1)
            {
                infoE.Elements().ElementAt(infoE.Elements().Count() - 1).Remove();
            }

            foreach (var Module in ListAdjust)
            {
                var DesModules = Module.ModuleList.Where(m => m.IOType == IOType);
                for (int j = 0; j < DesModules.Count(); j++)
                {
                    var DesModule = DesModules.ElementAt(j);
                    var e         = Xml.CreateElement("SubItem");
                    Xml.SetSubElement(e, "Name", "Info");

                    Xml.SetSubElementValue(e, "Name", string.Format("SunIndex {0:D3}", SubIdx));
                    var ee = Xml.GetSingleElement(e, "Info");
                    Xml.SetSubElement(ee, "DefaultData");
                    //08011070   0710    01   08
                    Xml.SetSubElementValue(ee, "DefaultData", string.Format("{0:D2}{1:D2}{2}", DesModule.BitSize, SubIdx++, IOType == EnumModuleIOType.OUT? "1070" : "0160"));
                    Xml.SetSubElement(infoE, e);
                }
            }
            //修改第一个SubItem的DefaultData
            var FirstE = Xml.GetSingleElement(infoE, "SubItem", "Info");

            Xml.SetSubElementValue(FirstE, "DefaultData", $"{SubIdx - 1}");
        }
Example #7
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            EnumModuleIOType type = (EnumModuleIOType)value;

            return(type == EnumModuleIOType.OUT);
        }