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)); } } }
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)); // } //} }
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); }
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); }
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); }
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); }
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; }
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; }
/// <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); }
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; } }