ReadConfigUtil.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4. using SHJX.Service.Model.XmlModules;
  5. namespace SHJX.Service.Common.ReadXML
  6. {
  7. public class ReadConfigUtil : AbstractConfiguration
  8. {
  9. private static ReadConfigUtil config;
  10. private static readonly object obj_lock = new();
  11. protected override string FileName => string.Concat(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "config/hypermanganate.config.xml");
  12. private ReadConfigUtil() { }
  13. public static ReadConfigUtil Instance
  14. {
  15. get
  16. {
  17. if (config is null)
  18. {
  19. lock (obj_lock)
  20. {
  21. ReadConfigUtil opConfig = new();
  22. opConfig.Load();
  23. config = opConfig.ConvertTo<ReadConfigUtil>();
  24. }
  25. }
  26. return config;
  27. }
  28. }
  29. #region Read XML
  30. #region Property
  31. public bool LoginRememberMe => Convert.ToBoolean(ReadSingleValue("/Equipment/UserLogin/@RememberMe"));
  32. public int Baudrate => Convert.ToInt32(ReadSingleValue("/Equipment/modbus-config/modbus-baudrate/@value"));
  33. public string PortName => ReadSingleValue("/Equipment/SerialPortConfig/SerialPort/@PortName");
  34. public bool AutoGetPort => Convert.ToBoolean(ReadSingleValue("/Equipment/SerialPortConfig/SerialPort/@AutoGetPortName"));
  35. public bool TaskRunning => Convert.ToBoolean(ReadSingleValue("/Equipment/SystemSingleSetting/TaskRunning/@value"));
  36. public bool AutomaticInLiquid => Convert.ToBoolean(ReadSingleValue("/Equipment/SystemSingleSetting/AutomaticInLiquid/@value"));
  37. public bool ExportTypeByExcel => Convert.ToBoolean(ReadSingleValue("/Equipment/SystemSingleSetting/ExportTypeByExcel/@value"));
  38. public bool ExportTypeByWord => Convert.ToBoolean(ReadSingleValue("/Equipment/SystemSingleSetting/ExportTypeByWord/@value"));
  39. public double DissolveTemperatureValue => Convert.ToDouble(ReadSingleValue("/Equipment/SystemSingleSetting/DissolveTemperatureSetting/@value"));
  40. public double TitrationTemperatureValue => Convert.ToDouble(ReadSingleValue("/Equipment/SystemSingleSetting/TitrationTemperatureSetting/@value"));
  41. public double TaskFinishTemperatureSetting => Convert.ToDouble(ReadSingleValue("/Equipment/SystemSingleSetting/TaskFinishTemperatureSetting/@value"));
  42. public bool TongsFeedBack => Convert.ToBoolean(ReadSingleValue("/Equipment/SystemSingleSetting/TongsFeedBack/@value"));
  43. public string LogiCamera1Name => ReadSingleValue("/Equipment/SystemSingleSetting/LogiCamera1Name /@value");
  44. public string LogiCamera2Name => ReadSingleValue("/Equipment/SystemSingleSetting/LogiCamera2Name /@value");
  45. public string LogiCamera1 => ReadSingleValue("/Equipment/SystemSingleSetting/LogiCamera1/@value");
  46. public string LogiCamera2 => ReadSingleValue("/Equipment/SystemSingleSetting/LogiCamera2/@value");
  47. public Dictionary<string, int> PortRegisters => GetPortRegisters("/Equipment/SerialPortConfig/PortRegisterPosition/PortRegister");
  48. public Dictionary<string, byte> PortNodeIDs => GetPortNodeIds("/Equipment/SerialPortConfig/PortNodeID/NodeId");
  49. public Dictionary<string, string> GetSettingTabItem => GetSettingItems("/Equipment/SettingTabItem/Item");
  50. public Dictionary<string, string> GetManualTabItem => GetSettingItems("/Equipment/ManualTabItem/Item");
  51. public List<OtherPositionArgs> OtherPositionArgs => GetOtherPosition("/Equipment/OtherPosition/Position");
  52. public string TemplateFilePath => ReadSingleValue("/Equipment/SystemSingleSetting/TemplateFilePath/@value");
  53. public string ResultFilePath => ReadSingleValue("/Equipment/SystemSingleSetting/ResultFilePath/@value");
  54. public List<SamplePosition> SamplePositions => GetSamplePosition("/Equipment/SamplePositions/Position");
  55. #endregion
  56. #region Method
  57. private List<SamplePosition> GetSamplePosition(string xmlpath)
  58. {
  59. List<SamplePosition> positions = new();
  60. IEnumerable<Dictionary<string, string>> definitions = ReadSetValue(xmlpath);
  61. foreach (Dictionary<string, string> item in definitions)
  62. {
  63. SamplePosition position = new()
  64. {
  65. Name = item["Name"],
  66. Count = Convert.ToInt32(item["Count"]),
  67. Value = item["Value"]
  68. };
  69. positions.Add(position);
  70. }
  71. return positions;
  72. }
  73. private List<OtherPositionArgs> GetOtherPosition(string xmlpath)
  74. {
  75. List<OtherPositionArgs> args = new();
  76. var definitions = ReadSetValue(xmlpath);
  77. foreach (var item in definitions)
  78. {
  79. var position = new OtherPositionArgs()
  80. {
  81. Name = item["Name"],
  82. TagText = item["TagText"]
  83. };
  84. args.Add(position);
  85. }
  86. return args;
  87. }
  88. private Dictionary<string, string> GetSettingItems(string xmlpath)
  89. {
  90. var definitions = ReadSetValue(xmlpath);
  91. return definitions.ToDictionary(item => item["value"], item => item["Map"]);
  92. }
  93. private Dictionary<string, int> GetPortRegisters(string xmlpath)
  94. {
  95. var definitions = ReadSetValue(xmlpath);
  96. return definitions.ToDictionary(item => item["EquipmentName"], item => Convert.ToInt32(item["Position"]));
  97. }
  98. private Dictionary<string, byte> GetPortNodeIds(string xmlpath)
  99. {
  100. var definitions = ReadSetValue(xmlpath);
  101. return definitions.ToDictionary(item => item["EquipmentName"], item => Convert.ToByte(item["NodeID"]));
  102. }
  103. private List<DropAmount> GetAmount(string xmlpath)
  104. {
  105. List<DropAmount> amounts = new();
  106. var definitions = ReadSetValue(xmlpath);
  107. foreach (var item in definitions)
  108. {
  109. amounts.Add(new DropAmount()
  110. {
  111. Name = item["Name"],
  112. Description = item["Description"],
  113. LowValue = Convert.ToDouble(item["LowValue"]),
  114. HighValue = Convert.ToDouble(item["HighValue"])
  115. });
  116. }
  117. return amounts;
  118. }
  119. private List<SpeedConfig> GetMotorSpeed(string xmlpath)
  120. {
  121. List<SpeedConfig> speeds = new();
  122. var definitions = ReadSetValue(xmlpath);
  123. foreach (var item in definitions)
  124. {
  125. speeds.Add(new SpeedConfig
  126. {
  127. NodeName = item["NodeName"],
  128. NodeId = item["NodeID"],
  129. Speed = Convert.ToInt32(item["Speed"]),
  130. AcSpeed = Convert.ToInt32(item["AC"]),
  131. DeSpeed = Convert.ToInt32(item["DE"]),
  132. Description = item["Description"]
  133. });
  134. }
  135. return speeds;
  136. }
  137. private List<FlowControlProxyArg> GetNameAndType(string xmlpath)
  138. {
  139. var proxyArgs = new List<FlowControlProxyArg>();
  140. var definitions = ReadSetValue(xmlpath);
  141. foreach (var item in definitions)
  142. {
  143. proxyArgs.Add(new FlowControlProxyArg()
  144. {
  145. Name = item["name"],
  146. Flow = item["type"],
  147. Proxy = item["proxy"]
  148. });
  149. }
  150. return proxyArgs;
  151. }
  152. #endregion
  153. #endregion
  154. #region Write XML
  155. public void UpdateTaskRunning(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/TaskRunning/@value", value);
  156. public void UpdateTemplateFilePath(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/TemplateFilePath/@value", value);
  157. public void UpdateResultWordFilePath(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/ResultFilePath/@value", value);
  158. public void UpdateAutomaticInLiquid(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/AutomaticInLiquid/@value", value);
  159. public void UpdateTaskFinishTemprature(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/TaskFinishTemperatureSetting/@value", value);
  160. public void UpdateExportByExcel(object value)=> WriteSingleValue("/Equipment/SystemSingleSetting/ExportTypeByExcel/@value", value);
  161. public void UpdateExportByWord(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/ExportTypeByWord/@value", value);
  162. public void UpdateDissolveTemperature(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/DissolveTemperatureSetting/@value", value);
  163. public void UpdateTitrationTemperature(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/TitrationTemperatureSetting/@value", value);
  164. public void UpdateFeedbackValue(object value) => WriteSingleValue("/Equipment/SystemSingleSetting/TongsFeedBack/@value", value);
  165. #endregion
  166. }
  167. }