zwaveupnpbridgeform.cs

来自「zwave 无线通讯协议 PC controller 控制器源码」· CS 代码 · 共 1,362 行 · 第 1/5 页

CS
1,362
字号
            public ZensysBridgedDevice.ZWaveDeviceTypes deviceZWaveType;
            public ZensysBridgedDevice.ZWaveBridgeTypes bridgeType;
            public ZensysBridgedDevice.ZWaveBridgeDeviceState state;
        }

        private delegate void StringDelegate(string text);
        private delegate string StringVoidDelegate();
        private delegate void TreeDelegate(TreeViewCmds cmd, Intel.UPNP.UPnPDevice device);
        private delegate void RendererTree(TreeViewCmds cmd, ZensysUPnPAvRendererDevice rendererDevice, object arg);
        private delegate void ButtonsDelegate(bool bEnabled, bool bAbortEnabled);

        private string Get_labelZWaveStatusText()
        {
            if (labelZWaveStatusText.InvokeRequired)
            {
                return (string)labelZWaveStatusText.Invoke(new StringVoidDelegate(Get_labelZWaveStatusText), new object[] { });
            }
            else
            {
                return labelZWaveStatusText.Text;
            }
        }


        private void Update_labelZWaveStatusText(string text)
        {
            if (labelZWaveStatusText.InvokeRequired)
            {
                labelZWaveStatusText.Invoke(new StringDelegate(Update_labelZWaveStatusText), new object[] { text });
            }
            else
            {
                labelZWaveStatusText.Text = text;
            }
        }


        private string ThreadSafe_labelZWaveStatusText
        {
            set
            {
                Update_labelZWaveStatusText(value);
            }
            get
            {
                return Get_labelZWaveStatusText();
            }
        }


        /// <summary>
        /// Update the UPnP device scanner treeview according to events indicated by the cmd variable
        /// </summary>
        /// <param name="cmd">event descriptor</param>
        /// <param name="device">device on which event concerns</param>
        private void updateScannerTree(TreeViewCmds cmd, Intel.UPNP.UPnPDevice device)
        {
            if (treeViewDeviceScanner.InvokeRequired)
            {
                treeViewDeviceScanner.Invoke(new TreeDelegate(updateScannerTree), new object[2] { cmd, device });
                return;
            }
            switch (cmd)
            {
                case TreeViewCmds.include:
                    {
                        TreeNode treeNode = treeViewDeviceScanner.Nodes.Add(device.FriendlyName);
                        if (device.DeviceURN.IndexOf(":BinaryLight:", 0, device.DeviceURN.Length) >= 0)
                        {
                            treeNode.ImageIndex = 4;
                        }
                        else
                        {
                            treeNode.ImageIndex = 1;
                        }
                        treeNode.Tag = device;
                        mainLog.Write("UPnP device added " + device.FriendlyName + " - " + treeViewDeviceScanner.Nodes.Count.ToString("000") + " in scanner treeview");
                        break;
                    }

                case TreeViewCmds.exclude:
                    {
                        foreach (TreeNode treeNode in treeViewDeviceScanner.Nodes)
                        {
                            if ((Intel.UPNP.UPnPDevice)treeNode.Tag == device)
                            {
                                treeViewDeviceScanner.Nodes.Remove(treeNode);
                                mainLog.Write("UPnP device removed " + device.FriendlyName + " - " + treeViewDeviceScanner.Nodes.Count.ToString("000") + " in scanner treeview");
                                break;
                            }
                        }
                        break;
                    }

                default:
                    break;
            }
        }


        private void updateUPnPRendererTree(TreeViewCmds cmd, ZensysUPnPAvRendererDevice rendererDevice, object arg)
        {
            return;

            if (treeViewRenderer.InvokeRequired)
            {
                treeViewRenderer.Invoke(new RendererTree(updateUPnPRendererTree), new object[3] { cmd, rendererDevice, arg });
                return;
            }
            switch (cmd)
            {
                case TreeViewCmds.include:
                    {
                        string treeNodeName = rendererDevice.Device.FriendlyName;
                        TreeNode treeNode;
                        int deviceNo = -1, tdeviceNo = -1;
                        foreach (TreeNode treeNo in treeViewRenderer.Nodes)
                        {
                            if (treeNo.Text.IndexOf(treeNodeName, 0) >= 0)
                            {
                                tdeviceNo = ((ZensysUPnPAvRendererDevice)treeNo.Tag).DeviceNumber;
                                if (tdeviceNo > deviceNo)
                                {
                                    deviceNo = tdeviceNo;
                                }
                            }
                        }
                        if (deviceNo >= 0)
                        {
                            deviceNo++;
                            rendererDevice.DeviceNumber = deviceNo;
                            treeNodeName += " [" + deviceNo.ToString() + "]";
                        }
                        treeNode = new TreeNode(treeNodeName);
                        try
                        {
                            rendererDevice.Device.FriendlyName = treeNodeName;
                            treeNode.Tag = rendererDevice;
                            treeViewRenderer.Nodes.Add(treeNode);
                            mainLog.Write("device added " + treeNodeName + " - " + treeViewRenderer.Nodes.Count.ToString("000") + " in Renderer treeview");
                        }
                        catch (Exception e)
                        {
                            treeNode.Remove();
                            mainLog.Write("updateUPnPRendererTree: Exception - include " + e.Message);
                        }
                        break;
                    }

                case TreeViewCmds.exclude:
                    {
                        foreach (TreeNode treeNode in treeViewRenderer.Nodes)
                        {
                            if ((ZensysUPnPAvRendererDevice)treeNode.Tag == rendererDevice)
                            {
                                try
                                {
                                    rendererDevice.ConnectionManager.OnResult_GetCurrentConnectionIDs -= new MicroStack.CpConnectionManager.Delegate_OnResult_GetCurrentConnectionIDs(ConnectionManager_OnResult_GetCurrentConnectionIDs);
                                    rendererDevice.AVTransport.OnResult_GetPositionInfo -= new MicroStack.CpAVTransport.Delegate_OnResult_GetPositionInfo(AVTransport_OnResult_GetPositionInfo);
                                    rendererDevice.AVTransport.OnStateVariable_LastChange -= new MicroStack.CpAVTransport.StateVariableModifiedHandler_LastChange(AVTransport_OnStateVariable_LastChange);
                                    rendererDevice.AVTransport.OnResult_GetTransportInfo -= new MicroStack.CpAVTransport.Delegate_OnResult_GetTransportInfo(AVTransport_OnResult_GetTransportInfo);
                                    mainLog.Write("device removed " + treeNode.Text + " - " + treeViewRenderer.Nodes.Count.ToString("000") + " in Renderer treeview");
                                    StopAVRendererBridging(treeNode, rendererDevice, rendererDevice);
                                    treeViewRenderer.Nodes.Remove(treeNode);
                                }
                                catch (Exception e)
                                {
                                    mainLog.Write("updateUPnPRendererTree : Exception - exclude " + e.Message);
                                }
                                break;
                            }
                        }
                        break;
                    }

                case TreeViewCmds.GetCurrentConnectionIDs:
                    {
                        MicroStack.CpConnectionManager sender = (MicroStack.CpConnectionManager)((object[])arg)[0];
                        string textStr = (string)((object[])arg)[1];
                        int conId;
                        bool newId = true;
                        conId = GetConnectionID(textStr); /* Get conID from textstring */
                        foreach (TreeNode treeNode in treeViewRenderer.Nodes)
                        {
                            rendererDevice = (ZensysUPnPAvRendererDevice)treeNode.Tag;
                            if (rendererDevice.ConnectionManager == sender)
                            {
                                foreach (TreeNode treeN in treeNode.Nodes)
                                {
                                    int cId = GetConnectionID(treeN.Text);
                                    if ((cId < 0) || (cId == conId))
                                    {
                                        treeN.Text = textStr;
                                        newId = false;
                                        break;
                                    }
                                }
                                if (newId)
                                {
                                    try
                                    {
                                        TreeNode treeNo = treeNode.Nodes.Add(textStr);
                                        treeNo.Tag = rendererDevice;
                                    }
                                    catch (Exception ex)
                                    {
                                        mainLog.Write(resourceFormManager.GetString("RendereTree") + ex.Message);
                                    }
                                }
                                if (conId >= 0)
                                {
                                    rendererDevice.ConnectionId = (uint)conId;
                                    rendererDevice.AVTransport.GetPositionInfo((uint)conId);
                                }
                                break;
                            }
                        }
                        break;
                    }

                case TreeViewCmds.GetPositionInfo:
                    {
                        MicroStack.CpAVTransport sender = (MicroStack.CpAVTransport)((object[])arg)[0];
                        string titlestr = (string)((object[])arg)[1];
                        string posStr = (string)((object[])arg)[2];
                        uint InstanceId = (uint)((object[])arg)[3];
                        int workId = (int)InstanceId;
                        if (workId > 0)
                        {
                            workId--;
                        }
                        foreach (TreeNode treeNode in treeViewRenderer.Nodes)
                        {
                            ZensysUPnPAvRendererDevice renderer = (ZensysUPnPAvRendererDevice)treeNode.Tag;
                            if (renderer.AVTransport == sender)
                            {
                                labelTitleText.Text = titlestr;
                                labelTitleText.Tag = treeNode.Tag;  /* Current */
                                int index = (treeNode.Nodes[workId].Text.Length > 14) ? 14 : treeNode.Nodes[workId].Text.Length;
                                treeNode.Nodes[workId].Text = treeNode.Nodes[workId].Text.Substring(0, index) + " " + posStr + titlestr;
                                renderer.InstanceId = InstanceId;
                                renderer.ConnectionId = InstanceId; // ???
                                renderer.AVTransport.GetTransportInfo(InstanceId);
                                break;
                            }
                        }
                        mainLog.Write("PositionInfo received [" + InstanceId + "] " + titlestr);
                        break;
                    }

                case TreeViewCmds.LastChange:
                    {
                        MicroStack.CpAVTransport sender = (MicroStack.CpAVTransport)((object[])arg)[0];
                        string NewValue = (string)((object[])arg)[1];
                        TreeNode treeNode = treeViewRenderer.SelectedNode;
                        if ((treeNode != null) && (((ZensysUPnPAvRendererDevice)treeNode.Tag).AVTransport == sender))
                        {
                            foreach (TreeNode treeNo in treeViewRenderer.Nodes)
                            {
                                if (((ZensysUPnPAvRendererDevice)treeNo.Tag).AVTransport == sender)
                                {
                                    ZensysUPnPAvRendererDevice rendererDev = (ZensysUPnPAvRendererDevice)treeNo.Tag;
                                    int sidx, eidx;
                                    string textstr = "";
                                    sidx = NewValue.IndexOf("<TransportState val=", 0, NewValue.Length);
                                    if (sidx >= 0)
                                    {
                                        sidx += 20;
                                        eidx = NewValue.IndexOf(">", sidx, NewValue.Length - sidx) - 1;
                                        textstr = NewValue.Substring(sidx, eidx - sidx);
                                        labelStatusText.Text = "";
                                        labelStateText.Text = textstr;
                                        labelTitleText.Text = "";

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?