static void Main(string[] args) { var oledType = Util.ChooseOLEDType(); var netDev = Util.ChooseNetDev(); Console.WriteLine($"Running test with selected display [{oledType}]"); Console.WriteLine("Hit CTRL+C to stop"); // init oled display var wrapper = new ArduiPi_OLED.Wrapper(oledType); wrapper.SetTextColor(1); wrapper.SetTextSize(2); var w = wrapper.DisplayWidth(); var h = wrapper.DisplayHeight(); //--- here can change to 24h for example var longTxt = "15m"; var longTimespan = TimeSpan.FromMinutes(15); //--- Console.WriteLine($"display w:{w} x h:{h}"); // -20 to skip 16 of first char + 4 margin var graphW = (short)(w - 20); var graphH = (short)12; // let 4 pixel margin IMonitorPlot plotNet = new MonitorPlot(graphW); var dsDefaultNet = plotNet.DataSets.First(k => k.Name == "default"); var dsLongNet = plotNet.AddDataSet(longTxt, longTimespan); IMonitorPlot plotCpu = new MonitorPlot(graphW); var dsDefaultCpu = plotCpu.DataSets.First(k => k.Name == "default"); var dsLongCpu = plotCpu.AddDataSet(longTxt, longTimespan); { var cpuPrev = new CpuNfo(); cpuPrev.ReadFromProc(); var netPrev = new NetNfo(netDev); netPrev.ReadFromProc(); while (true) { wrapper.ClearDisplay(); wrapper.SetTextSize(2); wrapper.SetCursor(0, 0); wrapper.Print("C"); wrapper.SetTextSize(1); wrapper.SetCursor(0, 16); wrapper.Print(longTxt); wrapper.SetTextSize(2); wrapper.SetCursor(0, 32); wrapper.Print("N"); wrapper.SetTextSize(1); wrapper.SetCursor(0, 48); wrapper.Print(longTxt); // CPU { var nfoCur = new CpuNfo(); nfoCur.ReadFromProc(); // read updated info var diff = nfoCur - cpuPrev; var loadF = (double)diff.Usage / diff.Total; var load = (int)(loadF * 100); Console.Write($"cpu % = {load}"); plotCpu.Add(new MonitorData(DateTime.Now, loadF)); cpuPrev = nfoCur; // DisplayMonitorPlot (wrapper, ds, graphX0, graphW, graphY0, graphH, normalize) DisplayMonitorPlot(wrapper, dsDefaultCpu, 20, graphW, 15, graphH, false); DisplayMonitorPlot(wrapper, dsLongCpu, 20, graphW, 31, graphH, false); } // NET { var nfoCur = new NetNfo(netDev); nfoCur.ReadFromProc(); // read updated info var diff = nfoCur - netPrev; var rate = Math.Max(diff.Received, diff.Transmitted); Console.WriteLine($" ; net rate = {rate}"); plotNet.Add(new MonitorData(DateTime.Now, rate)); netPrev = nfoCur; DisplayMonitorPlot(wrapper, dsDefaultNet, 20, graphW, 47, graphH, true); DisplayMonitorPlot(wrapper, dsLongNet, 20, graphW, 63, graphH, true); } wrapper.Display(); Thread.Sleep(1000); } } }
static void Main(string[] args) { bool quietMode = false; if (args.Any(t => t == "-q")) { quietMode = true; } if (!quietMode) { Console.WriteLine("To use command line (-h argument help)"); } if (args.Any(t => t == "-h")) { PrintUsage(); return; } var oledType = ArduiPi_OLED.OLED_Types.Adafruit_I2C_128x32; string netDev = null; bool oledTypeArgumentGiven = false; bool netDevArgumentGiven = false; int longTimeGraphMinutes = 15; for (int i = 0; i < args.Length; ++i) { if (args[i] == "-o" && i + 1 < args.Length && args[i + 1].Length == 1 && "0123456".IndexOf(args[i + 1]) != -1) { oledType = (ArduiPi_OLED.OLED_Types) int.Parse(args[i + 1]); oledTypeArgumentGiven = true; } if (args[i] == "-d" && i + 1 < args.Length) { netDev = args[i + 1]; netDevArgumentGiven = true; } if (args[i] == "-t" && i + 1 < args.Length) { longTimeGraphMinutes = int.Parse(args[i + 1]); } } if (!oledTypeArgumentGiven || !netDevArgumentGiven) { oledType = Util.ChooseOLEDType(); netDev = Util.ChooseNetDev(); } if (!quietMode) { Console.WriteLine($"Running test with selected display [{oledType}]"); Console.WriteLine("Hit CTRL+C to stop"); } // init oled display var wrapper = new ArduiPi_OLED.Wrapper(oledType); wrapper.SetTextColor(1); wrapper.SetTextSize(2); var w = wrapper.DisplayWidth(); var h = wrapper.DisplayHeight(); //--- here can change to 24h for example var longTxt = MinutesHumanReadableLabel(longTimeGraphMinutes); var longTimespan = TimeSpan.FromMinutes(longTimeGraphMinutes); //--- if (!quietMode) { Console.WriteLine($"display w:{w} x h:{h}"); } // -20 to skip 16 of first char + 4 margin var graphW = (short)(w - 20); var graphH = (short)12; // let 4 pixel margin IMonitorPlot plotNet = new MonitorPlot(graphW); var dsDefaultNet = plotNet.DataSets.First(k => k.Name == "default"); var dsLongNet = plotNet.AddDataSet(longTxt, longTimespan); IMonitorPlot plotCpu = new MonitorPlot(graphW); var dsDefaultCpu = plotCpu.DataSets.First(k => k.Name == "default"); var dsLongCpu = plotCpu.AddDataSet(longTxt, longTimespan); { var cpuPrev = new CpuNfo(); cpuPrev.ReadFromProc(); var netPrev = new NetNfo(netDev); netPrev.ReadFromProc(); while (true) { wrapper.ClearDisplay(); wrapper.SetTextSize(2); wrapper.SetCursor(0, 0); wrapper.Print("C"); wrapper.SetTextSize(1); wrapper.SetCursor(0, 16); wrapper.Print(longTxt); wrapper.SetTextSize(2); wrapper.SetCursor(0, 32); wrapper.Print("N"); wrapper.SetTextSize(1); wrapper.SetCursor(0, 48); wrapper.Print(longTxt); // CPU { var nfoCur = new CpuNfo(); nfoCur.ReadFromProc(); // read updated info var diff = nfoCur - cpuPrev; var loadF = (double)diff.Usage / diff.Total; var load = (int)(loadF * 100); if (!quietMode) { Console.Write($"cpu % = {load}"); } plotCpu.Add(new MonitorData(DateTime.Now, loadF)); cpuPrev = nfoCur; // DisplayMonitorPlot (wrapper, ds, graphX0, graphW, graphY0, graphH, normalize) DisplayMonitorPlot(wrapper, dsDefaultCpu, 20, graphW, 15, graphH, false); DisplayMonitorPlot(wrapper, dsLongCpu, 20, graphW, 31, graphH, false); } // NET { var nfoCur = new NetNfo(netDev); nfoCur.ReadFromProc(); // read updated info var diff = nfoCur - netPrev; var rate = Math.Max(diff.Received, diff.Transmitted); if (!quietMode) { Console.WriteLine($" ; net rate = {rate}"); } plotNet.Add(new MonitorData(DateTime.Now, rate)); netPrev = nfoCur; DisplayMonitorPlot(wrapper, dsDefaultNet, 20, graphW, 47, graphH, true); DisplayMonitorPlot(wrapper, dsLongNet, 20, graphW, 63, graphH, true); } wrapper.Display(); Thread.Sleep(1000); } } }