VB.Net Создание динамических карт. Нужна помощь по верстке - PullRequest
1 голос
/ 12 декабря 2011

Прежде всего, английского нет!мой первый / родной язык.

Для моей стажировки в этой компании я пытаюсь собрать некоторые данные.В сети около 200 компьютеров.Все ПК HP SFF.Все компоненты будут перезаписаны образом диска компании, содержащим программное обеспечение и политики.Они также получают обновление BIOS.Но с течением месяцев эти версии устаревают.Не то чтобы это требовалось для обновления биоса, мы хотим узнать, какая версия, на каком компьютере и какой модели.

Существует несколько моделей ПК.Например, HP DC7600, HP 7700.

Существует несколько версий BIOS.Например, 786G1 v01.10, 786G1 v01.16

Я собираю эти данные следующим способом.Каждый из них имеет сетевой ресурс на определенном диске. (Документы компании).

Для стороны клиента я использую WMI (инструментарий управления Windows) для сбора необходимой информации.

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

Как видите, он создается в виде текстового файла в общей папке с именем String PCName (например, PC1001).Он записывает номер модели ПК и версию BIOS в текстовый файл.(например, dc7900 | 786G1 v01.16)


Для стороны server , части построения диаграммы, я делаю следующее.

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 варианта, версия Bios, сколько раз установлена ​​каждая версия и название модели.

Это пример макета диаграммы, который я хочу.У кого-нибудь есть идеи о том, как создать этот макет?Во время выполнения или в режиме статики мне все равно, сколько времени можно заполнить во время выполнения.

Для каждого номера версии Bios должна быть полоса для каждой модели ПК с меткой, которая представляетколичество раз, когда установлена ​​версия BIOS.

Пример: я пока не могу публиковать изображения (Защита от спама) http://i.imgur.com/tP0Sf.jpg

1 Ответ

0 голосов
/ 12 декабря 2011

С помощью MS Chart Controls вы можете добавить несколько серий к одной диаграмме, каждая серия будет представлять тип вашего ПК, где для каждого типа у вас будет номер версии BIOS и количество вхождений.

enter image description here

http://msdn.microsoft.com/en-us/library/dd456769.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...