⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 单片机ATMEL M8 USB监视m8usbmonitor.rar
💻 CS
📖 第 1 页 / 共 5 页
字号:

			// Read settings into memory
			for (int i = 0; i < displayUnits.Length; i++)
			{
				displayUnits[i] = new DisplayUnit();
				DisplayUnit du = displayUnits[i];
				XmlNode duNode = nodeList[i];

				node = duNode.SelectSingleNode("./@name");
				du.sName = node.InnerText;
				cboDisplayUnits.Items.Add(du.sName);  // Add name to combo box

				node = duNode.SelectSingleNode("./@enabled");
				du.bEnabled = (node.InnerText == "1") ? true : false;
			
				// Read current counter settings
				node = duNode.SelectSingleNode("CurrentCounter/CategoryName");
				du.sCatName = node.InnerText;
				node = duNode.SelectSingleNode("CurrentCounter/InstanceName");
				du.sInstName = node.InnerText;
				node = duNode.SelectSingleNode("CurrentCounter/CounterName");
				du.sCntName = node.InnerText;
					
				// Init counter data
				du.pc = null;
				du.dblSampleValue = 0.0;
				du.nDisplayValue = 0;

				// Load other parameters
				if (duNode.Name == "Bar")
				{
					BarParams barParams = new BarParams();
					du.parameters = barParams;

					node = duNode.SelectSingleNode("Parameters/Size");
					barParams.nSize = Int32.Parse(node.InnerText);
					node = duNode.SelectSingleNode("Parameters/DataPos");
					barParams.nBytePtr = Int32.Parse(node.InnerText);
					node = duNode.SelectSingleNode("Parameters/MinValue");
					barParams.nMinValue = Int32.Parse(node.InnerText);
					node = duNode.SelectSingleNode("Parameters/MaxValue");
					barParams.nMaxValue = Int32.Parse(node.InnerText);
					node = duNode.SelectSingleNode("Parameters/Logarithmic");
					barParams.bLogarithmic = (node.InnerText == "1") ? true : false;
				}
				else  // duNode.Name == "Dot"
				{
					DotParams dotParams = new DotParams();
					du.parameters = dotParams;

					node = duNode.SelectSingleNode("Parameters/Operator");
					dotParams.sOperator = node.InnerText;

					node = duNode.SelectSingleNode("Parameters/DataPos");
					string sDataPos = node.InnerText;
					dotParams.nBytePtr = Int32.Parse(sDataPos.Substring(0, sDataPos.IndexOf('.')));
					dotParams.nBitPtr = Int32.Parse(sDataPos.Substring(sDataPos.IndexOf('.') + 1));

					node = duNode.SelectSingleNode("Parameters/Threshold");
					dotParams.dblThreshold = Double.Parse(node.InnerText);
				}	
			}

			// Allocate memory for the data packet
			node = xmlProfile.SelectSingleNode("HyperBarServer/DisplayUnits/@dataSize");
			int nPacketSize = Int32.Parse(node.InnerText) + 2;  // Including header and tail bytes
			packet = new byte[nPacketSize];

			// Load other misc. parameters
			// Tip: "1" represents "true"
			//
			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/HideOnStartup");
			chkHideOnStart.Checked = (node.InnerText == "1") ? true : false;
			if (chkHideOnStart.Checked)
			{
				notifyIcon1.Visible = true;
			}
			else
			{
				this.Show();
			}

			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/StartupWithSystem");
			chkStartWithSys.Checked = (node.InnerText == "1") ? true : false;

			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/AutoStartSamplingDelay");
			txtStartDelay.Text = node.InnerText;
			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/AutoStartSampling");
			chkAutoStartSampling.Checked = (node.InnerText == "1") ? true : false;

			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/ValidateCountersInterval");
			txtValidateInterval.Text = node.InnerText;
			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/ValidateCounters");
			chkValidateCounters.Checked = (node.InnerText == "1") ? true : false;

			// Auto start sampling after a specified time delay
			if (chkAutoStartSampling.Checked)
			{
				int nDelaySecond = Int32.Parse(txtStartDelay.Text);
				if (nDelaySecond <= 0)
				{
					// Start sampling with the program startup without delay
					tbbRun.Pushed = true;
					OnToolButtonRun();
				}
				else
				{
					tmrDelay.Interval = 1000 * nDelaySecond;
					tmrDelay.Enabled = true;
				}
			}
		}

		private void SaveStartupRegEntry(bool clear)
		{
			// Writing to windows registry

			string sRegPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
			RegistryKey key = Registry.LocalMachine.OpenSubKey(sRegPath, true);
			
			if (clear)
			{
				key.DeleteValue("HyperBarServer", false);
			}
			else
			{
				// The program will be automatically started with the system startup
				key.SetValue("HyperBarServer", Application.ExecutablePath);
			}
		}

		private void SaveConfig()
		{
			XmlNode node = null;
			XmlNodeList nodeList = null;
		
			// Save default baudrate
			//
			node = xmlProfile.SelectSingleNode("HyperBarServer/BaudrateSettings/Default");
			if (cboBaudrates.SelectedIndex == -1) throw new Exception("请选择通信波特率!");
			node.InnerText = cboBaudrates.SelectedItem.ToString();

			// Save default sample interval
			//
			node = xmlProfile.SelectSingleNode("HyperBarServer/SampleIntervalSettings/Default");
			if (cboSampleIntervals.SelectedIndex == -1) throw new Exception("请选择采样间隔!");
			node.InnerText = cboSampleIntervals.SelectedItem.ToString();

			// Save default refresh interval
			//
			//node = xmlProfile.SelectSingleNode("HyperBarServer/RefreshIntervalSettings/Default");
			//if (cboRefreshIntervals.SelectedIndex == -1) throw new Exception("请选择刷新间隔!");
			//node.InnerText = cboRefreshIntervals.SelectedItem.ToString();

			// Save info for all the display units
			//
			nodeList = xmlProfile.SelectNodes("HyperBarServer/DisplayUnits/*");
				
			for (int i = 0; i < nodeList.Count; i++)
			{
				DisplayUnit du = displayUnits[i];
				XmlNode duNode = nodeList[i];

				node = duNode.SelectSingleNode("./@enabled");
				node.InnerText = du.bEnabled ? "1" : "0";

				// Save current counter settings
				node = duNode.SelectSingleNode("CurrentCounter/CategoryName");
				node.InnerText = du.sCatName;
				node = duNode.SelectSingleNode("CurrentCounter/InstanceName");
				node.InnerText = du.sInstName;
				node = duNode.SelectSingleNode("CurrentCounter/CounterName");
				node.InnerText = du.sCntName;
					
				// Save other parameters
				if (duNode.Name == "Bar")
				{
					BarParams barParams = (BarParams)du.parameters;

					node = duNode.SelectSingleNode("Parameters/MinValue");
					node.InnerText = barParams.nMinValue.ToString();
					node = duNode.SelectSingleNode("Parameters/MaxValue");
					node.InnerText = barParams.nMaxValue.ToString();
					node = duNode.SelectSingleNode("Parameters/Logarithmic");
					node.InnerText = barParams.bLogarithmic ? "1" : "0";
				}
				else  // duNode.Name == "Dot"
				{
					DotParams dotParams = (DotParams)du.parameters;

					node = duNode.SelectSingleNode("Parameters/Operator");
					node.InnerText = dotParams.sOperator;
					node = duNode.SelectSingleNode("Parameters/Threshold");
					node.InnerText = dotParams.dblThreshold.ToString("0.0");
				}
			}

			// Save other misc. parameters
			//
			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/HideOnStartup");
			node.InnerText = chkHideOnStart.Checked ? "1" : "0";

			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/StartupWithSystem");
			node.InnerText = chkStartWithSys.Checked ? "1" : "0";
			SaveStartupRegEntry(!chkStartWithSys.Checked);  // Save to windows registry

			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/AutoStartSamplingDelay");
			node.InnerText = txtStartDelay.Text;
			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/AutoStartSampling");
			node.InnerText = chkAutoStartSampling.Checked ? "1" : "0";

			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/ValidateCountersInterval");
			node.InnerText = txtValidateInterval.Text;
			node = xmlProfile.SelectSingleNode("HyperBarServer/MiscSettings/ValidateCounters");
			node.InnerText = chkValidateCounters.Checked ? "1" : "0";

			// Write to disk
			xmlProfile.Save(PROFILE_NAME);
		}

		private void chkAutoStartSampling_CheckedChanged(object sender, System.EventArgs e)
		{
			lblStartDelay.Enabled = chkAutoStartSampling.Checked;
			txtStartDelay.Enabled = chkAutoStartSampling.Checked;
			lblSecond1.Enabled = chkAutoStartSampling.Checked;
		}

		private void chkValidateCounters_CheckedChanged(object sender, System.EventArgs e)
		{
			lblValidateInterval.Enabled = chkValidateCounters.Checked;
			txtValidateInterval.Enabled = chkValidateCounters.Checked;
			lblSecond2.Enabled = chkValidateCounters.Checked;
		}

		private void cboDisplayUnits_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			chkDisplayUnitEnabled.Enabled = true;

			int index = cboDisplayUnits.SelectedIndex;
			DisplayUnit du = displayUnits[index];
			
			// Load settings from memory
			//
			chkDisplayUnitEnabled.Checked = du.bEnabled;
			lblCurrentCounter.Text = BuildCounterString(du.sCatName, du.sInstName, du.sCntName);
			
			// Check for other parameters
			if (du.parameters is BarParams)
			{
				// It is a bar unit
				BarParams barParams = (BarParams)du.parameters;
					
				txtMinValue.Text = barParams.nMinValue.ToString();
				txtMaxValue.Text = barParams.nMaxValue.ToString();
				chkLogarithmic.Checked = barParams.bLogarithmic;

				lblMinValue.Visible = true;
				txtMinValue.Visible = true;
				lblMaxValue.Visible = true;
				txtMaxValue.Visible = true;
				chkLogarithmic.Visible = true;
				lblOperator.Visible = false;
				cboOperators.Visible = false;
				lblThreshold.Visible = false;
				txtThreshold.Visible = false;
			}			
			else  // du.parameters is DotParams
			{
				// It is a dot unit
				DotParams dotParams = (DotParams)du.parameters;

				cboOperators.SelectedIndex = cboOperators.FindString(dotParams.sOperator);
				txtThreshold.Text = dotParams.dblThreshold.ToString("0.0");

				lblMinValue.Visible = false;
				txtMinValue.Visible = false;
				lblMaxValue.Visible = false;
				txtMaxValue.Visible = false;
				chkLogarithmic.Visible = false;
				lblOperator.Visible = true;
				cboOperators.Visible = true;
				lblThreshold.Visible = true;
				txtThreshold.Visible = true;
			}
		}

		private void chkDisplayUnitEnabled_CheckedChanged(object sender, System.EventArgs e)
		{
			lblCurrentCounter1.Enabled = chkDisplayUnitEnabled.Checked;
			lblCurrentCounter.Enabled = chkDisplayUnitEnabled.Checked;
			btnModifyCounter.Enabled = chkDisplayUnitEnabled.Checked;
			lblMinValue.Enabled = chkDisplayUnitEnabled.Checked;
			txtMinValue.Enabled = chkDisplayUnitEnabled.Checked;
			lblMaxValue.Enabled = chkDisplayUnitEnabled.Checked;
			txtMaxValue.Enabled = chkDisplayUnitEnabled.Checked;
			chkLogarithmic.Enabled = chkDisplayUnitEnabled.Checked;
			lblOperator.Enabled = chkDisplayUnitEnabled.Checked;
			cboOperators.Enabled = chkDisplayUnitEnabled.Checked;
			lblThreshold.Enabled = chkDisplayUnitEnabled.Checked;
			txtThreshold.Enabled = chkDisplayUnitEnabled.Checked;

			int index = cboDisplayUnits.SelectedIndex;
			displayUnits[index].bEnabled = chkDisplayUnitEnabled.Checked;  // Save to memory
		}

		private void tbMain_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			// Clicking on the toolbar button would not cause Validating event
			// to be triggered on the previously focused control.
			// So by programmatically setting focus on the toolbar control first and
			// that event could be successfully triggered right after this Focus() call.
			// But in fact, a toolbar control can not gain focus.

			tbMain.Focus();
			if (bValidationError)
			{
				if (tbbRun == e.Button)
				{
					// Restore push state of the button
					tbbRun.Pushed = !tbbRun.Pushed;
				}

				// Validation error, do nothing
				return;
			}

			// Dispatch
			if (tbbSave == e.Button)
			{
				OnToolButtonSave();
			}
			else if (tbbRun == e.Button)
			{
				OnToolButtonRun();
			}
			else if (tbbAbout == e.Button)
			{
				OnToolButtonAbout();
			}
			else if (tbbHelp == e.Button)
			{
				OnToolButtonHelp();
			}
			else if (tbbHide == e.Button)
			{
				OnToolButtonHide();
			}
			else if (tbbExit == e.Button)
			{
				OnToolButtonExit();
			}
			else
			{
				// Not defined
			}
		}

		private void OnToolButtonSave()
		{
			try

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -