using System; using System.Linq; using System.Collections.Generic; using SHJX.Service.Common.Model; using SHJX.Service.Model.Control; namespace SHJX.Service.Common.ReadXML { public class ReadConfigUtil : AbstractConfiguration { #region Read XML public string ConnStr => ReadSingleValue("/Equipment/data-source/connstr/@value"); public int Baudrate => Convert.ToInt32(ReadSingleValue("/Equipment/modbus-config/modbus-baudrate/@value")); public string Port => ReadSingleValue("/Equipment/modbus-config/modbus-port/@port"); public bool IsAutoGetPort => Convert.ToBoolean(ReadSingleValue("/Equipment/modbus-config/modbus-port/@isAuto")); public bool OpenAppStartHeat => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/WhenSystemStartBeginHeating/@value")); public bool TaskRunning => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/TaskRunning/@value")); public bool ManiGrabFeedBack => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/ManiGrabFeedBack/@value")); public bool DripNozzleFeedBack => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/DripNozzleFeedBack/@value")); public bool IsAddCupFeedBack => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/IsAddCupFeedBack/@value")); public bool IsAddCupBiaoDingBubei => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/IsAddCupBiaoDingBubei/@value")); public string TemplateFilePath => ReadSingleValue("/Equipment/SettingConfig/TemplateFilePath/@value"); public bool SpeedWrite => Convert.ToBoolean(ReadSingleValue("/Equipment/modbus-config/MotorSpeeds/@write")); public string ResultWordFilePath => ReadSingleValue("/Equipment/SettingConfig/ResultWordFilePath/@value"); public bool ExportTypeByExcel => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/ExportTypeByExcel/@value")); public bool ExportTypeByWord => Convert.ToBoolean(ReadSingleValue("/Equipment/SettingConfig/ExportTypeByWord/@value")); public double PreheatTemperature => Convert.ToDouble(ReadSingleValue("/Equipment/SettingConfig/PreheatTemperature/@value")); public double AddWaterTemperature => Convert.ToDouble(ReadSingleValue("/Equipment/SettingConfig/AddWaterTemperature/@value")); public double CoolingPipeWatingTime => Convert.ToDouble(ReadSingleValue("/Equipment/SettingConfig/CoolingPipeWatingTime/@value")); public double DissolveMoveDistance => Convert.ToDouble(ReadSingleValue("/Equipment/SettingConfig/DissolveMoveDistance/@value")); public double PotassiumDichromateValue => Convert.ToDouble(ReadSingleValue("/Equipment/DropLiquidAmounts/Liquid[@Name='PotassiumDichromate']/@Value")); public double FASValue => Convert.ToDouble(ReadSingleValue("/Equipment/DropLiquidAmounts/Liquid[@Name='FAS']/@LowValue")); public List GetSpeed => GetMotorSpeed("/Equipment/modbus-config/MotorSpeeds/Speed"); public Dictionary ModBusNodeIDs => GetBodbusNodeId("/Equipment/modbus-config/ModbusNodeID/NodeId"); public List GetResponsibility => GetNameAndType("/Equipment/responsibilitys/responsibility"); public List DropOnceAmounts => GetAmount("/Equipment/DropLiquidAmounts/Liquid"); public string LogiCamera1 => ReadSingleValue("/Equipment/SettingConfig/LogiCamera1/@value"); public string LogiCamera2 => ReadSingleValue("/Equipment/SettingConfig/LogiCamera2/@value"); public int GetPositionDistance(string Name) { string value = ReadSingleValue("/Equipment/Positions/Position[@Name='" + Name + "']/@Value"); string convert = ReadSingleValue("/Equipment/Positions/Position[@Name='" + Name + "']/@Convert"); return Convert.ToInt32(Math.Round(Convert.ToDouble(value) * Convert.ToDouble(convert))); } private Dictionary GetBodbusNodeId(string xmlpath) { var definitions = ReadSetValue(xmlpath); return definitions.ToDictionary(item => item["EquipmentName"], item => Convert.ToByte(item["NodeID"])); } private List GetAmount(string xmlpath) { List amounts = new(); var definitions = ReadSetValue(xmlpath); foreach (var item in definitions) { amounts.Add(new DropAmount() { Name = item["Name"], Description = item["Description"], LowValue = Convert.ToDouble(item["LowValue"]), HighValue = Convert.ToDouble(item["HighValue"]) }); } return amounts; } public List GetMotorSpeed(string xmlpath) { List speeds = new(); var definitions = ReadSetValue(xmlpath); foreach (var item in definitions) { speeds.Add(new MotorSpeed { NodeName = item["NodeName"], NodeId = item["NodeID"], Speed = Convert.ToInt32(item["Speed"]), AcSpeed = Convert.ToInt32(item["AC"]), DeSpeed = Convert.ToInt32(item["DE"]), Description = item["Description"] }); } return speeds; } private List GetNameAndType(string xmlpath) { var proxyArgs = new List(); var definitions = ReadSetValue(xmlpath); foreach (var item in definitions) { proxyArgs.Add(new FlowControlProxyArg() { Name = item["name"], Flow = item["type"], Proxy = item["proxy"] }); } return proxyArgs; } #endregion #region Write XML public void UpdateAppStartHeat(string value) => WriteSingleValue("/Equipment/SettingConfig/WhenSystemStartBeginHeating/@value", value); public void UpdateTaskRunning(object value) => WriteSingleValue("/Equipment/SettingConfig/TaskRunning/@value", value); public void UpdateManiGrabFeedBack(object value) => WriteSingleValue("/Equipment/SettingConfig/ManiGrabFeedBack/@value", value); public void UpdateDripNozzleFeedBack(object value) => WriteSingleValue("/Equipment/SettingConfig/DripNozzleFeedBack/@value", value); public void UpdateIsAddCupFeedBack(object value) => WriteSingleValue("/Equipment/SettingConfig/IsAddCupFeedBack/@value", value); public void UpdateIsAddCupBiaoDingBubei(object value) => WriteSingleValue("/Equipment/SettingConfig/IsAddCupBiaoDingBubei/@value", value); public void UpdateTemplateFilePath(string value) => WriteSingleValue("/Equipment/SettingConfig/TemplateFilePath/@value", value); public void UpdateResultWordFilePath(string value) => WriteSingleValue("/Equipment/SettingConfig/ResultWordFilePath/@value", value); public void UpdateExportTypeByExcel(object value) => WriteSingleValue("/Equipment/SettingConfig/ExportTypeByExcel/@value", value); public void UpdateExportTypeByWord(object value) => WriteSingleValue("/Equipment/SettingConfig/ExportTypeByWord/@value", value); public void UpdatePreheatTemperature(object value) => WriteSingleValue("/Equipment/SettingConfig/PreheatTemperature/@value", value); public void UpdateAddWaterTemperature(object value) => WriteSingleValue("/Equipment/SettingConfig/AddWaterTemperature/@value", value); public void UpdateDissolveMoveDistance(object value) => WriteSingleValue("/Equipment/SettingConfig/DissolveMoveDistance/@value", value); public void UpdateCoolingPipeWatingTime(object value) => WriteSingleValue("/Equipment/SettingConfig/CoolingPipeWatingTime/@value", value); public void UpdateSpeedWrite(object value) => WriteSingleValue("/Equipment/modbus-config/MotorSpeeds/@write", value); public void UpdateSpeed(string node, object value) => WriteSingleValue("/Equipment/modbus-config/MotorSpeeds/Speed[@NodeID='" + node + "']/@Speed", value); public void UpdateAcSpeed(string node, object value) => WriteSingleValue("/Equipment/modbus-config/MotorSpeeds/Speed[@NodeID='" + node + "']/@AC", value); public void UpdateDeSpeed(string node, object value) => WriteSingleValue("/Equipment/modbus-config/MotorSpeeds/Speed[@NodeID='" + node + "']/@DE", value); public void UpdatePort(object value) => WriteSingleValue("/Equipment/modbus-config/modbus-port/@port", value); public void UpdateAutoFindPort(object value) => WriteSingleValue("/Equipment/modbus-config/modbus-port/@isAuto",value); public void UpdateAmount(List amounts) { amounts.ForEach(item => { WriteSingleValue("/Equipment/DropLiquidAmounts/Liquid[@Name='" + item.Name + "']/@LowValue", item.LowValue); WriteSingleValue("/Equipment/DropLiquidAmounts/Liquid[@Name='" + item.Name + "']/@HighValue", item.HighValue); }); } #endregion } }