Exemplo n.º 1
0
 public EdGroupAddress(KNXGroupAddress address)
 {
     this.Id         = address.Id;
     this.Name       = address.Name;
     this.KnxAddress = KNXAddressHelper.AddressToString(address.KnxAddress);
     this.Type       = (KNXDataType)address.Type;
     //this.KnxDPTName = address.KnxDPTName;
     //this.KnxSize = address.KnxSize;
     this.KnxMainNumber = address.KnxMainNumber;
     this.KnxSubNumber  = address.KnxSubNumber;
     this.DPTName       = address.DPTName;
     //this.DPTText = address.DPTText;
     this.DefaultValue = address.DefaultValue;
     this.Priority     = (KNXPriority)address.Priority;
     //this.WireNumber = address.WireNumber;
     this.IsCommunication = address.IsCommunication;
     this.IsRead          = address.IsRead;
     this.IsWrite         = address.IsWrite;
     this.IsTransmit      = address.IsTransmit;
     this.IsUpgrade       = address.IsUpgrade;
     this.ReadTimeSpan    = address.ReadTimeSpan;
     //this.Tip = address.Tip;
     this.Actions = new List <DatapointActionNode>();
     if (null != address.Actions)
     {
         foreach (KNXDatapointAction action in address.Actions)
         {
             this.Actions.Add(new DatapointActionNode(action));
         }
     }
 }
Exemplo n.º 2
0
 public EdGroupAddress(KNXGroupAddress address)
 {
     this.Id              = address.Id;
     this.Name            = address.Name;
     this.KnxAddress      = KNXAddressHelper.AddressToString(address.KnxAddress);
     this.Type            = (KNXDataType)address.Type;
     this.KnxMainNumber   = address.KnxMainNumber;
     this.KnxSubNumber    = address.KnxSubNumber;
     this.DPTName         = address.DPTName;
     this.DefaultValue    = address.DefaultValue;
     this.Priority        = (KNXPriority)address.Priority;
     this.IsCommunication = address.IsCommunication;
     this.IsRead          = address.IsRead;
     this.IsWrite         = address.IsWrite;
     this.IsTransmit      = address.IsTransmit;
     this.IsUpgrade       = address.IsUpgrade;
     this.Actions         = new GroupAddressActions(address.Actions);
     //this.Actions = new List<DatapointActionNode>();
     //if (null != address.Actions)
     //{
     //    foreach (DatapointAction action in address.Actions)
     //    {
     //        this.Actions.Add(new DatapointActionNode(action));
     //    }
     //}
 }
Exemplo n.º 3
0
        private void RefreshDataTable(List <ImGroupAddr> data)
        {
            var sortData = (from i in data orderby KNXAddressHelper.StringToAddress(i.KnxAddress) ascending, i.KnxAddress select i).ToList();

            this.dataGridView.DataSource = new BindingList <ImGroupAddr>(sortData);

            FormatGrid(this.dataGridView);
        }
        /// <summary>
        /// 刷新组地址表 dgvGroupAddress
        /// </summary>
        private void refreshDataTable(List <MgGroupAddress> data)
        {
            // 排序
            var sortData = (from i in data orderby KNXAddressHelper.StringToAddress(i.KnxAddress) ascending, i.KnxAddress select i).ToList();

            this.dgvGroupAddress.DataSource = new BindingList <MgGroupAddress>(sortData);

            FormatGrid(dgvGroupAddress);
        }
Exemplo n.º 5
0
        private void RefreashTable(List <PcGroupAddress> data)
        {
            var sort1 = (from i in data orderby KNXAddressHelper.StringToAddress(i.KnxAddress) ascending, i.KnxAddress select i).ToList();
            // 排序
            var sort2 = (from i in sort1 orderby i.Selected descending, i.KnxAddress select i).ToList();

            this.dgvData.DataSource = new BindingList <PcGroupAddress>(sort2);

            FormatGrid(dgvData);
        }
Exemplo n.º 6
0
        private void RefreashTable(List <MgGroupAddress> data, List <MgGroupAddress> Selected)
        {
            data     = (from i in data orderby KNXAddressHelper.StringToAddress(i.KnxAddress) ascending, i.KnxAddress select i).ToList();
            Selected = (from i in Selected orderby KNXAddressHelper.StringToAddress(i.KnxAddress) ascending, i.KnxAddress select i).ToList();
            data.InsertRange(0, Selected);

            this.dgvData.DataSource = new BindingList <MgGroupAddress>(data);

            FormatGrid(dgvData);
        }
Exemplo n.º 7
0
        private void LoadAllAddress()
        {
            var data = listAddress.ToList();

            // 排序
            var sortData = (from i in data orderby KNXAddressHelper.StringToAddress(i.KnxAddress) ascending, i.KnxAddress select i).ToList();

            this.dataGridView.DataSource = new BindingList <ImGroupAddr>(sortData);

            FormatGrid(this.dataGridView);
        }
Exemplo n.º 8
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            Address.Name = this.txtName.Text.Trim();

            try
            {
                KNXAddressHelper.StringToAddress(this.txtWriteAddress.Text.Trim());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, UIResMang.GetString("Message6"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.txtWriteAddress.Focus();
                return;
            }
            Address.KnxAddress = this.txtWriteAddress.Text.Trim();

            // 数据类型
            if (string.IsNullOrWhiteSpace(this.btnDPTName.Text))
            {
                MessageBox.Show(UIResMang.GetString("Message46"), UIResMang.GetString("Message6"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.btnDPTName.Focus();
                return;
            }
            DatapointType dpt = DPTHelper.GetTypeNode(this.btnDPTName.Text); //this.tvDPTName.SelectedNode as DatapointType;

            if (null != dpt)
            {
                Address.KnxMainNumber = dpt.KNXMainNumber;
                Address.KnxSubNumber  = dpt.KNXSubNumber;
                Address.DPTName       = dpt.Text;
                Address.Type          = dpt.Type;
            }

            // 优先级
            var selectedTextPriority = this.cmbPriority.SelectedItem;

            if (selectedTextPriority != null)
            {
                KNXPriority priority = KNXPriority.Low;
                Enum.TryParse(selectedTextPriority.ToString(), out priority);
                Address.Priority = priority;
            }

            Address.IsCommunication = this.cbxCommunication.Checked;
            Address.IsRead          = this.cbxRead.Checked;
            Address.IsWrite         = this.cbxWrite.Checked;
            Address.IsTransmit      = this.cbxTransmit.Checked;
            Address.IsUpgrade       = this.cbxUpgrade.Checked;

            this.DialogResult = DialogResult.OK;
        }
Exemplo n.º 9
0
        public KNXGroupAddress ToKnx()
        {
            var address = new KNXGroupAddress();

            address.Id            = this.Id;
            address.Name          = this.Name;
            address.KnxAddress    = KNXAddressHelper.StringToAddress(this.KnxAddress);
            address.Type          = (int)this.Type;
            address.KnxMainNumber = this.KnxMainNumber;
            address.KnxSubNumber  = this.KnxSubNumber;
            //address.KnxSize = this.KnxSize;
            //address.KnxDPTName = this.KnxDPTName;
            //address.Type = (int)this.Type;
            address.DPTName = this.DPTName;
            //address.DPTText = this.DPTText;
            address.DefaultValue = this.DefaultValue;
            address.Priority     = (int)this.Priority;
            //address.WireNumber = this.WireNumber;
            address.IsCommunication = this.IsCommunication;
            address.IsRead          = this.IsRead;
            address.IsWrite         = this.IsWrite;
            address.IsTransmit      = this.IsTransmit;
            address.IsUpgrade       = this.IsUpgrade;
            //address.ReadTimeSpan = this.ReadTimeSpan;
            //address.Tip = this.Tip;
            address.Actions = this.Actions.ToKnx();
            //address.Actions = new List<DatapointAction>();
            //if (null != address.Actions)
            //{
            //    foreach (DatapointActionNode node in this.Actions)
            //    {
            //        address.Actions.Add(node.ToKnx());
            //    }
            //}

            return(address);
        }
        private void btnExportAddr_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;

            btn.Enabled = false;

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
            sfd.Filter           = "Text File(*.txt)|*.txt|All Files(*.*)|*.*";
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                Cursor.Current = Cursors.WaitCursor;
                try
                {
                    StreamWriter sw = new StreamWriter(sfd.FileName);
                    if (null != sw)
                    {
                        sw.Write("名称" + "\t" + "地址" + "\t" + "类型(大小)" + "\r\n");
                        foreach (EdGroupAddress address in this.MgAddressList)
                        {
                            string addr = address.Name + "\t" + address.KnxAddress + "\t" + address.DPTName + "(" + KNXAddressHelper.GetSize(address.Type) + ")" + "\r\n";
                            sw.Write(addr);
                        }
                    }

                    sw.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Cursor.Current = Cursors.Default;
            }

            btn.Enabled = true;
        }
Exemplo n.º 11
0
        /// <summary>
        /// 解析ETS文件
        /// </summary>
        /// <param name="etsProjectFile"></param>
        /// <exception cref="ArgumentNullException"></exception>
        /// <returns></returns>
        public static List <ImGroupAddr> ParseEtsProjectFile(string etsProjectFile, BackgroundWorker worker)
        {
            List <ImGroupAddr> listAddress = new List <ImGroupAddr>();

            // 如果文件存在
            if (File.Exists(etsProjectFile) == true)
            {
                worker.ReportProgress(0, ResourceMng.GetString("TextIsUnziping"));

                // 在当前位置解压文件
                string directoryName = Path.GetDirectoryName(etsProjectFile);
                ZipHelper.UnZipDir(etsProjectFile, directoryName);

                worker.ReportProgress(0, ResourceMng.GetString("TextIsCaluculating"));

                // 查找 0.xml 文件
                const string addressFileName = "0.xml";
                var          addressFiles    = Directory.GetFiles(directoryName, addressFileName, SearchOption.AllDirectories);

                if (addressFiles.Length > 0)
                {
                    string addressFile = addressFiles[0];
                    var    addressXDoc = XDocument.Load(addressFile);
                    addressXDoc.Element("KNX");
                    XNamespace xns = addressXDoc.Root.Name.Namespace;

                    // 从导入的ETS项目中获取group address
                    var groupAddress = from item in addressXDoc.Root.Descendants(xns + attrGroupAddress)
                                       select new ImGroupAddr
                    {
                        Id         = item.Attribute(attrId).Value,
                        Name       = item.Attribute(attrName).Value,
                        KnxAddress = item.Attribute(attrAddress).Value,
                        DPTName    = (null != item.Attribute(attrDatapointType)) ? item.Attribute(attrDatapointType).Value : "",
                    };

                    // 获取数据类型
                    var comObjectInstanceRef = (from item in addressXDoc.Descendants(xns + strSend)
                                                let xElement = item.Parent
                                                               where xElement != null
                                                               select new
                    {
                        GroupAddressRefId = item.Attribute(strGroupAddressRefId).Value,
                        ComObjectInstanceRefId = xElement.Parent.Attribute(strRefId).Value,
                    }).ToLookup(p => p.GroupAddressRefId, p => p.ComObjectInstanceRefId);

                    Dictionary <string, XDocument> xDocs = new Dictionary <string, XDocument>();

                    int   len = groupAddress.ToList().Count;
                    float i   = 0;

                    /* 获取组地址的大小 */
                    foreach (var address in groupAddress.ToList())
                    {
                        ImGroupAddr addr = new ImGroupAddr();
                        addr.Id         = address.Id;
                        addr.Name       = address.Name;
                        addr.KnxAddress = KNXAddressHelper.AddressToString(Convert.ToUInt16(address.KnxAddress));
                        addr.DPTName    = address.DPTName;
                        float f = i++ / len;

                        worker.ReportProgress((int)(f * 100), ResourceMng.GetString("TextIsImportingGroupAddress") + " " + address.Name + " " + addr.KnxAddress);

                        if (comObjectInstanceRef.Contains(address.Id))
                        {
                            var comObjectInstanceRefId = comObjectInstanceRef[address.Id].First <string>();

                            var index1 = comObjectInstanceRefId.IndexOf('_');
                            var index2 = comObjectInstanceRefId.IndexOf('_', index1 + 1);
                            var index3 = comObjectInstanceRefId.IndexOf('_', index2 + 1);
                            var comObjectInstanceFile = comObjectInstanceRefId.Substring(0, index2);
                            var comObjectInstanceId   = comObjectInstanceRefId.Substring(0, index3);

                            var manufacturerDataFiles = Directory.GetFiles(directoryName, comObjectInstanceFile + ".xml", SearchOption.AllDirectories);
                            if (manufacturerDataFiles.Length > 0)
                            {
                                string    manufacturerDataFile = manufacturerDataFiles[0];
                                XDocument manufacturerDataXDoc;
                                if (xDocs.ContainsKey(manufacturerDataFile))
                                {
                                    manufacturerDataXDoc = xDocs[manufacturerDataFile];
                                }
                                else
                                {
                                    manufacturerDataXDoc = XDocument.Load(manufacturerDataFile);
                                    xDocs.Add(manufacturerDataFile, manufacturerDataXDoc);
                                }

                                var comObject = (from p in manufacturerDataXDoc.Descendants(xns + strComObject)
                                                 where p.Attribute(attrId).Value == comObjectInstanceId
                                                 select p).FirstOrDefault();
                                parseComObject(addr, comObject);

                                var comObjectRef = (from p in manufacturerDataXDoc.Descendants(xns + strComObjectRef)
                                                    where p.Attribute(attrId).Value == comObjectInstanceRefId
                                                    select p).FirstOrDefault();
                                parseComObject(addr, comObjectRef);
                            }

                            parseDatapointType(addr);
                        }
                        else
                        {
                            parseDatapointType(addr);
                            addr.IsSelected = false;
                        }

                        bool isExsit = MyCache.AddressIsExsit(addr.KnxAddress);
                        if (isExsit)
                        {
                            addr.IsSelected = false;
                        }

                        listAddress.Add(addr);
                    }
                }
            }

            return(listAddress);
        }
Exemplo n.º 12
0
        public static void parseComObject(ImGroupAddr address, XElement comObject)
        {
            var refId             = comObject.Attribute(attrRefId);
            var text              = comObject.Attribute(attrText);
            var priority          = comObject.Attribute(attrPriority);
            var objectSize        = comObject.Attribute(attrObjectSize);
            var readFlag          = comObject.Attribute(attrReadFlag);
            var writeFlag         = comObject.Attribute(attrWriteFlag);
            var communicationFlag = comObject.Attribute(attrCommunicationFlag);
            var transmitFlag      = comObject.Attribute(attrTransmitFlag);
            var updateFlag        = comObject.Attribute(attrUpdateFlag);
            var datapointType     = comObject.Attribute(attrDatapointType);

            //
            //if (null != text)
            //{
            //address.Name = text.Value;
            //}

            if (null != priority)
            {
                address.Priority = KNXAddressHelper.GetKNXPriority(priority.Value);
            }

            if (objectSize != null)
            {
                // 数据类型
                address.DPTName = DatapointType.GetDPTMainName(KNXAddressHelper.GetKnxDataType(objectSize.Value));
                if (address.DPTName.Length > 0)
                {
                    address.IsSelected          = true;
                    address.DPTNameIsDetermined = false;
                }
            }

            if (null != readFlag && null != readFlag.Value)
            {
                if ("Disabled" == readFlag.Value)
                {
                    address.IsRead = false;
                }
                else if ("Enabled" == readFlag.Value)
                {
                    address.IsRead = true;
                }
            }

            if (null != writeFlag && null != writeFlag.Value)
            {
                if ("Disabled" == writeFlag.Value)
                {
                    address.IsWrite = false;
                }
                else if ("Enabled" == writeFlag.Value)
                {
                    address.IsWrite = true;
                }
            }

            if (null != communicationFlag && null != communicationFlag.Value)
            {
                if ("Disabled" == communicationFlag.Value)
                {
                    address.IsCommunication = false;
                }
                else if ("Enabled" == communicationFlag.Value)
                {
                    address.IsCommunication = true;
                }
            }

            if (null != transmitFlag && null != transmitFlag.Value)
            {
                if ("Disabled" == transmitFlag.Value)
                {
                    address.IsTransmit = false;
                }
                else if ("Enabled" == transmitFlag.Value)
                {
                    address.IsTransmit = true;
                }
            }

            if (null != updateFlag && null != updateFlag.Value)
            {
                if ("Disabled" == updateFlag.Value)
                {
                    address.IsUpgrade = false;
                }
                else if ("Enabled" == updateFlag.Value)
                {
                    address.IsUpgrade = true;
                }
            }

            if (null != datapointType && null != datapointType.Value)
            {
                address.DPTName = datapointType.Value;
            }
        }