예제 #1
0
        void UpdateInfo()
        {
            EC ec = SingleInstanceManager.Instance.ec;

            //Cpu
            Cpu.Info_1_Data.Text = PercentToStrConvert(cpu_Helper.GetCPUTotalUsage());
            Cpu.Info_2_Data.Text = TempToStrConvert(ec.Cpu_Temp);
            //Gpu
            if (Gpu_1.Visibility == Visibility.Visible)
            {
                uint gpu, mem;
                NV_Queries.nv_getUtilizationRatesByIndex(0, out mem, out gpu);
                Gpu_1.Info_1_Data.Text = PercentToStrConvert(gpu);
                Gpu_1.Info_2_Data.Text = TempToStrConvert(ec.Gpu1_Temp);
            }
            if (Gpu_2.Visibility == Visibility.Visible)
            {
                uint gpu, mem;
                NV_Queries.nv_getUtilizationRatesByIndex(1, out mem, out gpu);
                Gpu_2.Info_1_Data.Text = PercentToStrConvert(gpu);
                Gpu_2.Info_2_Data.Text = TempToStrConvert(ec.Gpu2_Temp);
            }
            //Fan
            Fan_1.UpdataFanInfo(ec.Fan_1.RPM, ec.Fan_1.Duty);
            if (Fan_2.Visibility == Visibility.Visible)
            {
                Fan_2.UpdataFanInfo(ec.Fan_2.RPM, ec.Fan_2.Duty);
            }
            if (Fan_3.Visibility == Visibility.Visible)
            {
                Fan_3.UpdataFanInfo(ec.Fan_3.RPM, ec.Fan_3.Duty);
            }
        }
예제 #2
0
        double getNVPowerByIndex(int index)
        {
            uint power;

            NV_Queries.nv_getPowerUsageByIndex(index, out power);
            return(Math.Round(power / 1000.0, 2));
        }
예제 #3
0
 private void onExit(object sender, EventArgs e)
 {
     controller.Dispose();
     monitor.Dispose();
     tray.Dispose();
     NV_Queries.nv_shutdown();
     if (ols != null)
     {
         ols.Dispose();
     }
     ec.SetFanModeAuto();
 }
예제 #4
0
        public bool InitNVSMI()
        {
            bool result;

            try
            {
                result = NV_Queries.nv_init();
            }
            catch (Exception)
            {
                result = false;
            }
            return(result);
        }
예제 #5
0
        private void Window_Init()
        {
            String usage = "Usage:";
            String temp  = "Temp:";

            //Cpu
            Cpu.ItemName.Text    = cpu_Helper.Name;
            Cpu.Info_1_Desc.Text = usage;
            Cpu.Info_2_Desc.Text = temp;
            //Gpu
            Gpu_1.Visibility = Visibility.Collapsed;
            Gpu_2.Visibility = Visibility.Collapsed;
            if (SingleInstanceManager.Instance.supportNVSMI)
            {
                uint count;
                NV_Queries.nv_getCount(out count);
                if (count >= 1)
                {
                    Gpu_1.Visibility = Visibility.Visible;
                    Byte[] data = new Byte[64];
                    int    size;
                    NV_Queries.nv_getNameByIndex(0, ref data[0], out size);
                    Gpu_1.ItemName.Text    = System.Text.Encoding.Default.GetString(data);
                    Gpu_1.Info_1_Desc.Text = usage;
                    Gpu_1.Info_2_Desc.Text = temp;
                    if (count == 2)
                    {
                        Gpu_2.Visibility       = Visibility.Visible;
                        Gpu_2.Info_1_Desc.Text = usage;
                        Gpu_2.Info_2_Desc.Text = temp;
                    }
                }
            }

            InitFans();

            //Update ui
            infoUpdateTimer.Elapsed += onTimer;
            Config config = SingleInstanceManager.Instance.cfg;

            //init config
            _Count.Value          = config.FanCount;
            _Span.Text            = config.PollSpan.ToString();
            _TrendStableTime.Text = config.TrendStableTime.ToString();
            _Mode.SelectedIndex   = config.FanMode;
        }