c# GPU-Z数据读取比较

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;
using System.IO;
using System.Data;
using System.ComponentModel;
using System.Drawing;
using System.Collections;
using System.Web;


namespace CheckGpuInfo
{
    class Program
    {
        //List ConfigValues = new List();
        static string[] ConfigValues = { "RunProgram", "RunFile", "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
        static string[] InfoValues = { "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
        static int Main(string[] args)
        {
            if (ReadCfg("config.ini") == false)//读取配置信息
            {
                string str = string.Empty;
                str = "config.ini" + "Config Open Read Error!!";
                FailInfo(str);
                return 1;
            }
            if (CallBath(ConfigValues[0]) == false)//执行ReadGpu.BAT
            {
                string str = string.Empty;
                str = @"Run Batch File:" + ConfigValues[0] + " Error";
                FailInfo(str);
                return 1;
            }
            if (ReadGpuInfoKeyValues(ConfigValues[1])==false)//执行配置读取
            {
                string str = string.Empty;
                str="Read Gpu Info: "+ConfigValues[1]+" Error";
                FailInfo(str);
                return 1;
            }


            if (FccGpuValues()==false)//数据比较
            {
                string str = string.Empty;
                str = "Fcc Gpu Number Values Error";
                FailInfo(str);
                return 1;
            }
            //foreach (string n in InfoValues)
            //{
             //   Console.ForegroundColor = ConsoleColor.Yellow;
              //  Console.BackgroundColor = ConsoleColor.Red;
               // Console.WriteLine(n);
            //}
            if (WriteKeyValues() == false)
            {
                return 1;
            }
            Console.ResetColor();
            return 0;
        }


        static bool WriteKeyValues()
        {
            bool Flag = false;
            string[] sstr = { @"c:\RECORD\cardname.DAT", @"c:\RECORD\biosversion.DAT", @"c:\RECORD\memsize.DAT", @"c:\RECORD\clockgpu.DAT", @"c:\RECORD\clockmem.DAT" };
            int n = 0;
            foreach(string nn in sstr)
            {
                if (WriteValues(nn,InfoValues[n])==false)
                {
                    string str = string.Empty;
                    str = "Write "+nn+" Err";
                    FailInfo(str);
                    Flag = false;
                    return Flag;
                }
                n++;
            }
            Flag = true;
            return Flag;
        }
        static bool WriteValues(string FileName,string str)
        {
            bool Flag = false;
            try
            {
                FileStream fs = new FileStream(FileName,FileMode.Create,FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs);
                sw.WriteLine(str);
                sw.Close();
                fs.Close();
                Flag = true;
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                Flag = false;
                return Flag;
            }
            return Flag;
        }


        static bool FccGpuValues()//比较数值
        {
            bool Flag = false;
            string []sstring ={"cardname", "biosversion", "memsize", "clockgpu", "clockmem"};
            for (int i = 0, n = 2; i < InfoValues.Length;i++,n++)
            {
                if(i>=2)
                {
                    if((Convert.ToInt32(InfoValues[i]))>=(Convert.ToInt32(ConfigValues[n])))
                    {
                        string str = string.Empty;
                        str = sstring[i] + ":" + ConfigValues[n] + @" Pass";
                        ShowTestResult(0, str);
                    }
                    else
                    {
                        string str = string.Empty;
                        str = sstring[i] + ":" + ConfigValues[n] + @" Fail";
                        ShowTestResult(1, str);
                        Flag = false;
                        return Flag;
                    }


                }
                else
                {
                    if(ConfigValues[n]==InfoValues[i])
                    {
                        string str=string.Empty;
                        str = sstring[i] + ":" + ConfigValues[n] + @" Pass";
                        ShowTestResult(0,str);
                    }
                    else
                    {
                        string str = string.Empty;
                        str = sstring[i] + ":" + ConfigValues[n] + @" Fail";
                        ShowTestResult(1, str);
                        Flag = false;
                        return Flag;
                    }
                }
            }
            Flag = true;
            return Flag;
        }


        static void ShowTestResult(int n,string str)
        {
            if(n==0)
            {
                Console.ForegroundColor = ConsoleColor.Green;//设置字体颜色为绿色
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;//设置字体颜色为红色
            }
            Console.WriteLine(str);
            Console.ResetColor();
        }
        static bool ReadGpuInfoKeyValues(string InfoFileName)//读取配置数据
        {
            bool Flag = false;
            string[] str = { "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
            try
            {
                FileStream fs = new FileStream(InfoFileName,FileMode.Open,FileAccess.Read);
                StreamReader sr = new StreamReader(fs,Encoding.Default);
                string Temp = string.Empty;
                while((Temp=sr.ReadLine())!=null)
                {
                    string[] Array = Temp.Split(new string[]{ "<",">"},StringSplitOptions.RemoveEmptyEntries);
                    if(Array.Length>2)
                    {
                        int n = 0;
                        foreach (string i in str)
                        {
                            if (Array[1].Trim() == i)
                            {
                                InfoValues[n] = Array[2];
                                break;
                            }
                            n++;
                        }
                    }
                }
                fs.Close();
                sr.Close();
                Flag = true;
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                Flag = false;
                return Flag;
            }
            return Flag;
        }


        static void FailInfo(string ShowInfo)
        {
            Console.ForegroundColor = ConsoleColor.Red;//设置字体颜色为红色
            Console.WriteLine(ShowInfo);
            Console.ResetColor();
        }


        static bool CallBath(string RunFileName)//调用批处理
        {
            string targetDir = string.Empty;
            bool Flag = false;
            targetDir = System.IO.Directory.GetCurrentDirectory() + @"\";
            Process proc = null;
            try
            {
                proc = new Process();
                proc.StartInfo.WorkingDirectory = targetDir;
                proc.StartInfo.FileName = RunFileName;
                proc.Start();
                proc.WaitForExit();
                Flag = true;
             }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Flag = false;
                return Flag;
            }
            foreach (string s in ConfigValues)
            {
                string[] KeyValues = { "RunProgram", "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
                foreach (string s1 in KeyValues)
                {
                    if (s1 == s)
                    {
                        string str = "Read Config.ini File " + s1 + " Key Values Err!!";
                        FailInfo(str);
                        Flag = false;
                    }
                }
            }
            return Flag;
        }


        static bool ReadCfg(string CfgFileName)//读取配置信息
        {
            bool Flag = false;
            string[] KeyWord={"RunProgram", "RunFile","cardname","biosversion","memsize","clockgpu","clockmem"};
            FileStream fs;
            StreamReader sr;
            try
            {
                fs = new FileStream(CfgFileName, FileMode.Open, FileAccess.Read);
                sr = new StreamReader(fs, Encoding.Default);
                string Temp = string.Empty;
                while((Temp=sr.ReadLine())!=null)
                {
                    string[] Array=Temp.Split(new string[] {"="},StringSplitOptions.RemoveEmptyEntries);//截取字符串
                    int v= 0;
                    foreach(string K in KeyWord)
                    {
                        if (Array[0].Trim() == KeyWord[v]) ConfigValues[v] = Array[1].Trim();
                        v++;
                    }
                }
                Flag = true;
                sr.Close();
                fs.Close();
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                Flag = false;
                return Flag;
            }
            //finally
            //{
             //   sr.Close();
              //  fs.Close();
            //}
            return Flag;
        }
    }
} c# GPU-Z数据读取比较_第1张图片

你可能感兴趣的:(C#,控制台)