示例#1
0
 public static void SaveAntminers(Antminers antminers)
 {
     using (var sr = new StreamWriter("antminers.config"))
     {
         sr.Write(Utilities.Serialize(antminers));
     }
 }
示例#2
0
        public void PopulateGrid(Antminers ants)
        {
            var rows = new List <GridViewRowInfo>();

            foreach (var ant in ants.Antminer)
            {
                var rowInfo = new GridViewRowInfo(grdAntminers.MasterView)
                {
                    Tag = ant.Id
                };

                rowInfo.Cells[0].Value  = ant.Id;
                rowInfo.Cells[1].Value  = _rowCount++;
                rowInfo.Cells[2].Value  = DateTime.Now.ToString("h:mm:ss tt");
                rowInfo.Cells[3].Value  = ant.IpAddress;
                rowInfo.Cells[4].Value  = ant.Name;
                rowInfo.Cells[5].Value  = "-------------";
                rowInfo.Cells[6].Value  = 0;
                rowInfo.Cells[7].Value  = 0;
                rowInfo.Cells[8].Value  = 0;
                rowInfo.Cells[9].Value  = "-";
                rowInfo.Cells[10].Value = 0;
                rowInfo.Cells[11].Value = 0;
                rowInfo.Cells[12].Value = 0;
                rowInfo.Cells[13].Value = "-";
                rowInfo.Cells[14].Value = "-";
                rowInfo.Cells[15].Value = "-";
                rowInfo.Cells[16].Value = "-";

                rows.Add(rowInfo);
            }

            if (grdAntminers.InvokeRequired)
            {
                grdAntminers.Invoke(new MethodInvoker(() => grdAntminers.Rows.AddRange(rows.ToArray())));
            }
            else
            {
                grdAntminers.Rows.AddRange(rows.ToArray());
            }
        }
示例#3
0
        void RefreshTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            _antminers = AntminerService.GetAntminers();

            _antminerStatuses = new List <AntminerStatus>();

            if (grdAntminers.Rows.Count == 0)
            {
                PopulateGrid(_antminers);
            }

            _statsTimer.Enabled = true;
            _statsTimer.Stop();

            _countdownTimer.Enabled = false;
            _countdownTimer.Stop();

            _dataDispatchedCount = 0;
            _inProgressCount     = 0;
            _startRefreshtTime   = DateTime.Now;
            _dataDispatchTimer.Start();
        }
示例#4
0
        public static Antminers GetAntminers()
        {
            var antminers = new Antminers();

            using (var sr = new StreamReader("antminers.config"))
            {
                var xml = sr.ReadToEnd();
                if (!string.IsNullOrEmpty(xml))
                {
                    antminers = Utilities.Deserialize <Antminers>(xml);
                }

                foreach (var a in antminers.Antminer.Where(a => a.Id.Equals(Guid.Empty)))
                {
                    a.Id = Guid.NewGuid();
                }
            }

            antminers.Antminer = antminers.Antminer.OrderBy(x => Version.Parse(x.IpAddress)).ToList();

            return(antminers);
        }
示例#5
0
        private void ManageAntminers_Load(object sender, System.EventArgs e)
        {
            Antminers = AntminerService.GetAntminers();

            txtIpAddress.KeyPress += txtIpAddress_KeyPress;

            ddlScanIpRange.Items.Add(new RadListDataItem("192.168.1.*", 1));
            ddlScanIpRange.Items.Add(new RadListDataItem("192.168.2.*", 2));
            ddlScanIpRange.SelectedIndex = 0;

            PopulateAntminers();

            #region Scan

            _scanBackgroundWorker.WorkerReportsProgress = true;
            _scanBackgroundWorker.DoWork             += _scanBackgroundWorker_DoWork;
            _scanBackgroundWorker.RunWorkerCompleted += _scanBackgroundWorker_RunWorkerCompleted;
            _scanBackgroundWorker.ProgressChanged    += _scanBackgroundWorker_ProgressChanged;

            #endregion

            #region Antminer Grid

            var contextMenu    = new ContextMenu();
            var deleteMenuItem = new MenuItem("Delete");
            deleteMenuItem.Click += deleteMenuItem_Click;
            contextMenu.MenuItems.Add(deleteMenuItem);

            grdAntminers.AutoSizeColumnsMode  = GridViewAutoSizeColumnsMode.Fill;
            grdAntminers.AllowAddNewRow       = false;
            grdAntminers.EnableGrouping       = false;
            grdAntminers.AllowDeleteRow       = false;
            grdAntminers.AllowEditRow         = false;
            grdAntminers.AllowCellContextMenu = false;
            grdAntminers.ContextMenu          = contextMenu;

            #endregion
        }
示例#6
0
        void massRebootToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var result = new ConfirmDialog {
                ConfirmSubject = "Mass Restart", ConfirmMessage = "Are you sure you want to restart all miners?"
            }.ShowDialog();

            if (!result.Equals(DialogResult.OK))
            {
                return;
            }

            var errors = new List <string>();

            _antminers = AntminerService.GetAntminers();
            foreach (var ant in _antminers.Antminer)
            {
                try
                {
                    AntminerConnector.Restart(IPAddress.Parse(ant.IpAddress));
                }
                catch (Exception ex)
                {
                    errors.Add(string.Format("{0}: {1}", ant.IpAddress, ex.Message));
                }
            }

            if (errors.Count > 0)
            {
                new ErrorDialog
                {
                    ErrorSubject     = "Error restarting miner(s)",
                    ErrorMessage     = "Some miners error when trying to restart. Hover to see error messages.",
                    LongErrorMessage = errors.Aggregate((w, j) => string.Format("{0}\r\n{1}", w, j))
                }.ShowDialog();
            }
        }
示例#7
0
        private void AntViewer_Load(object sender, System.EventArgs e)
        {
            Text = string.Format("Spiceminer's Ant Viewer - v{0}", FileVersionInfo.GetVersionInfo(typeof(AntViewer).Assembly.Location).FileVersion);

            ThemeResolutionService.ApplicationThemeName = "Windows8";

            WindowState = FormWindowState.Maximized;

            _settings = SettingsService.GetSettings();

            #region Data Dispatch Timer

            _dataDispatchTimer.Enabled   = false;
            _dataDispatchTimer.AutoReset = true;
            _dataDispatchTimer.Elapsed  += _dataDispatchTimer_Elapsed;

            #endregion

            #region BTC Timer

            _btcTimer.Enabled   = true;
            _btcTimer.AutoReset = true;
            _btcTimer.Elapsed  += _btcTimer_Elapsed;
            _btcTimer.Start();

            #endregion

            #region Notify Icon

            _notifyIcon.Icon            = Icon;
            _notifyIcon.BalloonTipTitle = "SAntViewer Minimized to tray";
            _notifyIcon.BalloonTipText  = "SAntViewer has been minimized to tray, click to open.";
            _notifyIcon.DoubleClick    += _notifyIcon_DoubleClick;
            _notifyIcon.Click          += _notifyIcon_DoubleClick;

            #endregion

            #region Antminers Grid

            #region Context Menu

            var contextMenu = new ContextMenu();

            var details = new MenuItem("View Details");
            details.Click += details_Click;
            contextMenu.MenuItems.Add(details);

            var restart = new MenuItem("Restart");
            restart.Click += restart_Click;
            contextMenu.MenuItems.Add(restart);

            var openInBrowser = new MenuItem("Open in browser");
            openInBrowser.Click += openInBrowser_Click;
            contextMenu.MenuItems.Add(openInBrowser);

            #endregion

            grdAntminers.AutoGenerateColumns  = false;
            grdAntminers.AutoSizeColumnsMode  = GridViewAutoSizeColumnsMode.Fill;
            grdAntminers.AllowAddNewRow       = false;
            grdAntminers.EnableGrouping       = true;
            grdAntminers.AllowCellContextMenu = false;
            grdAntminers.AllowAutoSizeColumns = true;
            grdAntminers.ContextMenu          = contextMenu;

            grdAntminers.Columns.Add("Id", "Id", "Id");
            grdAntminers.Columns.Add("Number", "#", "Number");
            grdAntminers.Columns.Add("LastUpdated", "Last Updated", "LastUpdated");
            grdAntminers.Columns.Add("IpAddress", "Ip Address", "IpAddress");
            grdAntminers.Columns.Add("Name", "Name", "Name");
            grdAntminers.Columns.Add("Status", "Status", "Status");
            grdAntminers.Columns.Add("Ghs5s", "GH/S (5s)", "Ghs5s");
            grdAntminers.Columns.Add("GhsAv", "GH/S Av", "GhsAv");
            grdAntminers.Columns.Add("Block", "Blocks", "Blocks");
            grdAntminers.Columns.Add("HardwareErrorPercentage", "Hardware Error %", "HardwareErrorPercentage");
            grdAntminers.Columns.Add("RejectPercentage", "Reject %", "RejectPercentage");
            grdAntminers.Columns.Add("StalePercentage", "Stale %", "StalePercentage");
            grdAntminers.Columns.Add("BestShare", "Best Share", "BestShare");
            grdAntminers.Columns.Add("Fans", "Fans", "Fans");
            grdAntminers.Columns.Add("Temps", "Temps", "Temps");
            grdAntminers.Columns.Add("Freq", "Freq", "Freq");
            grdAntminers.Columns.Add("AsicStatus", "ASIC Status", "Asic Status");

            grdAntminers.Columns[0].IsVisible = false;
            grdAntminers.Columns[1].Width     = 25;
            grdAntminers.Columns[2].Width     = 100;
            grdAntminers.Columns[3].Width     = 100;
            grdAntminers.Columns[4].Width     = 100;
            grdAntminers.Columns[5].Width     = 50;
            grdAntminers.Columns[6].Width     = 50;
            grdAntminers.Columns[7].Width     = 50;
            grdAntminers.Columns[8].Width     = 50;
            grdAntminers.Columns[9].Width     = 100;
            grdAntminers.Columns[10].Width    = 100;
            grdAntminers.Columns[11].Width    = 100;
            grdAntminers.Columns[12].Width    = 75;
            grdAntminers.Columns[13].Width    = 60;
            grdAntminers.Columns[14].Width    = 60;
            grdAntminers.Columns[15].Width    = 60;
            grdAntminers.Columns[16].Width    = 350;

            #endregion

            _antminers = AntminerService.GetAntminers();

            if (grdAntminers.Rows.Count == 0)
            {
                PopulateGrid(_antminers);
                BeginMonitoring();
            }
            else
            {
                BeginMonitoring();
            }
        }