public void HisQueryResultTest() { HisQueryResult <bool> res = new HisQueryResult <bool>(10); HisQueryResult <byte> res1 = new HisQueryResult <byte>(10); HisQueryResult <short> res2 = new HisQueryResult <short>(10); HisQueryResult <ushort> res3 = new HisQueryResult <ushort>(10); HisQueryResult <int> res4 = new HisQueryResult <int>(10); HisQueryResult <uint> res5 = new HisQueryResult <uint>(10); HisQueryResult <long> res6 = new HisQueryResult <long>(10); HisQueryResult <ulong> res7 = new HisQueryResult <ulong>(10); HisQueryResult <DateTime> res8 = new HisQueryResult <DateTime>(10); HisQueryResult <double> res9 = new HisQueryResult <double>(10); HisQueryResult <float> res10 = new HisQueryResult <float>(10); HisQueryResult <string> res11 = new HisQueryResult <string>(10); Assert.IsTrue(res.BufferSize == 100); Assert.IsTrue(res1.BufferSize == 100); Assert.IsTrue(res2.BufferSize == 110); Assert.IsTrue(res3.BufferSize == 110); Assert.IsTrue(res4.BufferSize == 130); Assert.IsTrue(res5.BufferSize == 130); Assert.IsTrue(res6.BufferSize == 170); Assert.IsTrue(res7.BufferSize == 170); Assert.IsTrue(res8.BufferSize == 170); Assert.IsTrue(res9.BufferSize == 170); Assert.IsTrue(res10.BufferSize == 130); Assert.IsTrue(res11.BufferSize == (Const.StringSize + 9) * 10); }
//private unsafe Dictionary<DateTime,Tuple<object,byte>> ProcessHisResult<T>(IByteBuffer data, TagType tp) //{ // Dictionary<DateTime, Tuple<object, byte>> re = new Dictionary<DateTime, Tuple<object, byte>>(); // int count = data.ReadInt(); // DateTime time; // byte qu = 0; // switch (tp) // { // case Cdy.Tag.TagType.Bool: // for (int i = 0; i < count; i++) // { // var val = data.ReadBoolean(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.Byte: // for (int i = 0; i < count; i++) // { // var val = data.ReadByte(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.DateTime: // for (int i = 0; i < count; i++) // { // var val = new DateTime(data.ReadLong()); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.Double: // for (int i = 0; i < count; i++) // { // var val = data.ReadDouble(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.Float: // for (int i = 0; i < count; i++) // { // var val = data.ReadFloat(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.Int: // for (int i = 0; i < count; i++) // { // var val = data.ReadInt(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.Long: // for (int i = 0; i < count; i++) // { // var val = data.ReadLong(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.Short: // for (int i = 0; i < count; i++) // { // var val = data.ReadShort(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.String: // for (int i = 0; i < count; i++) // { // var val = data.ReadString(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.UInt: // for (int i = 0; i < count; i++) // { // var val = (uint)data.ReadUnsignedInt(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.ULong: // for (int i = 0; i < count; i++) // { // var val = (ulong)data.ReadLong(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.UShort: // for (int i = 0; i < count; i++) // { // var val = (ulong)data.ReadUnsignedShort(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(val, qu)); // } // break; // case Cdy.Tag.TagType.IntPoint: // for (int i = 0; i < count; i++) // { // var x = data.ReadInt(); // var y = data.ReadInt(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(new IntPointData(x,y), qu)); // } // break; // case Cdy.Tag.TagType.UIntPoint: // for (int i = 0; i < count; i++) // { // var x = data.ReadUnsignedInt(); // var y = data.ReadUnsignedInt(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(new UIntPointData(x, y), qu)); // } // break; // case Cdy.Tag.TagType.IntPoint3: // for (int i = 0; i < count; i++) // { // var x = data.ReadInt(); // var y = data.ReadInt(); // var z = data.ReadInt(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(new IntPoint3Data(x, y,z), qu)); // } // break; // case Cdy.Tag.TagType.UIntPoint3: // for (int i = 0; i < count; i++) // { // var x = data.ReadUnsignedInt(); // var y = data.ReadUnsignedInt(); // var z = data.ReadUnsignedInt(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(new UIntPoint3Data(x, y,z), qu)); // } // break; // case Cdy.Tag.TagType.LongPoint: // for (int i = 0; i < count; i++) // { // var x = data.ReadLong(); // var y = data.ReadLong(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(new LongPointData(x, y), qu)); // } // break; // case Cdy.Tag.TagType.ULongPoint: // for (int i = 0; i < count; i++) // { // var x = (ulong)data.ReadLong(); // var y = (ulong)data.ReadLong(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(new ULongPointData(x, y), qu)); // } // break; // case Cdy.Tag.TagType.LongPoint3: // for (int i = 0; i < count; i++) // { // var x = data.ReadLong(); // var y = data.ReadLong(); // var z = data.ReadLong(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(new LongPoint3Data(x, y,z), qu)); // } // break; // case Cdy.Tag.TagType.ULongPoint3: // for (int i = 0; i < count; i++) // { // var x = (ulong)data.ReadLong(); // var y = (ulong)data.ReadLong(); // var z = (ulong)data.ReadLong(); // time = new DateTime(data.ReadLong()); // qu = data.ReadByte(); // re.Add(time, new Tuple<object, byte>(new ULongPoint3Data(x, y, z), qu)); // } // break; // } // return re; //} private unsafe HisQueryResult <T> ProcessHisResultByMemory <T>(ByteBuffer data, TagType tp) { int count = data.ReadInt(); HisQueryResult <T> re = new HisQueryResult <T>(count); data.CopyTo(re.Address, data.ReadIndex, 0, data.WriteIndex - data.ReadIndex); //Marshal.Copy(data.Array, data.ArrayOffset + data.ReaderIndex, re.Address, data.ReadableBytes); re.Count = count; data.UnlockAndReturn(); return(re); }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="type"></param> /// <param name="resb"></param> /// <returns></returns> private unsafe ByteBuffer WriteDataToBufferByMemory <T>(byte type, HisQueryResult <T> resb) { var vdata = resb.Contracts(); var re = Parent.Allocate(FunId, 5 + vdata.Size); re.WriteByte(type); re.Write(resb.Count); re.Write(vdata.Address, vdata.Size); //Marshal.Copy(vdata.Address, re.Array, re.ArrayOffset+ 6, vdata.Size); //re.SetWriterIndex(re.WriterIndex + vdata.Size); return(re); }
public void GetValueTest() { DateTime date = DateTime.Now; DateTime resd; byte qulity = 0; HisQueryResult <bool> res = new HisQueryResult <bool>(10); res.Add(true, date, 1); var bval = res.GetValue(0, out resd, out qulity); Assert.IsTrue(bval == true); Assert.IsTrue(resd == date); Assert.IsTrue(qulity == 1); res.Clear(); HisQueryResult <double> res2 = new HisQueryResult <double>(10); res2.Add(0.24, date, 1); var dval = res2.GetValue(0, out resd, out qulity); Assert.IsTrue(dval == 0.24); Assert.IsTrue(resd == date); Assert.IsTrue(qulity == 1); res2.Resize(20); dval = res2.GetValue(0, out resd, out qulity); Assert.IsTrue(dval == 0.24); Assert.IsTrue(resd == date); Assert.IsTrue(qulity == 1); HisQueryResult <double> res3 = new HisQueryResult <double>(10); res2.CloneTo(res3); dval = res3.GetValue(0, out resd, out qulity); Assert.IsTrue(dval == 0.24); Assert.IsTrue(resd == date); Assert.IsTrue(qulity == 1); }