/// <summary> /// Hub节点 /// </summary> /// <param name="HubPath">Hub路径</param> /// <param name="HubNodeName">节点显示名称</param> /// <returns>Hub节点集合</returns> private static List <TreeViewUsbItem> AddHubNode(String HubPath, String HubNodeName) { UsbNodeInformation[] NodeInfoCollection = USB.GetUsbNodeInformation(HubPath); if (NodeInfoCollection != null) { TreeViewUsbItem HubNode = new TreeViewUsbItem(); HubNode.Icon = ImageHub; if (String.IsNullOrEmpty(NodeInfoCollection[0].Name)) { HubNode.Name = HubNodeName; } else { HubNode.Name = NodeInfoCollection[0].Name; } HubNode.Data = NodeInfoCollection[0]; if (NodeInfoCollection[0].NodeType == USB_HUB_NODE.UsbHub) { HubNode.Children = AddPortNode(HubPath, NodeInfoCollection[0].NumberOfPorts); } else { HubNode.Children = null; } return(new List <TreeViewUsbItem>(1) { HubNode }); } return(null); }
private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { TreeViewUsbItem Node = e.NewValue as TreeViewUsbItem; if (Node != null) { listView1.ItemsSource = ListViewUsbItem.UsbDetail(Node.Data); } }
private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { TreeViewUsbItem Node = e.NewValue as TreeViewUsbItem; if (Node != null) { listView1.ItemsSource = ListViewUsbItem.UsbDetail(Node.Data); //Splash.IO.PORTS.UsbNodeConnectionInformation nodeData = (Splash.IO.PORTS.UsbNodeConnectionInformation)Node.Data; //Debug.WriteLine(nodeData.DevicePath); } }
/// <summary> /// Port节点 /// </summary> /// <param name="HubPath">Hub路径</param> /// <param name="NumberOfPorts">端口数</param> /// <returns>Port节点集合</returns> private static List <TreeViewUsbItem> AddPortNode(String HubPath, Int32 NumberOfPorts) { // 深度遍历端口 UsbNodeConnectionInformation[] NodeConnectionInfoCollection = USB.GetUsbNodeConnectionInformation(HubPath, NumberOfPorts); if (NodeConnectionInfoCollection != null) { List <TreeViewUsbItem> PortNodeCollection = new List <TreeViewUsbItem>(NumberOfPorts); foreach (UsbNodeConnectionInformation NodeConnectionInfo in NodeConnectionInfoCollection) { // 增加端口节点 TreeViewUsbItem PortNode = new TreeViewUsbItem(); PortNode.Icon = ImageDevice; PortNode.Name = "[Port" + NodeConnectionInfo.ConnectionIndex + "]" + NodeConnectionInfo.ConnectionStatus; PortNode.Data = NodeConnectionInfo; PortNode.Children = null; if (NodeConnectionInfo.ConnectionStatus == USB_CONNECTION_STATUS.DeviceConnected) { // 设备连接 ConnectedDevices++; // 连接的USB设备数目 if (!String.IsNullOrEmpty(NodeConnectionInfo.DeviceDescriptor.Product)) { // 产品名称 PortNode.Name = String.Concat(PortNode.Name, ": ", NodeConnectionInfo.DeviceDescriptor.Product); } if (NodeConnectionInfo.DeviceIsHub) { // 获取外部Hub设备路径 String ExternalHubPath = USB.GetExternalHubPath(NodeConnectionInfo.DevicePath, NodeConnectionInfo.ConnectionIndex); UsbNodeInformation[] NodeInfoCollection = USB.GetUsbNodeInformation(HubPath); if (NodeInfoCollection != null) { PortNode.Icon = ImageHub; PortNode.Data = new ExternalHubInfo { NodeInfo = NodeInfoCollection[0], NodeConnectionInfo = NodeConnectionInfo }; if (NodeInfoCollection[0].NodeType == USB_HUB_NODE.UsbHub) { PortNode.Children = AddPortNode(ExternalHubPath, NodeInfoCollection[0].NumberOfPorts); } if (String.IsNullOrEmpty(NodeConnectionInfo.DeviceDescriptor.Product)) { if (!String.IsNullOrEmpty(NodeInfoCollection[0].Name)) { // 产品名称 PortNode.Name = String.Concat(PortNode.Name, ": ", NodeInfoCollection[0].Name); } } } ConnectedHubs++; // 连接的外部Hub数目 } } PortNodeCollection.Add(PortNode); } return(PortNodeCollection); } return(null); }