ReadConfigUtil.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4. using SHJX.Service.Common.Model;
  5. using SHJX.Service.Model.Control;
  6. namespace SHJX.Service.Common.ReadXML
  7. {
  8. public class ReadConfigUtil : AbstractConfiguration
  9. {
  10. #region Read XML
  11. public string ConnStr => ReadSingleValue("/Equipment/data-source/connstr/@value");
  12. public int Baudrate => Convert.ToInt32(ReadSingleValue("/Equipment/modbus-config/modbus-baudrate/@value"));
  13. public string Port => ReadSingleValue("/Equipment/modbus-config/modbus-port/@port");
  14. public bool IsAutoGetPort => Convert.ToBoolean(ReadSingleValue("/Equipment/modbus-config/modbus-port/@isAuto"));
  15. public bool OpenAppStartHeat => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/WhenSystemStartBeginHeating/@value"));
  16. public bool TaskRunning => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/TaskRunning/@value"));
  17. public bool ManiGrabFeedBack => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/ManiGrabFeedBack/@value"));
  18. public bool DripNozzleFeedBack => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/DripNozzleFeedBack/@value"));
  19. public bool IsAddCupFeedBack => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/IsAddCupFeedBack/@value"));
  20. public bool IsAddCupBiaoDingBubei => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/IsAddCupBiaoDingBubei/@value"));
  21. public string TemplateFilePath => ReadSingleValue("/Equipment/SettingConfig/TemplateFilePath/@value");
  22. public bool SpeedWrite => Convert.ToBoolean(ReadSingleValue("/Equipment/modbus-config/MotorSpeeds/@write"));
  23. public string ResultWordFilePath => ReadSingleValue("/Equipment/SettingConfig/ResultWordFilePath/@value");
  24. public bool ExportTypeByExcel => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/ExportTypeByExcel/@value"));
  25. public bool ExportTypeByWord => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/ExportTypeByWord/@value"));
  26. public double PreheatTemperature => Convert.ToDouble(ReadSingleValue("/Equipment/SettingConfig/PreheatTemperature/@value"));
  27. public double AddWaterTemperature => Convert.ToDouble(ReadSingleValue("/Equipment/SettingConfig/AddWaterTemperature/@value"));
  28. public double CoolingPipeWatingTime => Convert.ToDouble(ReadSingleValue("/Equipment/SettingConfig/CoolingPipeWatingTime/@value"));
  29. public double DissolveMoveDistance => Convert.ToDouble(ReadSingleValue("/Equipment/SettingConfig/DissolveMoveDistance/@value"));
  30. public double PotassiumDichromateValue => Convert.ToDouble(ReadSingleValue("/Equipment/DropLiquidAmounts/Liquid[@Name='PotassiumDichromate']/@Value"));
  31. public double FASValue => Convert.ToDouble(ReadSingleValue("/Equipment/DropLiquidAmounts/Liquid[@Name='FAS']/@LowValue"));
  32. public List<MotorSpeed> GetSpeed => GetMotorSpeed("/Equipment/modbus-config/MotorSpeeds/Speed");
  33. public Dictionary<string, byte> ModBusNodeIDs => GetBodbusNodeId("/Equipment/modbus-config/ModbusNodeID/NodeId");
  34. public List<FlowControlProxyArg> GetResponsibility => GetNameAndType("/Equipment/responsibilitys/responsibility");
  35. public List<DropAmount> DropOnceAmounts => GetAmount("/Equipment/DropLiquidAmounts/Liquid");
  36. public string LogiCamera1 => ReadSingleValue("/Equipment/SettingConfig/LogiCamera1/@value");
  37. public string LogiCamera2 => ReadSingleValue("/Equipment/SettingConfig/LogiCamera2/@value");
  38. public int GetPositionDistance(string Name)
  39. {
  40. string value = ReadSingleValue("/Equipment/Positions/Position[@Name='" + Name + "']/@Value");
  41. string convert = ReadSingleValue("/Equipment/Positions/Position[@Name='" + Name + "']/@Convert");
  42. return Convert.ToInt32(Math.Round(Convert.ToDouble(value) * Convert.ToDouble(convert)));
  43. }
  44. private Dictionary<string, byte> GetBodbusNodeId(string xmlpath)
  45. {
  46. var definitions = ReadSetValue(xmlpath);
  47. return definitions.ToDictionary(item => item["EquipmentName"], item => Convert.ToByte(item["NodeID"]));
  48. }
  49. private List<DropAmount> GetAmount(string xmlpath)
  50. {
  51. List<DropAmount> amounts = new();
  52. var definitions = ReadSetValue(xmlpath);
  53. foreach (var item in definitions)
  54. {
  55. amounts.Add(new DropAmount()
  56. {
  57. Name = item["Name"],
  58. Description = item["Description"],
  59. LowValue = Convert.ToDouble(item["LowValue"]),
  60. HighValue = Convert.ToDouble(item["HighValue"])
  61. });
  62. }
  63. return amounts;
  64. }
  65. public List<MotorSpeed> GetMotorSpeed(string xmlpath)
  66. {
  67. List<MotorSpeed> speeds = new();
  68. var definitions = ReadSetValue(xmlpath);
  69. foreach (var item in definitions)
  70. {
  71. speeds.Add(new MotorSpeed
  72. {
  73. NodeName = item["NodeName"],
  74. NodeId = item["NodeID"],
  75. Speed = Convert.ToInt32(item["Speed"]),
  76. AcSpeed = Convert.ToInt32(item["AC"]),
  77. DeSpeed = Convert.ToInt32(item["DE"]),
  78. Description = item["Description"]
  79. });
  80. }
  81. return speeds;
  82. }
  83. private List<FlowControlProxyArg> GetNameAndType(string xmlpath)
  84. {
  85. var proxyArgs = new List<FlowControlProxyArg>();
  86. var definitions = ReadSetValue(xmlpath);
  87. foreach (var item in definitions)
  88. {
  89. proxyArgs.Add(new FlowControlProxyArg()
  90. {
  91. Name = item["name"],
  92. Flow = item["type"],
  93. Proxy = item["proxy"]
  94. });
  95. }
  96. return proxyArgs;
  97. }
  98. #endregion
  99. #region Write XML
  100. public void UpdateAppStartHeat(string value) => WriteSingleValue("/Equipment/SettingConfig/WhenSystemStartBeginHeating/@value", value);
  101. public void UpdateTaskRunning(object value) => WriteSingleValue("/Equipment/SettingConfig/TaskRunning/@value", value);
  102. public void UpdateManiGrabFeedBack(object value) => WriteSingleValue("/Equipment/SettingConfig/ManiGrabFeedBack/@value", value);
  103. public void UpdateDripNozzleFeedBack(object value) => WriteSingleValue("/Equipment/SettingConfig/DripNozzleFeedBack/@value", value);
  104. public void UpdateIsAddCupFeedBack(object value) => WriteSingleValue("/Equipment/SettingConfig/IsAddCupFeedBack/@value", value);
  105. public void UpdateIsAddCupBiaoDingBubei(object value) => WriteSingleValue("/Equipment/SettingConfig/IsAddCupBiaoDingBubei/@value", value);
  106. public void UpdateTemplateFilePath(string value) => WriteSingleValue("/Equipment/SettingConfig/TemplateFilePath/@value", value);
  107. public void UpdateResultWordFilePath(string value) => WriteSingleValue("/Equipment/SettingConfig/ResultWordFilePath/@value", value);
  108. public void UpdateExportTypeByExcel(object value) => WriteSingleValue("/Equipment/SettingConfig/ExportTypeByExcel/@value", value);
  109. public void UpdateExportTypeByWord(object value) => WriteSingleValue("/Equipment/SettingConfig/ExportTypeByWord/@value", value);
  110. public void UpdatePreheatTemperature(object value) => WriteSingleValue("/Equipment/SettingConfig/PreheatTemperature/@value", value);
  111. public void UpdateAddWaterTemperature(object value) => WriteSingleValue("/Equipment/SettingConfig/AddWaterTemperature/@value", value);
  112. public void UpdateDissolveMoveDistance(object value) => WriteSingleValue("/Equipment/SettingConfig/DissolveMoveDistance/@value", value);
  113. public void UpdateCoolingPipeWatingTime(object value) => WriteSingleValue("/Equipment/SettingConfig/CoolingPipeWatingTime/@value", value);
  114. public void UpdateSpeedWrite(object value) => WriteSingleValue("/Equipment/modbus-config/MotorSpeeds/@write", value);
  115. public void UpdateSpeed(string node, object value) => WriteSingleValue("/Equipment/modbus-config/MotorSpeeds/Speed[@NodeID='" + node + "']/@Speed", value);
  116. public void UpdateAcSpeed(string node, object value) => WriteSingleValue("/Equipment/modbus-config/MotorSpeeds/Speed[@NodeID='" + node + "']/@AC", value);
  117. public void UpdateDeSpeed(string node, object value) => WriteSingleValue("/Equipment/modbus-config/MotorSpeeds/Speed[@NodeID='" + node + "']/@DE", value);
  118. public void UpdatePort(object value) => WriteSingleValue("/Equipment/modbus-config/modbus-port/@port", value);
  119. public void UpdateAutoFindPort(object value) => WriteSingleValue("/Equipment/modbus-config/modbus-port/@isAuto",value);
  120. public void UpdateAmount(List<DropAmount> amounts)
  121. {
  122. amounts.ForEach(item =>
  123. {
  124. WriteSingleValue("/Equipment/DropLiquidAmounts/Liquid[@Name='" + item.Name + "']/@LowValue", item.LowValue);
  125. WriteSingleValue("/Equipment/DropLiquidAmounts/Liquid[@Name='" + item.Name + "']/@HighValue", item.HighValue);
  126. });
  127. }
  128. #endregion
  129. }
  130. }