FormConfig.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. using GatewayTool.Businesses;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using WjwLib.API.Configuration;
  12. using GatewayTool.Models;
  13. using System.Reflection;
  14. namespace GatewayTool
  15. {
  16. public partial class FormConfig : FormBase
  17. {
  18. private const string NAME = "Name";
  19. private const string VALUE = "Value";
  20. private SoftwareConfigs _softwareConfigs;
  21. private static IConfig config = new ConfigServer(ConfigType.CT_INI);
  22. public event EventHandler ExecConfigSaved;
  23. public FormConfig(ref SoftwareConfigs softwareConfigs)
  24. {
  25. InitializeComponent();
  26. this.IsMaximizable = false;
  27. this.IsMinimizable = false;
  28. this.Icon = Resource.favicon;
  29. this.ShowInTaskbar = false;
  30. _softwareConfigs = softwareConfigs;
  31. }
  32. private void InitStrings()
  33. {
  34. this.Title = StrMsg.Settings;
  35. tabPage1.Text = StrMsg.Net;
  36. lbServicePort.Text = StrMsg.ServicePort;
  37. tabPage2.Text = StrMsg.Log;
  38. lbShowMaxLine.Text = StrMsg.ShowMaxLine;
  39. lbFolderPath.Text = StrMsg.FolderPath;
  40. tabPage3.Text = StrMsg.DeviceSniff;
  41. lbRemotePort.Text = StrMsg.RemotePort;
  42. lbBaudRate.Text = StrMsg.Baudrate;
  43. lbDataBits.Text = StrMsg.Databits;
  44. lbStopBits.Text = StrMsg.Stopbits;
  45. lbParity.Text = StrMsg.Parity;
  46. btnDefault.Text = StrMsg.DefaultValue;
  47. btnOK.Text = StrMsg.MessageBoxButtonOK;
  48. btnCancel.Text = StrMsg.MessageBoxButtonCancel;
  49. }
  50. private void FormConfig_Load(object sender, EventArgs e)
  51. {
  52. InitComboxes();
  53. InitStrings();
  54. ModelToView();
  55. }
  56. private void InitComboxes()
  57. {
  58. InitCombox<EnumBaudrate>(cmbBaudRate, VALUE, VALUE);
  59. InitCombox<EnumDataBits>(cmbDataBits, VALUE, VALUE);
  60. InitCombox<EnumStopBits>(cmbStopBits, VALUE, VALUE);
  61. InitCombox<EnumCheckBit>(cmbParity, NAME, VALUE);
  62. }
  63. private void InitCombox<T>(ComboBox cmb, string displayMember, string valueMember)
  64. {
  65. cmb.Items.Clear();
  66. cmb.DataSource = GetDataTable<T>();
  67. cmb.DisplayMember = displayMember;
  68. cmb.ValueMember = valueMember;
  69. }
  70. private DataTable GetDataTable<T>()
  71. {
  72. Type t = typeof(T); //创建类型
  73. FieldInfo[] fieldinfo = t.GetFields(); //获取字段信息对象集合
  74. DataTable table = new DataTable();
  75. table.Columns.Add("Name", typeof(String));
  76. table.Columns.Add("Value", typeof(Int32));
  77. foreach (FieldInfo field in fieldinfo)
  78. {
  79. if (!field.IsSpecialName)
  80. {
  81. DataRow row = table.NewRow();
  82. row[0] = field.Name; //获取文本字段
  83. row[1] = (int)field.GetRawConstantValue(); //获取int数值
  84. table.Rows.Add(row);
  85. }
  86. }
  87. return table;
  88. }
  89. private void ModelToView()
  90. {
  91. numServicePort.Value = _softwareConfigs.ServicePortNum;
  92. numShowMaxLine.Value = _softwareConfigs.ShowLogMaxLine;
  93. txtFolderPath.Text = _softwareConfigs.LogFolderPath;
  94. numRemotePort.Value = _softwareConfigs.SniffRemotePortNum;
  95. cmbBaudRate.Text = Convert.ToInt32(Enum.Parse(typeof(EnumBaudrate), _softwareConfigs.SniffBaudRate.ToString())).ToString();
  96. cmbDataBits.Text = Convert.ToInt32(Enum.Parse(typeof(EnumDataBits), _softwareConfigs.SniffDataBits.ToString())).ToString();
  97. cmbStopBits.Text = Convert.ToInt32(Enum.Parse(typeof(EnumStopBits), _softwareConfigs.SniffStopBits.ToString())).ToString();
  98. cmbParity.Text = Enum.Parse(typeof(EnumCheckBit), _softwareConfigs.SniffParity.ToString()).ToString();
  99. }
  100. private void ViewToModel()
  101. {
  102. _softwareConfigs.ServicePortNum = Convert.ToInt32(numServicePort.Value);
  103. _softwareConfigs.ShowLogMaxLine = Convert.ToInt32(numShowMaxLine.Value);
  104. _softwareConfigs.LogFolderPath = txtFolderPath.Text.Trim();
  105. _softwareConfigs.SniffRemotePortNum = Convert.ToInt32(numRemotePort.Value);
  106. _softwareConfigs.SniffBaudRate = (EnumBaudrate)cmbBaudRate.SelectedValue;
  107. _softwareConfigs.SniffDataBits = (EnumDataBits)cmbDataBits.SelectedValue;
  108. _softwareConfigs.SniffStopBits = (EnumStopBits)cmbStopBits.SelectedValue;
  109. _softwareConfigs.SniffParity = (EnumCheckBit)cmbParity.SelectedValue;
  110. }
  111. private void DefaultToModel()
  112. {
  113. SoftwareConfigs defaultConfig = new SoftwareConfigs();
  114. _softwareConfigs.ServicePortNum = defaultConfig.ServicePortNum;
  115. _softwareConfigs.ShowLogMaxLine = defaultConfig.ShowLogMaxLine;
  116. _softwareConfigs.LogFolderPath = defaultConfig.LogFolderPath;
  117. _softwareConfigs.SniffRemotePortNum = defaultConfig.SniffRemotePortNum;
  118. _softwareConfigs.SniffBaudRate = defaultConfig.SniffBaudRate;
  119. _softwareConfigs.SniffDataBits = defaultConfig.SniffDataBits;
  120. _softwareConfigs.SniffStopBits = defaultConfig.SniffStopBits;
  121. _softwareConfigs.SniffParity = defaultConfig.SniffParity;
  122. }
  123. public static void ConfigToModel(ref SoftwareConfigs softwareConfigs)
  124. {
  125. try
  126. {
  127. softwareConfigs.ServicePortNum = Convert.ToInt32(config.ReadConfig("Net", "ServicePortNum", softwareConfigs.ConfigFilePath));
  128. softwareConfigs.ShowLogMaxLine = Convert.ToInt32(config.ReadConfig("Log", "ShowLogMaxLine", softwareConfigs.ConfigFilePath));
  129. softwareConfigs.LogFolderPath = config.ReadConfig("Log", "LogFolderPath", softwareConfigs.ConfigFilePath);
  130. softwareConfigs.SniffRemotePortNum = Convert.ToInt32(config.ReadConfig("Sniff", "SniffRemotePortNum", softwareConfigs.ConfigFilePath));
  131. softwareConfigs.SniffBaudRate = (EnumBaudrate)Enum.Parse(typeof(EnumBaudrate), config.ReadConfig("Sniff", "SniffBaudRate", softwareConfigs.ConfigFilePath));
  132. softwareConfigs.SniffDataBits = (EnumDataBits)Enum.Parse(typeof(EnumDataBits), config.ReadConfig("Sniff", "SniffDataBits", softwareConfigs.ConfigFilePath));
  133. softwareConfigs.SniffStopBits = (EnumStopBits)Enum.Parse(typeof(EnumStopBits), config.ReadConfig("Sniff", "SniffStopBits", softwareConfigs.ConfigFilePath));
  134. softwareConfigs.SniffParity = (EnumCheckBit)Enum.Parse(typeof(EnumCheckBit), config.ReadConfig("Sniff", "SniffParity", softwareConfigs.ConfigFilePath));
  135. }
  136. catch { }
  137. }
  138. private bool SaveConfigs()
  139. {
  140. if (_softwareConfigs == null) return false;
  141. try
  142. {
  143. ViewToModel();
  144. bool res = config.WriteConfig("Net", "ServicePortNum", _softwareConfigs.ServicePortNum.ToString(), _softwareConfigs.ConfigFilePath);
  145. if (res) res = config.WriteConfig("Log", "ShowLogMaxLine", _softwareConfigs.ShowLogMaxLine.ToString(), _softwareConfigs.ConfigFilePath);
  146. if (res) res = config.WriteConfig("Log", "LogFolderPath", _softwareConfigs.LogFolderPath, _softwareConfigs.ConfigFilePath);
  147. if (res) res = config.WriteConfig("Sniff", "SniffRemotePortNum", _softwareConfigs.SniffRemotePortNum.ToString(), _softwareConfigs.ConfigFilePath);
  148. if (res) res = config.WriteConfig("Sniff", "SniffBaudRate", _softwareConfigs.SniffBaudRate.ToString(), _softwareConfigs.ConfigFilePath);
  149. if (res) res = config.WriteConfig("Sniff", "SniffDataBits", _softwareConfigs.SniffDataBits.ToString(), _softwareConfigs.ConfigFilePath);
  150. if (res) res = config.WriteConfig("Sniff", "SniffStopBits", _softwareConfigs.SniffStopBits.ToString(), _softwareConfigs.ConfigFilePath);
  151. if (res) res = config.WriteConfig("Sniff", "SniffParity", _softwareConfigs.SniffParity.ToString(), _softwareConfigs.ConfigFilePath);
  152. return res;
  153. }
  154. catch
  155. {
  156. return false;
  157. }
  158. }
  159. private void btnOK_Click(object sender, EventArgs e)
  160. {
  161. if (SaveConfigs())
  162. {
  163. ExecConfigSaved?.Invoke(sender, e);
  164. MessageBox.Show(StrMsg.SaveConfigOK, StrMsg.Prompt, MessageBoxButtons.OK, MessageBoxIcon.Information);
  165. }
  166. else
  167. {
  168. MessageBox.Show(StrMsg.SaveConfigFail, StrMsg.Attention, MessageBoxButtons.OK, MessageBoxIcon.Error);
  169. }
  170. }
  171. private void btnBrowse_Click(object sender, EventArgs e)
  172. {
  173. FolderBrowserDialog folderDlg = new FolderBrowserDialog();
  174. if (folderDlg.ShowDialog() == DialogResult.OK)
  175. {
  176. txtFolderPath.Text = folderDlg.SelectedPath;
  177. }
  178. }
  179. private void btnDefault_Click(object sender, EventArgs e)
  180. {
  181. DefaultToModel();
  182. ModelToView();
  183. }
  184. }
  185. }