/// <summary> /// 添加寄存器的按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void addRegButton_Click(object sender, EventArgs e) { RegInf newRegInf = new RegInf(); MakeNewRegInfForm(newRegInf, "newReg" + regInfCount.ToString()); regInfSet.Add(newRegInf); newRegInf.Show(); }
/// <summary> /// 创建新的regInf显示控件,并且排版 /// </summary> /// <param name="newRegInf"></param> /// <param name="regInfName"></param> private void MakeNewRegInfForm(RegInf newRegInf, string regInfName) { this.regInfShowPanel.Controls.Add(newRegInf); if (regInfCount == 0) { newRegInf.Location = new System.Drawing.Point(0, 0); } else { newRegInf.Location = new System.Drawing.Point(0, regInfSet[regInfCount - 1].Location.Y + 640); //640是一个regInf的高度,其实也可以直接读取,但是没必要 } newRegInf.Name = regInfName; regInfCount++; }
/// <summary> /// 读取,分析这个设备信息标签化文本,不做解释了,直接运行看看结果就知道了 /// </summary> /// <param name="fileContent"></param> public void ReadFile_DevInf(string fileContent) { string devInfStr; string regInfSetStr; int regInfIndex = 0; regInfIndex = fileContent.IndexOf("[regInf]"); string[] regInfStrSet; if (regInfIndex == -1) { regInfStrSet = fileContent.Split('\n'); devInfStr = GetValueInFileString(regInfStrSet[0]); multipleDevCheckBox.Checked = (devInfStr == "True"); if (multipleDevCheckBox.Checked) { baseAddrNameTextBox.Enabled = false; baseAddrNumTextBox.Enabled = false; configSameDevBaseAddrButton.Enabled = true; } else { baseAddrNameTextBox.Enabled = true; baseAddrNumTextBox.Enabled = true; configSameDevBaseAddrButton.Enabled = false; } devInfStr = GetValueInFileString(regInfStrSet[1]); baseAddrNameTextBox.Text = (devInfStr == "%" ? "" : devInfStr); devInfStr = GetValueInFileString(regInfStrSet[2]); baseAddrNumTextBox.Text = (devInfStr == "%" ? "" : devInfStr); if (multipleDevCheckBox.Checked) { sameDevBaseAddrTable.ReadFile_SameDevBaseAddrTable(regInfStrSet); } return; } devInfStr = fileContent.Substring(0, regInfIndex - 2); regInfStrSet = devInfStr.Split('\n'); devInfStr = GetValueInFileString(regInfStrSet[0]); multipleDevCheckBox.Checked = (devInfStr == "True"); if (multipleDevCheckBox.Checked) { baseAddrNameTextBox.Enabled = false; baseAddrNumTextBox.Enabled = false; configSameDevBaseAddrButton.Enabled = true; } else { baseAddrNameTextBox.Enabled = true; baseAddrNumTextBox.Enabled = true; configSameDevBaseAddrButton.Enabled = false; } devInfStr = GetValueInFileString(regInfStrSet[1]); baseAddrNameTextBox.Text = (devInfStr == "%" ? "" : devInfStr); devInfStr = GetValueInFileString(regInfStrSet[2]); baseAddrNumTextBox.Text = (devInfStr == "%" ? "" : devInfStr); if (multipleDevCheckBox.Checked) { sameDevBaseAddrTable.ReadFile_SameDevBaseAddrTable(regInfStrSet); } regInfSetStr = fileContent.Substring(regInfIndex); for (int i = 0; i < regInfSet.Count; i++) { regInfSet[i].Hide(); regInfSet[i].Dispose(); } regInfSet.Clear(); int regNameLabelStartIndex = 0; int regNameLabelEndIndex = regInfSetStr.IndexOf("[#regInf]"); while (true) { RegInf newRegInf = new RegInf(); MakeNewRegInfForm(newRegInf, "newReg" + regInfSet.Count); newRegInf.ReadFile_RegInf(regInfSetStr.Substring(regNameLabelStartIndex + 10, regNameLabelEndIndex - regNameLabelStartIndex - 2 - 10)); regNameLabelStartIndex = regInfSetStr.IndexOf("[regInf]", regNameLabelEndIndex + 2); regInfSet.Add(newRegInf); if (regNameLabelStartIndex == -1) { break; } regNameLabelEndIndex = regInfSetStr.IndexOf("[#regInf]", regNameLabelStartIndex); } }