2011-12-12 75 views
1

首先,英文不是!我的第一/母語。VB.Net動態圖表創建。需要佈局幫助

對於我在這家公司的實習,我試圖收集一些數據。網絡中有200臺PC。所有HP SFF PC。所有的PC將被包含軟件和策略的公司磁盤映像覆蓋。他們也獲得了BIOS更新。但隨着這些版本的月份過時了。並不是說它需要更新BIOS,我們現在想要哪個版本在哪個型號的PC上。

有幾種PC型號。 例如HP DC7600,HP 7700.

有幾個BIOS版本。 例如786G1 v01.10,786G1 v01.16

我正在用以下方法收集這些數據。每個人都有一個網絡共享到某個磁盤(公司文檔)。

對於客戶端我使用WMI(Windows Management Instrumentation)來收集所需的信息。

Sub RetrieveInfo() 
    Dim _PCName As String = My.Computer.Name 
    Dim _Info As String = vbNullString 
    Dim _FileName As String = "G:\BiosVersion\" & _PCName & ".txt" 
    Dim _ManagmentC As New ManagementClass("Win32_ComputerSystem") 
    Dim _Moc As ManagementObjectCollection = _ManagmentC.GetInstances 

    For Each _Mo As ManagementObject In _Moc 
     Dim Model() As String = Split(_Mo.Properties("Model").Value.ToString, " ") 
     For i = 0 To Model.Length - 1 
      If Model(i).ToLower.Contains("dc") Then _Info &= Model(i) 
     Next 
    Next 

    _ManagmentC = New ManagementClass("win32_bios") 
    _Moc = _ManagmentC.GetInstances 
    For Each _Mo As ManagementObject In _Moc 
     _Info &= "|" & _Mo.Properties("SMBIOSBIOSVersion").Value.ToString 
    Next 

    Try 
     If IO.File.Exists(_FileName) Then 
      IO.File.Delete(_FileName) 
     End If 
    Catch ex As IO.IOException 
     _FileName = _FileName.Replace(_PCName, _PCName & "-" & New Random().Next(10, 10000)) 
    End Try 

    IO.File.WriteAllText(_FileName, _Info) 

End Sub 

正如您所看到的,這將創建爲與字符串PCName(例如PC1001)共享的文本文件。 它將PC型號& Bios版本寫入文本文件。 (例如DC7900 | 786G1 v01.16)


對於服務器側,圖表建築物部分,我做如下。

Dim Path As String = "G:\BiosVersion\" 
Sub UpdateChart() 
    Dim PCModels As New List(Of String) 
    Dim BiosVersions As New List(Of String) 
    Dim Files As IO.FileInfo() = New IO.DirectoryInfo(Path).GetFiles 

    For Each File As IO.FileInfo In Files 
     If File.Extension = ".txt" Then 
      PCModels.Add(IO.File.ReadAllText(File.FullName).Split("|")(0)) 
      BiosVersions.Add(IO.File.ReadAllText(File.FullName).Split("|")(1)) 
     End If 
    Next 
    PCModels = RemoveDuplicates(PCModels) 
    BiosVersions = RemoveDuplicates(BiosVersions) 

    For i = 0 To chartBios.Series.Count - 1 
     chartBios.Series.Remove(chartBios.Series.Item(i)) 
    Next 

    Dim Dictionary As New Dictionary(Of String, Integer) 
    For Each Version As String In BiosVersions 
     chartBios.Series.Add(Version) 
     Dim Count As Integer = 0 
     For Each File As IO.FileInfo In Files 
      If IO.File.ReadAllText(File.FullName).Split("|")(1).ToLower.Trim = Version.ToLower.Trim Then 
       Count += 1 
      End If 
     Next 
     Dictionary.Add(Version, Count) 
    Next 

    For Each Entry As KeyValuePair(Of String, Integer) In Dictionary 
     chartBios.Series(Entry.Key).Points.AddY(Entry.Value) 
    Next 
End Sub 

Function RemoveDuplicates(ByVal inputList As List(Of String)) As List(Of String) 
    Dim uniqueStore As New Dictionary(Of String, Integer)() 
    Dim finalList As New List(Of String)() 
    For Each currValue As String In inputList 
     If Not uniqueStore.ContainsKey(currValue) Then 
      uniqueStore.Add(currValue, 0) 
      finalList.Add(currValue) 
     End If 
    Next 
    Return finalList 
End Function 

chartBios =圖表控件。

導致以下: 我不能發表任何圖像,但(防止垃圾郵件) http://i.imgur.com/bGpyH.jpg

我試圖做的是以下幾點。 我有3個Vars,Bios版本,每個版本安裝了多少次&型號名稱。

這是我想要的圖表佈局的一個例子。任何人都有如何創建這種佈局的想法?在運行時或靜態時,我不在乎它可以在運行時填充。

對於每個Bios版本號,每個PC型號必須有一個標籤,表示安裝bios版本的次數。

例子: 我不能發表任何圖像,但(防止垃圾郵件) http://i.imgur.com/tP0Sf.jpg

回答