zwaveupnpbridgeform.cs

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

CS
1,362
字号
                                    }
                                    else
                                    {
                                        if ((TreeNode)labelStatusText.Tag != treeNode)
                                        {
                                            labelStateText.Text = "";
                                            labelStatusText.Text = "";
                                            labelTitleText.Text = "";
                                        }
                                    }
                                    int conId = 0;
                                    if (textstr.Length > 0)
                                    {
                                        conId = GetConnectionID(textstr); /* Get conID from textstring */
                                        if (conId < 0)
                                        {
                                            conId = 0;
                                        }
                                    }
                                    rendererDev.ConnectionId = (uint)conId;
                                    sender.GetPositionInfo((System.UInt32)conId);
                                    labelStatusText.Tag = treeNode;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            labelStateText.Text = "";
                            labelStatusText.Text = "";
                            labelTitleText.Text = "";
                        }
                        mainLog.Write("NewValue received");
                        break;
                    }

                default:
                    break;
            }
        }


        private void ZensysZWaveAddDevice(byte nodeId, byte nodeType, ZensysBridgedDevice.ZWaveDeviceTypes ZWaveDeviceType, ZensysBridgedDevice device, bool virtualNode)
        {
            string[] itemString = new string[5];
            itemString[0] = nodeId.ToString("000");

            switch (ZWaveDeviceType)
            {
                case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_BINARY:
                    {
                        itemString[1] = resourceFormManager.GetString("BinaryPowerSwitch");
                        break;
                    }

                case ZensysBridgedDevice.ZWaveDeviceTypes.SWITCH_MULTILEVEL:
                    {
                        itemString[1] = resourceFormManager.GetString("MultiLevelPowerSwitch");
                        break;
                    }

                default:
                    itemString[1] = "Unknown";
                    try
                    {
                        itemString[1] = ZWaveDeviceType.ToString("g") + " (" + nodeType.ToString("x") + ")";
                    }
                    catch (Exception e)
                    {
                        mainLog.Write("ZensysZWaveAddDevice: Exception - default " + e.Message + ZWaveDeviceType.ToString("g"));
                    }
                    break;
            }
            itemString[2] = "";
            if (device != null)
            {
                switch (device.BridgeType)
                {
                    case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP:
                        {
                            itemString[3] = (device.State == ZensysBridgedDevice.ZWaveBridgeDeviceState.Started) ? "UPnP" : "idle down";
                            break;
                        }

                    case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP2ZWave:
                        {
                            itemString[3] = (device.State == ZensysBridgedDevice.ZWaveBridgeDeviceState.Started) ? "UPnP2ZWave" : "idle up";
                            break;
                        }

                    default:
                        itemString[3] = "Unknown";
                        break;
                }
            }
            else
            {
                itemString[3] = "None";
            }
            Node nid = applicationLayer.GetNode(nodeId);
            itemString[4] = nid.IsVirtual ? "y" : "n";
            ListViewItem item = new ListViewItem(itemString);
            item.Tag = (object)device;
            foreach (ListViewItem itm in listViewZWaveNodes.Items)
            {
                byte node = Convert.ToByte(itm.SubItems[0].Text);
                if (node == nodeId)
                {
                    listViewZWaveNodes.Items.Remove(itm);
                }
            }
            listViewZWaveNodes.Items.Add(item);
        }


        /// <summary>
        /// Load device configuration
        /// </summary>
        private void ZWaveLoadFromFile()
        {
            FileStream fs = null;
            try
            {
                fs = new FileStream("ZWave Bridge Configuration.xml", FileMode.Open);
                if (fs != null)
                {
                    ArrayList devices = null;
                    BinaryFormatter serializer = new BinaryFormatter();
                    devices = (ArrayList)serializer.Deserialize(fs);
                    fs.Close();
                    foreach (ZensysDeviceStorage devstore in devices)
                    {
                        switch (devstore.bridgeType)
                        {
                            case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP:
                                {
                                    device = ((ZWaveNode)ZWaveNodes[devstore.nodeId]).DevUPnP;
                                    if (device != null)
                                    {
                                        if (devstore.deviceZWaveType == device.DeviceZWaveType)
                                        {
                                            device.Device.FriendlyName = devstore.friendlyName;
                                            device.State = devstore.state;
                                        }
                                    }
                                    break;
                                }

                            case ZensysBridgedDevice.ZWaveBridgeTypes.UPnP2ZWave:
                                break;

                            default:
                                mainLog.Write("Unknown ZWave Bridge Generic Type " + devstore.bridgeType.ToString());
                                break;
                        }
                    }
                }
            }
            catch (Exception)
            {
                //        throw new Exception("Could not make Configuration xml");
            }
        }


        /// <summary>
        /// Save current device configuration
        /// </summary>
        private void ZWaveSaveToFile()
        {
            ArrayList devices = new ArrayList();
            ZensysDeviceStorage devstore = new ZensysDeviceStorage();
            foreach (ZensysUPnPDevice dev in UPnPdownDeviceList)
            {
                devstore.friendlyName = dev.Device.FriendlyName;
                devstore.deviceZWaveType = dev.DeviceZWaveType;
                devstore.nodeId = dev.NodeId;
                devstore.bridgeType = dev.BridgeType;
                devstore.state = dev.State;
                devices.Add(devstore);
            }
            FileStream fs = new FileStream("ZWave Bridge Configuration.xml", FileMode.Create);
            BinaryFormatter serializer = new BinaryFormatter();
            serializer.Serialize(fs, devices);
            fs.Close();
        }


        /// <summary>
        /// Z-Wave Bridge initialize method
        /// </summary>
        public void InitBridge()
        {
            StartUpTime = DateTime.Now;
            timerAppUpTime_Tick(this, new System.EventArgs());
            statusBarMain.Panels[0].Text = " ZWaveBridge ver. " + Application.ProductVersion;
            statusBarMain.Panels[1].Text = " Log lines : 0";
            statusBarMain.Panels[2].Text = " Bridged Devices : 0";
            applicationLayer = new ApplicationLayer();
            mainLog = new ZWaveLogging();
            mainLog.LogEvent += new ZWaveLogging.LogEventHandler(mainLog_logChanged);
            // Initialize UPnP AVRenderer Control Point
            AVdevice = new ZensysUPnPAvRendererCPDevice(mainLog);
            AVdevice.AvRendererCP_Eventsubscriber += new Zensys.ZensysUPnPAvRendererCPDevice.AvRendererCP_EventSubscriberHandler(AVdevice_eventHandler);
            // Initialize UPnP BinaryLight Control Point
            lightDevice = new ZensysUPnPLightCPDevice(mainLog); /* Not Learned YET */
            lightDevice.UPnPLightCP_subscriberEvent += new Zensys.ZensysUPnPLightCPDevice.UPnPLightCP_SubscriberHandler(lightDevice_UPnPLightCP_subscriberEvent);
            // Initialize UPnP Device Scanner Control Point
            DevScanner = new ZensysUPnPDeviceScanner(mainLog);
            DevScanner.subscriberEvent += new Zensys.ZensysUPnPDeviceScanner.SubscriberHandler(DevScanner_subscriberEvent);
            // Initialize Renderer Tree View update event
            updateTreeViewUPnPRenderer = new updateTreeViewRendererDelegate(updateUPnPRendererTree);
            // Initialize Device Scanner Tree View update event
            updateTreeViewScanner = new updateTreeViewScannerDelegate(updateScannerTree);
            checkBoxAutoScroll.Checked = autoScroll;
            // Set Z-Wave Application command handler for the Controller indentity
            // ONE BIG ONE - 1 Application Command Handler to all command classes
            applicationLayer.ApplicationCommandEvent += new EventHandler<ApplicationCommandEventArgs>(ApplicationCommandEvent);
            applicationLayer.ApplicationSlaveCommandEvent += new EventHandler<ApplicationSlaveCommandEventArgs>(ApplicationSlaveCommandEvent);
            applicationLayer.UnknownCommandEvent += new EventHandler<UnknownCommandEventArgs>(UnknownCommandEvent);
            applicationLayer.AddNodeEvent += new EventHandler<AddNodeEventArgs>(AddNodeEvent);
            applicationLayer.RemoveNodeEvent += new EventHandler<RemoveNodeEventArgs>(RemoveNodeEvent);
            applicationLayer.UpdateEvent += new EventHandler<UpdateEventArgs>(UpdateEvent);
            applicationLayer.SlaveEvent += new EventHandler<SlaveEventArgs>(SlaveEvent);
            InitializeSerial();
            // Load saved configuration
            ZWaveLoadFromFile();
            // Start UPnPDevices which according to saved configuration should be running/bridging
            foreach (ZensysUPnPDevice zenDev in UPnPdownDeviceList)
            {
                if (zenDev.State == ZensysBridgedDevice.ZWaveBridgeDeviceState.Started)
                {
                    ZWaveUPnPDeviceStart(zenDev);
                }
            }
        }


        /// <summary>
        /// Z-Wave Bridge Form Load Method
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ZWaveBridgeForm_Load(object sender, System.EventArgs e)
        {
            InitBridge();
            EnableButtons(true, false);
        }


        /// <summary>
        /// Z-Wave Bridge Form
        /// </summary>
        public ZWaveBridgeForm(string[] args)
        {
            requestedPort = args;
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            this.formThread = System.Threading.Thread.CurrentThread;
        }


        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose(bool disposing)
        {
            try
            {
                if (disposing)
                {

⌨️ 快捷键说明

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