Пример #1
0
 public static void SaveAntminers(Antminers antminers)
 {
     using (var sr = new StreamWriter("antminers.config"))
     {
         sr.Write(Utilities.Serialize(antminers));
     }
 }
Пример #2
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;
        }
Пример #3
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
        }
Пример #4
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());
        }
Пример #5
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();
        }
Пример #6
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(); 
        }
Пример #7
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();
            }
        }