Пример #1
0
        private void tvDPTName_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            DatapointType selectedNode = e.Node as DatapointType;

            this.btnDPTName.Text   = selectedNode.Text;
            this.tvDPTName.Visible = false;
        }
Пример #2
0
        private void tvDPTName_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            DatapointType selectedNode = e.Node as DatapointType;

            this.dataGridView.CurrentCell.Value = selectedNode.Text;
            this.tvDPTName.Visible = false;
        }
Пример #3
0
        private void treeViewDefaultActions_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode currentNode = e.Node;

            DatapointType actionNode = currentNode as DatapointType;

            if (null != actionNode)
            {
                if ((Address.KnxMainNumber == actionNode.KNXMainNumber) && (Address.KnxSubNumber == actionNode.KNXSubNumber))
                {
                    this.buttonAddAction.Enabled = true;
                }
                else if (Address.Type == actionNode.Type)
                {
                    this.buttonAddAction.Enabled = true;
                }
                else
                {
                    this.buttonAddAction.Enabled = false;
                }
            }
            else
            {
                this.buttonAddAction.Enabled = false;
            }

            this.buttonDeleteAction.Enabled = false;
        }
Пример #4
0
        /// <summary>
        /// 解析组地址列表中各组地址的数据点类型。主号、次号、大小、类型名
        /// </summary>
        /// <param name="addressList"></param>
        public static void parseDatapointType(ImGroupAddr address)
        {
            if (null == address)
            {
                return;
            }

            string dpst = address.DPTName;

            if ((null != dpst) && ((dpst.Length) > 0) && (dpst.Substring(0, 4).Equals("DPST")))
            {
                var index1 = dpst.IndexOf("-");             // 第一个"-"的位置
                var index2 = dpst.IndexOf("-", index1 + 1); // 第二个"-"的位置
                var index3 = dpst.IndexOf(" ", index2 + 1); // 空格的位置

                int mainNum = -1;
                int subNum  = -1;
                if (index1 >= 4)
                {
                    if (index2 > (index1 + 1))
                    {
                        mainNum = Convert.ToInt32(dpst.Substring(index1 + 1, index2 - index1 - 1)); // 获取主号
                        if (index3 > (index2 + 1))                                                  // 表示有多个数据类型。只取第一个
                        {
                            subNum = Convert.ToInt32(dpst.Substring(index2 + 1, index3 - index2));  // 整型子号
                        }
                        else
                        {
                            subNum = Convert.ToInt32(dpst.Substring(index2 + 1, dpst.Length - index2 - 1)); // 整型子号
                        }
                    }
                    else
                    {
                        mainNum = Convert.ToInt32(dpst.Substring(index1 + 1, dpst.Length - index1 - 1)); // 获取主号
                    }
                }

                if (MyCache.DicMainNumber.ContainsKey(mainNum))
                {
                    string knxMainNum = MyCache.DicMainNumber[mainNum];
                    string knxSubNum  = DatapointType.DPST_ANY;
                    if (MyCache.DicSubNumber.ContainsKey(subNum))
                    {
                        knxSubNum = MyCache.DicSubNumber[subNum];
                    }

                    address.DPTName = DatapointType.GetDPTName(knxMainNum, knxSubNum);
                    if (address.DPTName.Length > 0)
                    {
                        address.IsSelected          = true;
                        address.DPTNameIsDetermined = true;
                    }
                }
            }
        }
Пример #5
0
        private void tvDPTName_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            DatapointType selectedNode = e.Node as DatapointType;

            this.btnDPTName.Text   = selectedNode.Text;
            this.tvDPTName.Visible = false;

            Address.KnxMainNumber = selectedNode.KNXMainNumber;
            Address.KnxSubNumber  = selectedNode.KNXSubNumber;
            Address.Type          = selectedNode.Type;
        }
Пример #6
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;
        }
Пример #7
0
        public static void Reply(this KnxNetIpClient client, IKnxMessage replyTo, DatapointType data, MessagePriority priority = MessagePriority.Auto)
        {
            var request = replyTo;
            var message = new KnxMessage
            {
                MessageCode        = MessageCode.Confirmation,
                MessageType        = replyTo.MessageType,
                SourceAddress      = client.DeviceAddress,
                DestinationAddress = request.SourceAddress,
                Payload            = data.Payload,
                Priority           = priority,
            };

            client.SendMessage(message);
        }
Пример #8
0
        private void tvDPTName_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            DatapointType selectedNode = e.Node as DatapointType;

            this.dataGridView.CurrentCell.Value = selectedNode.Text;
            this.tvDPTName.Visible = false;

            int         rowIndex = this.dataGridView.CurrentCell.RowIndex;
            string      id       = (string)this.dataGridView.Rows[rowIndex].Cells["Id"].Value;
            ImGroupAddr address  = GetGroupAddress(id);

            if (null != address)
            {
                address.DPTName = selectedNode.Text;
            }
        }
Пример #9
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(this.btnDPTName.Text))
            {
                MessageBox.Show(ResourceMng.GetString("Message46"), ResourceMng.GetString("Message6"), MessageBoxButtons.OK, MessageBoxIcon.Error);

                return;
            }

            Address.Name       = this.txtName.Text.Trim();
            Address.KnxAddress = this.txtWriteAddress.Text.Trim();

            // 数据类型
            DatapointType dpt = DatapointType.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;
            }

            // 默认值
            Address.DefaultValue = this.txtDefaultValue.Text.Trim();

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

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

            //Address.WireNumber = this.txtWireNumber.Text.Trim();
            Address.ReadTimeSpan    = Convert.ToInt32(txtReadTimespan.Text);
            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;
            //Address.Tip = this.textBoxTip.Text;

            this.DialogResult = DialogResult.OK;
        }
Пример #10
0
 public void addDatapoint(double value, DatapointType type)
 {
     if (this.m_nextFreeDatapoint == null)
     {
         if (Application.isEditor)
         {
             Debug.LogWarning("Trying to add more datapoints than max capacity, skipping..");
         }
     }
     else
     {
         this.m_nextFreeDatapoint.Timer = this.m_windowWidthSeconds;
         this.m_nextFreeDatapoint.Value = value;
         this.m_nextFreeDatapoint.Type = type;
         this.m_nextFreeDatapoint = this.getNextFreeOrOldestDatapoint();
     }
 }
Пример #11
0
        private void backWorkerSave_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            int len = this.dataGridView.RowCount;

            //float i = 0;
            for (int i = 0; i < len; i++)
            {
                float f = (float)i / (len - 1);
                worker.ReportProgress((int)(f * 100));

                DataGridViewRow row        = this.dataGridView.Rows[i];
                bool            isSelected = (bool)row.Cells["IsSelected"].Value;
                if (isSelected)
                {
                    EdGroupAddress addr = new EdGroupAddress();
                    addr.Id         = row.Cells["Id"].Value as string;
                    addr.Name       = row.Cells["Name"].Value as string;
                    addr.KnxAddress = row.Cells["KnxAddress"].Value as string;
                    addr.DPTName    = row.Cells["DPTName"].Value as string;
                    DatapointType dpt = DatapointType.GetTypeNode(addr.DPTName);
                    if (null != dpt)
                    {
                        addr.KnxMainNumber = dpt.KNXMainNumber;
                        addr.KnxSubNumber  = dpt.KNXSubNumber;
                        addr.Type          = dpt.Type;
                    }
                    addr.IsCommunication = (bool)row.Cells["IsCommunication"].Value;
                    addr.IsRead          = (bool)row.Cells["IsRead"].Value;
                    addr.IsWrite         = (bool)row.Cells["IsWrite"].Value;
                    addr.IsTransmit      = (bool)row.Cells["IsTransmit"].Value;
                    addr.IsUpgrade       = (bool)row.Cells["IsUpgrade"].Value;
                    addr.Priority        = (KNXPriority)row.Cells["Priority"].Value;
                    addr.Actions         = DatapointType.GetActionNodes(addr.DPTName);

                    MyCache.GroupAddressTable.Add(addr);
                }
            }
        }
Пример #12
0
        private static string GetDPTName(TreeNode node, string m, string s)
        {
            string        text = "";
            DatapointType dpt  = node as DatapointType;

            if ((m == dpt.KNXMainNumber) && (s == dpt.KNXSubNumber))
            {
                text = dpt.Text;
            }
            else if (dpt.Nodes.Count > 0)
            {
                foreach (TreeNode n in dpt.Nodes)
                {
                    text = GetDPTName(n, m, s);
                    if (text.Length > 0)
                    {
                        break;
                    }
                }
            }

            return(text);
        }
Пример #13
0
        private void backWorkerSave_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            //int len = this.dataGridView.RowCount;

            //for (int i = 0; i < len; i++)
            int len = listAddress.Count;

            for (int i = 0; i < len; i++)
            {
                float f = (float)i / (len - 1);
                worker.ReportProgress((int)(f * 100));

                //DataGridViewRow row = this.dataGridView.Rows[i];
                //bool isSelected = (bool)row.Cells["IsSelected"].Value;
                //if (isSelected)
                //{
                //    EdGroupAddress addr = new EdGroupAddress();
                //    addr.Id = row.Cells["Id"].Value as string;
                //    addr.Name = row.Cells["Name"].Value as string;
                //    addr.KnxAddress = row.Cells["KnxAddress"].Value as string;
                //    addr.DPTName = row.Cells["DPTName"].Value as string;
                //    DatapointType dpt = DPTHelper.GetTypeNode(addr.DPTName);
                //    if (null != dpt)
                //    {
                //        addr.KnxMainNumber = dpt.KNXMainNumber;
                //        addr.KnxSubNumber = dpt.KNXSubNumber;
                //        addr.Type = dpt.Type;
                //    }
                //    addr.IsCommunication = (bool)row.Cells["IsCommunication"].Value;
                //    addr.IsRead = (bool)row.Cells["IsRead"].Value;
                //    addr.IsWrite = (bool)row.Cells["IsWrite"].Value;
                //    addr.IsTransmit = (bool)row.Cells["IsTransmit"].Value;
                //    addr.IsUpgrade = (bool)row.Cells["IsUpgrade"].Value;
                //    addr.Priority = (KNXPriority)row.Cells["Priority"].Value;
                //    addr.Actions = DPTHelper.GetActionNodes(addr.DPTName);

                //    MyCache.GroupAddressTable.Add(addr);
                //}

                ImGroupAddr imAddr = listAddress[i];
                if (imAddr.IsSelected)
                {
                    MgGroupAddress addr = new MgGroupAddress();
                    addr.Id         = imAddr.Id;
                    addr.Name       = imAddr.Name;
                    addr.KnxAddress = imAddr.KnxAddress;
                    addr.DPTName    = imAddr.DPTName;
                    DatapointType dpt = DPTHelper.GetTypeNode(imAddr.DPTName);
                    if (null != dpt)
                    {
                        addr.KnxMainNumber = dpt.KNXMainNumber;
                        addr.KnxSubNumber  = dpt.KNXSubNumber;
                        addr.Type          = dpt.Type;
                    }
                    addr.IsCommunication = imAddr.IsCommunication;
                    addr.IsRead          = imAddr.IsRead;
                    addr.IsWrite         = imAddr.IsWrite;
                    addr.IsTransmit      = imAddr.IsTransmit;
                    addr.IsUpgrade       = imAddr.IsUpgrade;
                    addr.Priority        = imAddr.Priority;
                    //addr.Actions = DPTHelper.GetActionNodes(addr.DPTName);
                    addr.Actions = new GroupAddressActions(DPTHelper.GetActionNodes(addr.DPTName));

                    //MyCache.GroupAddressTable.Add(addr);
                    var formName = typeof(FrmGroupAddressMgt).Name;
                    if (Application.OpenForms[formName] != null)
                    {
                        var frm = Application.OpenForms[formName] as FrmGroupAddressMgt;
                        if (frm != null)
                        {
                            frm.AddMgAddress(addr);
                        }
                    }
                }
            }
        }
Пример #14
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;
            }
        }
Пример #15
0
 public Datapoint(string name, DatapointType type)
 {
     Name = name;
     Type = type;
 }
Пример #16
0
        public static void Write(this KnxNetIpClient client, KnxLogicalAddress destination, DatapointType data, MessagePriority priority = MessagePriority.Auto)
        {
            var message = new KnxMessage
            {
                MessageCode        = MessageCode.Request,
                MessageType        = MessageType.Write,
                SourceAddress      = client.DeviceAddress,
                DestinationAddress = destination,
                Payload            = data.Payload,
                Priority           = priority,
            };

            client.SendMessage(message);
        }