This repository has been archived on 2023-03-29. You can view files and clone it, but cannot push or open issues or pull requests.
Sic02/Modules/SicPM/Devices/IoTempMeter.cs

87 lines
2.2 KiB
C#

using Aitex.Core.Common.DeviceData;
using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.Device;
using Aitex.Core.RT.IOCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace SicPM.Devices
{
public class IoTempMeter : BaseDevice, IDevice
{
private AIAccessor _aiFeedBack = null;
private bool _isFloatAioType;
public float FeedBack
{
get
{
if (_aiFeedBack != null)
return _isFloatAioType ? _aiFeedBack.FloatValue : _aiFeedBack.Value;
return 0;
}
}
public AITHeaterData DeviceData
{
get
{
var data = new AITHeaterData()
{
Module = Module,
DeviceName = Name,
DisplayName = Display,
DeviceSchematicId = DeviceID,
UniqueName = UniqueName,
FeedBack = FeedBack,
};
// data.AttrValue["PV"] = _aiFeedBack;
return data;
}
}
public IoTempMeter(string module, XmlElement node, string ioModule = "")
{
var attrModule = node.GetAttribute("module");
base.Module = string.IsNullOrEmpty(attrModule) ? module : attrModule;
base.Name = node.GetAttribute("id");
base.Display = node.GetAttribute("display");
base.DeviceID = node.GetAttribute("schematicId");
_isFloatAioType = !string.IsNullOrEmpty(node.GetAttribute("aioType")) && (node.GetAttribute("aioType") == "float");
_aiFeedBack = ParseAiNode("aiFeedback", node, ioModule);
UniqueName = Module + "." + Name;
}
public bool Initialize()
{
DATA.Subscribe($"{Module}.{Name}.DeviceData", () => DeviceData);
DATA.Subscribe($"{Module}.{Name}.FeedBack", () => FeedBack);
return true;
}
public void Reset()
{
}
public void Terminate()
{
}
public void Monitor()
{
}
}
}