using Cdy.Tag;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace DBDevelopService.Controllers
{
public class Database
{
public string Name { get; set; }
public string Desc { get; set; }
}
///
///
///
public class TagGroup
{
public string Name { get; set; }
public string Parent { get; set; }
}
///
///
///
public class WebApiTag
{
///
///
///
public WebApiRealTag RealTag { get; set; }
///
///
///
public Cdy.Tag.HisTag HisTag { get; set; }
}
public class WebApiRealTag
{
public int Id { get; set; }
public string Name { get; set; }
public int Type { get; set; }
public string Group { get; set; }
public string Desc { get; set; }
public string LinkAddress { get; set; }
public int ReadWriteType { get; set; }
public string Convert { get; set; }
public double MaxValue { get; set; }
public double MinValue { get; set; }
public byte Precision { get; set; }
///
///
///
///
///
public static WebApiRealTag CreatFromTagbase(Tagbase realtag)
{
WebApiRealTag tag = new WebApiRealTag();
tag.CloneFromRealTag(realtag);
return tag;
}
///
///
///
///
public void CloneFromRealTag(Tagbase realtag)
{
this.Id = realtag.Id;
this.Name = realtag.Name;
this.Type = (byte)realtag.Type;
this.Group = realtag.Group;
this.Desc = realtag.Desc;
this.LinkAddress = realtag.LinkAddress;
this.ReadWriteType = (int)realtag.ReadWriteType;
this.Convert = realtag.Conveter != null ? realtag.Conveter.SeriseToString() : "";
if(realtag is NumberTagBase)
{
this.MaxValue = (realtag as NumberTagBase).MaxValue;
this.MinValue = (realtag as NumberTagBase).MinValue;
}
if(realtag is FloatingTagBase)
{
this.Precision = (realtag as FloatingTagBase).Precision;
}
}
public Tagbase ConvertToTagbase()
{
Cdy.Tag.Tagbase re = null;
switch (this.Type)
{
case (int)(Cdy.Tag.TagType.Bool):
re = new Cdy.Tag.BoolTag();
break;
case (int)(Cdy.Tag.TagType.Byte):
re = new Cdy.Tag.ByteTag();
break;
case (int)(Cdy.Tag.TagType.DateTime):
re = new Cdy.Tag.DateTimeTag();
break;
case (int)(Cdy.Tag.TagType.Double):
re = new Cdy.Tag.DoubleTag();
break;
case (int)(Cdy.Tag.TagType.Float):
re = new Cdy.Tag.FloatTag();
break;
case (int)(Cdy.Tag.TagType.Int):
re = new Cdy.Tag.IntTag();
break;
case (int)(Cdy.Tag.TagType.UInt):
re = new Cdy.Tag.UIntTag();
break;
case (int)(Cdy.Tag.TagType.ULong):
re = new Cdy.Tag.ULongTag();
break;
case (int)(Cdy.Tag.TagType.UShort):
re = new Cdy.Tag.UShortTag();
break;
case (int)(Cdy.Tag.TagType.Long):
re = new Cdy.Tag.LongTag();
break;
case (int)(Cdy.Tag.TagType.Short):
re = new Cdy.Tag.ShortTag();
break;
case (int)(Cdy.Tag.TagType.String):
re = new Cdy.Tag.StringTag();
break;
}
if (re != null)
{
re.Name = this.Name;
re.LinkAddress = this.LinkAddress;
re.Group = this.Group;
re.Desc = this.Desc;
re.Id = (int)this.Id;
re.ReadWriteType = (Cdy.Tag.ReadWriteMode)this.ReadWriteType;
if (!string.IsNullOrEmpty(this.Convert))
{
re.Conveter = this.Convert.DeSeriseToValueConvert();
}
if (re is Cdy.Tag.NumberTagBase)
{
(re as Cdy.Tag.NumberTagBase).MaxValue = this.MaxValue;
(re as Cdy.Tag.NumberTagBase).MinValue = this.MinValue;
}
if (re is Cdy.Tag.FloatingTagBase)
{
(re as Cdy.Tag.FloatingTagBase).Precision = (byte)this.Precision;
}
}
return re;
}
}
}