public VertexAttributeFormat(GXAttribute attr, GXCompType type, GXCompCnt cnt, byte frac) { _attr = attr; _cnt = cnt; _type = type; _frac = frac; }
public ActionResult <AddValueResponse> Post(AddValue request) { AddValueResponse ret = new AddValueResponse(); GXUpdateArgs arg; if (request.Items != null) { DateTime now = DateTime.Now; foreach (GXValue it in request.Items) { if (it.Read == DateTime.MinValue) { it.Read = now; } GXAttribute value = new GXAttribute(); value.Id = it.AttributeId; value.Value = it.Value; value.Read = it.Read; arg = GXUpdateArgs.Update <GXAttribute>(value, q => new { q.Value, q.Read }); host.Connection.Update(arg); } host.Connection.Insert(GXInsertArgs.InsertRange(request.Items)); host.SetChange(TargetType.Value, now); } return(ret); }
/// <summary> /// /// </summary> /// <param name="values"></param> public override void UpdateDefaultValueItems(GXAttributeCollection attributes) { GXAttribute att = new GXAttribute(); att.Index = 3; att.Values.Add(new GXObisValueItem(0, "300")); att.Values.Add(new GXObisValueItem(1, "600")); att.Values.Add(new GXObisValueItem(2, "1200")); att.Values.Add(new GXObisValueItem(3, "2400")); att.Values.Add(new GXObisValueItem(4, "4800")); att.Values.Add(new GXObisValueItem(5, "9600")); att.Values.Add(new GXObisValueItem(6, "19200")); att.Values.Add(new GXObisValueItem(7, "38400")); att.Values.Add(new GXObisValueItem(8, "57600")); att.Values.Add(new GXObisValueItem(9, "115200")); attributes.Add(att); att = new GXAttribute(); att.Index = 4; att.Values.Add(new GXObisValueItem(0, "300")); att.Values.Add(new GXObisValueItem(1, "600")); att.Values.Add(new GXObisValueItem(2, "1200")); att.Values.Add(new GXObisValueItem(3, "2400")); att.Values.Add(new GXObisValueItem(4, "4800")); att.Values.Add(new GXObisValueItem(5, "9600")); att.Values.Add(new GXObisValueItem(6, "19200")); att.Values.Add(new GXObisValueItem(7, "38400")); att.Values.Add(new GXObisValueItem(8, "57600")); att.Values.Add(new GXObisValueItem(9, "115200")); attributes.Add(att); }
/// <summary> /// Read Profile Generic Columns by entry. /// </summary> public object[] ReadRowsByEntry(GXDLMSObject it, int index, int count, GXDLMSObjectCollection columns) { byte[] reply = ReadDataBlock(m_Parser.Read(m_Parser.ReadRowsByEntry(it.Name, index, count), 1, 1, ObjectType.None, 0)); object[] rows = (object[])m_Parser.GetValue(reply); if (columns != null && rows.Length != 0 && m_Parser.ObisCodes.Count != 0) { Array row = (Array)rows[0]; if (columns.Count != row.Length) { throw new Exception("Columns count do not mach."); } for (int pos = 0; pos != columns.Count; ++pos) { if (row.GetValue(pos) is byte[]) { DataType type = DataType.None; //Find Column type GXObisCode code = m_Parser.ObisCodes.FindByLN(columns[pos].ObjectType, columns[pos].LogicalName, null); if (code != null) { GXAttribute att = code.Attributes.Find(columns[pos].AttributeIndex); if (att != null) { type = att.UIType; } } foreach (object[] cell in rows) { cell[pos] = GXDLMS.ChangeType((byte[])cell[pos], type); } } } } return(rows); }
public FacepointAttribute(GXAttribute attr, XFDataFormat fmt) { _attr = attr; _type = fmt; }
public ActionResult <UpdateDeviceResponse> Post(UpdateDevice request) { if (request.Device.TemplateId == 0) { return(BadRequest("Device template ID is unknown.")); } bool newDevice = request.Device.Id == 0; if (request.Device.DeviceSystemTitle != null) { request.Device.DeviceSystemTitle = request.Device.DeviceSystemTitle.Replace(" ", ""); } if (request.Device.AuthenticationKey != null) { request.Device.AuthenticationKey = request.Device.AuthenticationKey.Replace(" ", ""); } if (request.Device.BlockCipherKey != null) { request.Device.BlockCipherKey = request.Device.BlockCipherKey.Replace(" ", ""); } if (newDevice) { DateTime now = DateTime.Now; request.Device.Generation = now; //Add new DC. List <GXObject> tmp = request.Device.Objects; request.Device.Objects = null; request.Device.Generation = now; host.Connection.Insert(GXInsertArgs.Insert(request.Device)); //Add default objects. GXSelectArgs arg = GXSelectArgs.SelectAll <GXObjectTemplate>(q => q.DeviceTemplateId == request.Device.TemplateId && q.Removed == DateTime.MinValue); arg.Columns.Add <GXAttributeTemplate>(); arg.Joins.AddLeftJoin <GXObjectTemplate, GXAttributeTemplate>(o => o.Id, a => a.ObjectTemplateId); arg.Where.And <GXAttributeTemplate>(q => q.Removed == DateTime.MinValue); List <GXObjectTemplate> l = host.Connection.Select <GXObjectTemplate>(arg); foreach (GXObjectTemplate it in l) { GXObject obj = new GXObject() { TemplateId = it.Id, Generation = now, DeviceId = request.Device.Id, ObjectType = it.ObjectType, Name = it.Name, LogicalName = it.LogicalName, ShortName = it.ShortName, }; host.Connection.Insert(GXInsertArgs.Insert(obj)); foreach (GXAttributeTemplate ait in it.Attributes) { GXAttribute a = new GXAttribute(); a.ObjectId = obj.Id; a.Index = ait.Index; a.TemplateId = ait.Id; a.AccessLevel = ait.AccessLevel; a.DataType = ait.DataType; a.UIDataType = ait.UIDataType; a.Generation = now; a.ExpirationTime = ait.ExpirationTime; obj.Attributes.Add(a); } ; host.Connection.Insert(GXInsertArgs.InsertRange(obj.Attributes)); } host.SetChange(TargetType.ObjectTemplate, DateTime.Now); } else { request.Device.Updated = DateTime.Now; host.Connection.Update(GXUpdateArgs.Update(request.Device)); host.SetChange(TargetType.DeviceTemplate, DateTime.Now); } return(new UpdateDeviceResponse() { DeviceId = request.Device.Id }); }
public ActionResult <AddTestDeviceResponse> Post(AddTestDevice request) { if (request.Device.TemplateId == 0) { return(BadRequest("Device template ID is unknown.")); } if (request.Device.DeviceSystemTitle != null) { request.Device.DeviceSystemTitle = request.Device.DeviceSystemTitle.Replace(" ", ""); } if (request.Device.AuthenticationKey != null) { request.Device.AuthenticationKey = request.Device.AuthenticationKey.Replace(" ", ""); } if (request.Device.BlockCipherKey != null) { request.Device.BlockCipherKey = request.Device.BlockCipherKey.Replace(" ", ""); } DateTime now = DateTime.Now; //Add new DC. request.Device.Generation = now; //We are accessing meters using serial number when test mode is used. request.Device.HDLCAddressing = ManufacturerSettings.HDLCAddressType.SerialNumber; request.Device.LogicalAddress = request.Index; for (UInt16 pos = 0; pos != request.Count; ++pos) { request.Device.Objects = null; request.Device.Name = "Test_" + request.Device.LogicalAddress; ++request.Device.LogicalAddress; request.Device.Id = 0; host.Connection.Insert(GXInsertArgs.Insert(request.Device)); //Add default objects. GXSelectArgs arg = GXSelectArgs.SelectAll <GXObjectTemplate>(q => q.DeviceTemplateId == request.Device.TemplateId); arg.Columns.Add <GXAttributeTemplate>(); arg.Joins.AddLeftJoin <GXObjectTemplate, GXAttributeTemplate>(o => o.Id, a => a.ObjectTemplateId); List <GXObjectTemplate> l = host.Connection.Select <GXObjectTemplate>(arg); foreach (GXObjectTemplate it in l) { GXObject obj = new GXObject() { TemplateId = it.Id, Generation = now, DeviceId = request.Device.Id, ObjectType = it.ObjectType, Name = it.Name, LogicalName = it.LogicalName, ShortName = it.ShortName, }; host.Connection.Insert(GXInsertArgs.Insert(obj)); foreach (GXAttributeTemplate ait in it.Attributes) { GXAttribute a = new GXAttribute(); a.ObjectId = obj.Id; a.Index = ait.Index; a.TemplateId = ait.Id; a.AccessLevel = ait.AccessLevel; a.DataType = ait.DataType; a.UIDataType = ait.UIDataType; a.Generation = now; a.ExpirationTime = ait.ExpirationTime; obj.Attributes.Add(a); } ; host.Connection.Insert(GXInsertArgs.InsertRange(obj.Attributes)); } } host.SetChange(TargetType.Device, DateTime.Now); return(new AddTestDeviceResponse()); }
public byte _frac; //scale/divisor #region Constructors public VertexAttributeFormat(GXAttribute attr, GXCompType type, GXCompCnt cnt, byte frac) { _attr = attr; _cnt = cnt; _type = type; _frac = frac; }