提交 ecac2c77 编写于 作者: cdy816's avatar cdy816

Bug 修改

上级 1b6199f3
...@@ -26,9 +26,9 @@ namespace Cdy.Tag ...@@ -26,9 +26,9 @@ namespace Cdy.Tag
/// </summary> /// </summary>
ValueChanged, ValueChanged,
/// <summary> /// <summary>
/// 手动 /// 驱动自己更新
/// </summary> /// </summary>
Manual Driver
} }
......
...@@ -110,7 +110,7 @@ namespace SimDriver ...@@ -110,7 +110,7 @@ namespace SimDriver
foreach (var vv in mTagIdCach) foreach (var vv in mTagIdCach)
{ {
mManualRecordTagCach.Add(vv.Key, mTagHisValueService.GetTagRecordType(vv.Value.Select(e => e.Id).ToList()).Where(e=>e.Value == RecordType.Manual).Select(e=>e.Key).ToList()); mManualRecordTagCach.Add(vv.Key, mTagHisValueService.GetTagRecordType(vv.Value.Select(e => e.Id).ToList()).Where(e=>e.Value == RecordType.Driver).Select(e=>e.Key).ToList());
} }
} }
......
...@@ -171,6 +171,8 @@ namespace Cdy.Tag ...@@ -171,6 +171,8 @@ namespace Cdy.Tag
var count = (int)(size - this.QulityOffset); var count = (int)(size - this.QulityOffset);
//var tims = source.ReadUShorts(sourceAddr, (int)count); //var tims = source.ReadUShorts(sourceAddr, (int)count);
byte tlen = (source as HisDataMemoryBlock).TimeLen;
if (mMarshalMemory == null) if (mMarshalMemory == null)
{ {
mMarshalMemory = new MemoryBlock(count * 10); mMarshalMemory = new MemoryBlock(count * 10);
...@@ -199,7 +201,7 @@ namespace Cdy.Tag ...@@ -199,7 +201,7 @@ namespace Cdy.Tag
var datas = CompressTimers(source, sourceAddr, (int)count, emptys); var datas = CompressTimers(source, sourceAddr, (int)count, emptys);
var cval = CompressBoolValues(source, count * 2 + sourceAddr, count, emptys); var cval = CompressBoolValues(source, count * tlen + sourceAddr, count, emptys);
int rcount = count - emptys.WriteIndex - 1; int rcount = count - emptys.WriteIndex - 1;
//写入时间 //写入时间
...@@ -218,7 +220,7 @@ namespace Cdy.Tag ...@@ -218,7 +220,7 @@ namespace Cdy.Tag
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
//写入质量戳 //写入质量戳
var cqus = CompressQulitys(source, count * 3 + sourceAddr, count, emptys); var cqus = CompressQulitys(source, count * (tlen + 1) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -227,7 +229,7 @@ namespace Cdy.Tag ...@@ -227,7 +229,7 @@ namespace Cdy.Tag
case TagType.Byte: case TagType.Byte:
FindEmpityIds(source, sourceAddr, (int)count, emptys); FindEmpityIds(source, sourceAddr, (int)count, emptys);
cval = CompressValues<byte>(source, count * 2 + sourceAddr, count, emptys, TagType); cval = CompressValues<byte>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
...@@ -247,7 +249,7 @@ namespace Cdy.Tag ...@@ -247,7 +249,7 @@ namespace Cdy.Tag
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
//写入质量戳 //写入质量戳
cqus = CompressQulitys(source, count * 3 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 1) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -255,7 +257,7 @@ namespace Cdy.Tag ...@@ -255,7 +257,7 @@ namespace Cdy.Tag
break; break;
case TagType.UShort: case TagType.UShort:
FindEmpityIds(source, sourceAddr, (int)count, emptys); FindEmpityIds(source, sourceAddr, (int)count, emptys);
var ures = CompressValues<ushort>(source, count * 2 + sourceAddr, count, emptys, TagType); var ures = CompressValues<ushort>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
...@@ -273,7 +275,7 @@ namespace Cdy.Tag ...@@ -273,7 +275,7 @@ namespace Cdy.Tag
rsize += ures.Length; rsize += ures.Length;
//质量戳 //质量戳
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
cqus = CompressQulitys(source, count * 4 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 2) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -281,7 +283,7 @@ namespace Cdy.Tag ...@@ -281,7 +283,7 @@ namespace Cdy.Tag
break; break;
case TagType.Short: case TagType.Short:
FindEmpityIds(source, sourceAddr, (int)count, emptys); FindEmpityIds(source, sourceAddr, (int)count, emptys);
var res = CompressValues<short>(source, count * 2 + sourceAddr, count, emptys, TagType); var res = CompressValues<short>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
...@@ -299,7 +301,7 @@ namespace Cdy.Tag ...@@ -299,7 +301,7 @@ namespace Cdy.Tag
rsize += res.Length; rsize += res.Length;
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
cqus = CompressQulitys(source, count * 4 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 2) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -307,7 +309,7 @@ namespace Cdy.Tag ...@@ -307,7 +309,7 @@ namespace Cdy.Tag
break; break;
case TagType.UInt: case TagType.UInt:
FindEmpityIds(source, sourceAddr, (int)count, emptys); FindEmpityIds(source, sourceAddr, (int)count, emptys);
var uires = CompressValues<uint>(source, count * 2 + sourceAddr, count, emptys, TagType); var uires = CompressValues<uint>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
...@@ -325,7 +327,7 @@ namespace Cdy.Tag ...@@ -325,7 +327,7 @@ namespace Cdy.Tag
rsize += uires.Length; rsize += uires.Length;
//质量 //质量
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 4) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -333,7 +335,7 @@ namespace Cdy.Tag ...@@ -333,7 +335,7 @@ namespace Cdy.Tag
break; break;
case TagType.Int: case TagType.Int:
FindEmpityIds(source, sourceAddr, (int)count, emptys); FindEmpityIds(source, sourceAddr, (int)count, emptys);
var ires = CompressValues<int>(source, count * 2 + sourceAddr, count, emptys, TagType); var ires = CompressValues<int>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
//写入时间 //写入时间
...@@ -350,7 +352,7 @@ namespace Cdy.Tag ...@@ -350,7 +352,7 @@ namespace Cdy.Tag
rsize += ires.Length; rsize += ires.Length;
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
//质量 //质量
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 4) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -358,7 +360,7 @@ namespace Cdy.Tag ...@@ -358,7 +360,7 @@ namespace Cdy.Tag
break; break;
case TagType.ULong: case TagType.ULong:
FindEmpityIds(source, sourceAddr, (int)count, emptys); FindEmpityIds(source, sourceAddr, (int)count, emptys);
var ulres = CompressValues<ulong>(source, count * 2 + sourceAddr, count, emptys, TagType); var ulres = CompressValues<ulong>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
//写入时间 //写入时间
...@@ -375,7 +377,7 @@ namespace Cdy.Tag ...@@ -375,7 +377,7 @@ namespace Cdy.Tag
rsize += ulres.Length; rsize += ulres.Length;
//质量 //质量
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -383,7 +385,7 @@ namespace Cdy.Tag ...@@ -383,7 +385,7 @@ namespace Cdy.Tag
break; break;
case TagType.Long: case TagType.Long:
FindEmpityIds(source, sourceAddr, (int)count, emptys); FindEmpityIds(source, sourceAddr, (int)count, emptys);
var lres = CompressValues<long>(source, count * 2 + sourceAddr, count, emptys, TagType); var lres = CompressValues<long>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
//写入时间 //写入时间
...@@ -400,7 +402,7 @@ namespace Cdy.Tag ...@@ -400,7 +402,7 @@ namespace Cdy.Tag
rsize += lres.Length; rsize += lres.Length;
//质量 //质量
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -409,7 +411,7 @@ namespace Cdy.Tag ...@@ -409,7 +411,7 @@ namespace Cdy.Tag
case TagType.DateTime: case TagType.DateTime:
datas = CompressTimers(source, sourceAddr, (int)count, emptys); datas = CompressTimers(source, sourceAddr, (int)count, emptys);
var dres = CompressValues<ulong>(source, count * 2 + sourceAddr, count, emptys, TagType); var dres = CompressValues<ulong>(source, count * tlen + sourceAddr, count, emptys, TagType);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
//写入时间 //写入时间
...@@ -426,7 +428,7 @@ namespace Cdy.Tag ...@@ -426,7 +428,7 @@ namespace Cdy.Tag
rsize += dres.Length; rsize += dres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -443,7 +445,7 @@ namespace Cdy.Tag ...@@ -443,7 +445,7 @@ namespace Cdy.Tag
mDCompress.CheckAndResizeTo(count); mDCompress.CheckAndResizeTo(count);
} }
var ddres = CompressValues<double>(source, count * 2 + sourceAddr, count, emptys, TagType); var ddres = CompressValues<double>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
//写入时间 //写入时间
...@@ -466,7 +468,7 @@ namespace Cdy.Tag ...@@ -466,7 +468,7 @@ namespace Cdy.Tag
rsize += ddres.Length; rsize += ddres.Length;
//质量 //质量
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -491,7 +493,7 @@ namespace Cdy.Tag ...@@ -491,7 +493,7 @@ namespace Cdy.Tag
mFCompress.CheckAndResizeTo(count); mFCompress.CheckAndResizeTo(count);
} }
var fres = CompressValues<float>(source, count * 2 + sourceAddr, count, emptys, TagType); var fres = CompressValues<float>(source, count * tlen + sourceAddr, count, emptys, TagType);
datas = CompressTimers2(source, sourceAddr, (int)count, emptys2); datas = CompressTimers2(source, sourceAddr, (int)count, emptys2);
rcount = count - emptys2.WriteIndex - 1; rcount = count - emptys2.WriteIndex - 1;
//写入时间 //写入时间
...@@ -508,7 +510,7 @@ namespace Cdy.Tag ...@@ -508,7 +510,7 @@ namespace Cdy.Tag
rsize += fres.Length; rsize += fres.Length;
//质量 //质量
emptys2.ReadIndex = 0; emptys2.ReadIndex = 0;
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, emptys2); cqus = CompressQulitys(source, count * (tlen + 4) + sourceAddr, count, emptys2);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -528,7 +530,7 @@ namespace Cdy.Tag ...@@ -528,7 +530,7 @@ namespace Cdy.Tag
//写入数据 //写入数据
var vals = source.ReadStrings(count * 2 + (int)sourceAddr, count); var vals = source.ReadStrings(count * tlen + (int)sourceAddr, count);
var qus = source.ReadBytes(count); var qus = source.ReadBytes(count);
var sres = CompressValues(vals, emptys); var sres = CompressValues(vals, emptys);
target.Write(sres.Length); target.Write(sres.Length);
...@@ -553,14 +555,14 @@ namespace Cdy.Tag ...@@ -553,14 +555,14 @@ namespace Cdy.Tag
rsize += 4; rsize += 4;
rsize += datas.Length; rsize += datas.Length;
//数值 //数值
var ipres = CompressValues<IntPointData>(source, count * 2 + sourceAddr, count, emptys, TagType); var ipres = CompressValues<IntPointData>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -577,14 +579,14 @@ namespace Cdy.Tag ...@@ -577,14 +579,14 @@ namespace Cdy.Tag
rsize += 4; rsize += 4;
rsize += datas.Length; rsize += datas.Length;
//数值 //数值
ipres = CompressValues<UIntPointData>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<UIntPointData>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -601,14 +603,14 @@ namespace Cdy.Tag ...@@ -601,14 +603,14 @@ namespace Cdy.Tag
rsize += 4; rsize += 4;
rsize += datas.Length; rsize += datas.Length;
//值 //值
ipres = CompressValues<LongPointData>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<LongPointData>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 18 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 16) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -625,14 +627,14 @@ namespace Cdy.Tag ...@@ -625,14 +627,14 @@ namespace Cdy.Tag
rsize += 4; rsize += 4;
rsize += datas.Length; rsize += datas.Length;
//值 //值
ipres = CompressValues<ULongPointData>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<ULongPointData>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 18 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 16) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -650,14 +652,14 @@ namespace Cdy.Tag ...@@ -650,14 +652,14 @@ namespace Cdy.Tag
rsize += 4; rsize += 4;
rsize += datas.Length; rsize += datas.Length;
//值 //值
ipres = CompressValues<IntPoint3Data>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<IntPoint3Data>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 14 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 12) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -674,14 +676,14 @@ namespace Cdy.Tag ...@@ -674,14 +676,14 @@ namespace Cdy.Tag
rsize += 4; rsize += 4;
rsize += datas.Length; rsize += datas.Length;
//值 //值
ipres = CompressValues<UIntPoint3Data>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<UIntPoint3Data>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 14 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 12) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -698,14 +700,14 @@ namespace Cdy.Tag ...@@ -698,14 +700,14 @@ namespace Cdy.Tag
rsize += 4; rsize += 4;
rsize += datas.Length; rsize += datas.Length;
//值 //值
ipres = CompressValues<LongPoint3Data>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<LongPoint3Data>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 26 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 24) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -722,14 +724,14 @@ namespace Cdy.Tag ...@@ -722,14 +724,14 @@ namespace Cdy.Tag
rsize += 4; rsize += 4;
rsize += datas.Length; rsize += datas.Length;
//值 //值
ipres = CompressValues<ULongPoint3Data>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<ULongPoint3Data>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
//质量 //质量
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 26 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 24) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
......
...@@ -851,7 +851,9 @@ namespace Cdy.Tag ...@@ -851,7 +851,9 @@ namespace Cdy.Tag
{ {
var count = (int)(size - this.QulityOffset); var count = (int)(size - this.QulityOffset);
if(mMarshalMemory==null) byte tlen = (source as HisDataMemoryBlock).TimeLen;
if (mMarshalMemory==null)
{ {
mMarshalMemory = new MemoryBlock(count * 10); mMarshalMemory = new MemoryBlock(count * 10);
} }
...@@ -863,6 +865,8 @@ namespace Cdy.Tag ...@@ -863,6 +865,8 @@ namespace Cdy.Tag
emptys.CheckAndResize(count); emptys.CheckAndResize(count);
var datas = CompressTimers(source, sourceAddr, (int)count, emptys); var datas = CompressTimers(source, sourceAddr, (int)count, emptys);
long rsize = 0; long rsize = 0;
int rcount = count - emptys.WriteIndex - 1; int rcount = count - emptys.WriteIndex - 1;
...@@ -877,117 +881,117 @@ namespace Cdy.Tag ...@@ -877,117 +881,117 @@ namespace Cdy.Tag
switch (type) switch (type)
{ {
case TagType.Bool: case TagType.Bool:
var cval = CompressBoolValues(source, count * 2 + sourceAddr, count, emptys); var cval = CompressBoolValues(source, count * tlen + sourceAddr, count, emptys);
target.Write(cval.Length); target.Write(cval.Length);
target.Write(cval); target.Write(cval);
rsize += 4; rsize += 4;
rsize += cval.Length; rsize += cval.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
var cqus = CompressQulitys(source, count * 3 + sourceAddr, count, emptys); var cqus = CompressQulitys(source, count * (tlen+1) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.Byte: case TagType.Byte:
cval = CompressValues<byte>(source, count * 2 + sourceAddr, count, emptys,TagType); cval = CompressValues<byte>(source, count * tlen + sourceAddr, count, emptys,TagType);
target.Write(cval.Length); target.Write(cval.Length);
target.Write(cval); target.Write(cval);
rsize += 4; rsize += 4;
rsize += cval.Length; rsize += cval.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 3 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 1) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.UShort: case TagType.UShort:
var ures = CompressValues<ushort>(source, count * 2 + sourceAddr, count, emptys, TagType); var ures = CompressValues<ushort>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ures.Length); target.Write(ures.Length);
target.Write(ures); target.Write(ures);
rsize += 4; rsize += 4;
rsize += ures.Length; rsize += ures.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 4 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 2) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.Short: case TagType.Short:
var res = CompressValues<short>(source, count * 2 + sourceAddr, count, emptys, TagType); var res = CompressValues<short>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(res.Length); target.Write(res.Length);
target.Write(res); target.Write(res);
rsize += 4; rsize += 4;
rsize += res.Length; rsize += res.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 4 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 2) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.UInt: case TagType.UInt:
var uires = CompressValues<uint>(source, count * 2 + sourceAddr, count, emptys, TagType); var uires = CompressValues<uint>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(uires.Length); target.Write(uires.Length);
target.Write(uires); target.Write(uires);
rsize += 4; rsize += 4;
rsize += uires.Length; rsize += uires.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 4) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.Int: case TagType.Int:
var ires = CompressValues<int>(source, count * 2 + sourceAddr, count, emptys, TagType); var ires = CompressValues<int>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ires.Length); target.Write(ires.Length);
target.Write(ires); target.Write(ires);
rsize += 4; rsize += 4;
rsize += ires.Length; rsize += ires.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 4) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.ULong: case TagType.ULong:
var ulres = CompressValues<ulong>(source, count * 2 + sourceAddr, count, emptys, TagType); var ulres = CompressValues<ulong>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ulres.Length); target.Write(ulres.Length);
target.Write(ulres); target.Write(ulres);
rsize += 4; rsize += 4;
rsize += ulres.Length; rsize += ulres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.Long: case TagType.Long:
var lres = CompressValues<long>(source, count * 2 + sourceAddr, count, emptys, TagType); var lres = CompressValues<long>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(lres.Length); target.Write(lres.Length);
target.Write(lres); target.Write(lres);
rsize += 4; rsize += 4;
rsize += lres.Length; rsize += lres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.DateTime: case TagType.DateTime:
var dres = CompressValues<ulong>(source, count * 2 + sourceAddr, count, emptys, TagType); var dres = CompressValues<ulong>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(dres.Length); target.Write(dres.Length);
target.Write(dres); target.Write(dres);
rsize += 4; rsize += 4;
rsize += dres.Length; rsize += dres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -1004,13 +1008,13 @@ namespace Cdy.Tag ...@@ -1004,13 +1008,13 @@ namespace Cdy.Tag
mDCompress.CheckAndResizeTo(count); mDCompress.CheckAndResizeTo(count);
} }
var ddres = CompressValues<double>(source, count * 2 + sourceAddr, count, emptys, TagType); var ddres = CompressValues<double>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ddres.Length); target.Write(ddres.Length);
target.Write(ddres); target.Write(ddres);
rsize += 4; rsize += 4;
rsize += ddres.Length; rsize += ddres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen+8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
...@@ -1027,20 +1031,20 @@ namespace Cdy.Tag ...@@ -1027,20 +1031,20 @@ namespace Cdy.Tag
mFCompress.CheckAndResizeTo(count); mFCompress.CheckAndResizeTo(count);
} }
var fres = CompressValues<float>(source, count * 2 + sourceAddr, count, emptys, TagType); var fres = CompressValues<float>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(fres.Length); target.Write(fres.Length);
target.Write(fres); target.Write(fres);
rsize += 4; rsize += 4;
rsize += fres.Length; rsize += fres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen+4) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.String: case TagType.String:
var vals = source.ReadStrings(count * 2 + (int)sourceAddr, count); var vals = source.ReadStrings(count * tlen + (int)sourceAddr, count);
var qus = source.ReadBytes(count); var qus = source.ReadBytes(count);
var sres = CompressValues(vals, emptys); var sres = CompressValues(vals, emptys);
target.Write(sres.Length); target.Write(sres.Length);
...@@ -1055,104 +1059,104 @@ namespace Cdy.Tag ...@@ -1055,104 +1059,104 @@ namespace Cdy.Tag
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.IntPoint: case TagType.IntPoint:
var ipres = CompressValues<IntPointData>(source, count * 2 + sourceAddr, count, emptys, TagType); var ipres = CompressValues<IntPointData>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen+8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.UIntPoint: case TagType.UIntPoint:
ipres = CompressValues<UIntPointData>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<UIntPointData>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.LongPoint: case TagType.LongPoint:
ipres = CompressValues<LongPointData>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<LongPointData>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 18 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 16) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.ULongPoint: case TagType.ULongPoint:
ipres = CompressValues<ULongPointData>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<ULongPointData>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 18 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 16) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.IntPoint3: case TagType.IntPoint3:
ipres = CompressValues<IntPoint3Data>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<IntPoint3Data>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 14 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 12) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.UIntPoint3: case TagType.UIntPoint3:
ipres = CompressValues<UIntPoint3Data>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<UIntPoint3Data>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 14 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 12) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.LongPoint3: case TagType.LongPoint3:
ipres = CompressValues<LongPoint3Data>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<LongPoint3Data>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 26 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen + 24) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
rsize += cqus.Length; rsize += cqus.Length;
break; break;
case TagType.ULongPoint3: case TagType.ULongPoint3:
ipres = CompressValues<ULongPoint3Data>(source, count * 2 + sourceAddr, count, emptys, TagType); ipres = CompressValues<ULongPoint3Data>(source, count * tlen + sourceAddr, count, emptys, TagType);
target.Write(ipres.Length); target.Write(ipres.Length);
target.Write(ipres); target.Write(ipres);
rsize += 4; rsize += 4;
rsize += ipres.Length; rsize += ipres.Length;
emptys.ReadIndex = 0; emptys.ReadIndex = 0;
cqus = CompressQulitys(source, count * 26 + sourceAddr, count, emptys); cqus = CompressQulitys(source, count * (tlen+24) + sourceAddr, count, emptys);
target.Write(cqus.Length); target.Write(cqus.Length);
target.Write(cqus); target.Write(cqus);
rsize += 4; rsize += 4;
......
...@@ -1920,49 +1920,49 @@ namespace Cdy.Tag ...@@ -1920,49 +1920,49 @@ namespace Cdy.Tag
switch (type) switch (type)
{ {
case TagType.Byte: case TagType.Byte:
var cval = CompressValues<byte>(source, count * 2 + sourceAddr, count, tims, type); var cval = CompressValues<byte>(source, count * tlen + sourceAddr, count, tims, type);
var timeData = CompressTimers(tims, usedIndex); var timeData = CompressTimers(tims, usedIndex);
var cqus = CompressQulitys(source, count * 3 + sourceAddr, count, usedIndex); var cqus = CompressQulitys(source, count * (tlen + 1) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
case TagType.Short: case TagType.Short:
cval = CompressValues<short>(source, count * 2 + sourceAddr, count, tims, type); cval = CompressValues<short>(source, count * tlen + sourceAddr, count, tims, type);
timeData = CompressTimers(tims, usedIndex); timeData = CompressTimers(tims, usedIndex);
cqus = CompressQulitys(source, count * 4 + sourceAddr, count, usedIndex); cqus = CompressQulitys(source, count * (tlen + 2) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
case TagType.UShort: case TagType.UShort:
cval = CompressValues<ushort>(source, count * 2 + sourceAddr, count, tims, type); cval = CompressValues<ushort>(source, count * tlen + sourceAddr, count, tims, type);
timeData = CompressTimers(tims, usedIndex); timeData = CompressTimers(tims, usedIndex);
cqus = CompressQulitys(source, count * 4 + sourceAddr, count, usedIndex); cqus = CompressQulitys(source, count * (tlen + 2) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
case TagType.Int: case TagType.Int:
cval = CompressValues<int>(source, count * 2 + sourceAddr, count, tims, type); cval = CompressValues<int>(source, count * tlen + sourceAddr, count, tims, type);
timeData = CompressTimers(tims, usedIndex); timeData = CompressTimers(tims, usedIndex);
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, usedIndex); cqus = CompressQulitys(source, count * (tlen + 4) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
case TagType.UInt: case TagType.UInt:
cval = CompressValues<uint>(source, count * 2 + sourceAddr, count, tims, type); cval = CompressValues<uint>(source, count * tlen + sourceAddr, count, tims, type);
timeData = CompressTimers(tims, usedIndex); timeData = CompressTimers(tims, usedIndex);
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, usedIndex); cqus = CompressQulitys(source, count * (tlen + 4) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
case TagType.Long: case TagType.Long:
cval = CompressValues<long>(source, count * 2 + sourceAddr, count, tims, type); cval = CompressValues<long>(source, count * tlen + sourceAddr, count, tims, type);
timeData = CompressTimers(tims, usedIndex); timeData = CompressTimers(tims, usedIndex);
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, usedIndex); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
case TagType.ULong: case TagType.ULong:
cval = CompressValues<ulong>(source, count * 2 + sourceAddr, count, tims, type); cval = CompressValues<ulong>(source, count * tlen + sourceAddr, count, tims, type);
timeData = CompressTimers(tims, usedIndex); timeData = CompressTimers(tims, usedIndex);
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, usedIndex); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
case TagType.Double: case TagType.Double:
...@@ -1976,9 +1976,9 @@ namespace Cdy.Tag ...@@ -1976,9 +1976,9 @@ namespace Cdy.Tag
mDCompress.CheckAndResizeTo(count); mDCompress.CheckAndResizeTo(count);
} }
cval = CompressValues<double>(source, count * 2 + sourceAddr, count, tims, type); cval = CompressValues<double>(source, count * tlen + sourceAddr, count, tims, type);
timeData = CompressTimers(tims, usedIndex); timeData = CompressTimers(tims, usedIndex);
cqus = CompressQulitys(source, count * 10 + sourceAddr, count, usedIndex); cqus = CompressQulitys(source, count * (tlen + 8) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
case TagType.Float: case TagType.Float:
...@@ -1990,9 +1990,9 @@ namespace Cdy.Tag ...@@ -1990,9 +1990,9 @@ namespace Cdy.Tag
{ {
mFCompress.CheckAndResizeTo(count); mFCompress.CheckAndResizeTo(count);
} }
cval = CompressValues<float>(source, count * 2 + sourceAddr, count, tims, type); cval = CompressValues<float>(source, count * tlen + sourceAddr, count, tims, type);
timeData = CompressTimers(tims, usedIndex); timeData = CompressTimers(tims, usedIndex);
cqus = CompressQulitys(source, count * 6 + sourceAddr, count, usedIndex); cqus = CompressQulitys(source, count * (tlen + 4) + sourceAddr, count, usedIndex);
rsize = FillData(cval, cqus, timeData, target, targetAddr); rsize = FillData(cval, cqus, timeData, target, targetAddr);
break; break;
......
...@@ -168,7 +168,7 @@ namespace DBRuntime.His ...@@ -168,7 +168,7 @@ namespace DBRuntime.His
{ {
if (this.HisEnginer.HisTagManager.HisTags.ContainsKey(id)) if (this.HisEnginer.HisTagManager.HisTags.ContainsKey(id))
{ {
return HisEnginer.HisTagManager.HisTags[id].Type == RecordType.Manual; return HisEnginer.HisTagManager.HisTags[id].Type == RecordType.Driver;
} }
return false; return false;
} }
......
...@@ -741,6 +741,61 @@ namespace Cdy.Tag ...@@ -741,6 +741,61 @@ namespace Cdy.Tag
} }
} }
private int CalCachDatablockSizeForManualRecord(Cdy.Tag.TagType tagType, int headSize, int valueCount, out int dataOffset, out int qulityOffset)
{
//单个数据块内容包括:时间戳(2)+数值+质量戳(1)
qulityOffset = headSize;
int count = Math.Max(CachMemoryTime, valueCount);
//数据区偏移,时间戳占4个字节,质量戳占1个字节
dataOffset = headSize + count * 4;
switch (tagType)
{
case Cdy.Tag.TagType.Byte:
case Cdy.Tag.TagType.Bool:
qulityOffset = dataOffset + count;
return qulityOffset + count;
case Cdy.Tag.TagType.Short:
case Cdy.Tag.TagType.UShort:
qulityOffset = dataOffset + count * 2;
return qulityOffset + count;
case Cdy.Tag.TagType.Int:
case Cdy.Tag.TagType.UInt:
case Cdy.Tag.TagType.Float:
qulityOffset = dataOffset + count * 4;
return qulityOffset + count;
case Cdy.Tag.TagType.Long:
case Cdy.Tag.TagType.ULong:
case Cdy.Tag.TagType.Double:
case Cdy.Tag.TagType.DateTime:
case TagType.UIntPoint:
case TagType.IntPoint:
qulityOffset = dataOffset + count * 8;
return qulityOffset + count;
case Cdy.Tag.TagType.IntPoint3:
case Cdy.Tag.TagType.UIntPoint3:
qulityOffset = dataOffset + count * 12;
return qulityOffset + count;
case Cdy.Tag.TagType.LongPoint:
case Cdy.Tag.TagType.ULongPoint:
qulityOffset = dataOffset + count * 16;
return qulityOffset + count;
case Cdy.Tag.TagType.LongPoint3:
case Cdy.Tag.TagType.ULongPoint3:
qulityOffset = dataOffset + count * 24;
return qulityOffset + count;
case Cdy.Tag.TagType.String:
qulityOffset = dataOffset + count * Const.StringSize;
return qulityOffset + count;
default:
return 0;
}
}
/// <summary> /// <summary>
/// 分配内存 /// 分配内存
/// </summary> /// </summary>
...@@ -768,7 +823,7 @@ namespace Cdy.Tag ...@@ -768,7 +823,7 @@ namespace Cdy.Tag
foreach (var vv in mHisTags) foreach (var vv in mHisTags)
{ {
if (vv.Value.Type != RecordType.Manual) if (vv.Value.Type != RecordType.Driver)
{ {
var ss = CalMergeBlockSize(vv.Value.TagType, blockheadsize, out valueOffset, out qulityOffset); var ss = CalMergeBlockSize(vv.Value.TagType, blockheadsize, out valueOffset, out qulityOffset);
...@@ -1097,7 +1152,7 @@ namespace Cdy.Tag ...@@ -1097,7 +1152,7 @@ namespace Cdy.Tag
long ltmp2 = sw.ElapsedMilliseconds; long ltmp2 = sw.ElapsedMilliseconds;
sw.Stop(); sw.Stop();
LoggerService.Service.Info("HisEnginer", "SubmiteMemory 耗时:" + ltmp+","+ltmp2, ConsoleColor.Cyan); LoggerService.Service.Info("HisEnginer", "SubmiteMemory 耗时:" + ltmp + "," + ltmp2, ConsoleColor.Cyan);
} }
...@@ -1392,7 +1447,7 @@ namespace Cdy.Tag ...@@ -1392,7 +1447,7 @@ namespace Cdy.Tag
SortedDictionary<DateTime, ManualHisDataMemoryBlock> datacach; SortedDictionary<DateTime, ManualHisDataMemoryBlock> datacach;
if (mHisTags.ContainsKey(id) && mHisTags[id].Type == RecordType.Manual) if (mHisTags.ContainsKey(id) && mHisTags[id].Type == RecordType.Driver)
{ {
lock (mManualHisDataCach) lock (mManualHisDataCach)
{ {
...@@ -1422,10 +1477,10 @@ namespace Cdy.Tag ...@@ -1422,10 +1477,10 @@ namespace Cdy.Tag
{ {
if(hb!=null) if(hb!=null)
HisDataMemoryQueryService.Service.RegistorManual(id, hb.Time, hb.EndTime, hb); HisDataMemoryQueryService.Service.RegistorManual(id, hb.Time, hb.EndTime, hb);
var css = CalCachDatablockSize(tag.TagType, 0, MergeMemoryTime * 1000 / timeUnit, out valueOffset, out qulityOffset); var css = CalCachDatablockSizeForManualRecord(tag.TagType, 0, MergeMemoryTime * 1000 / timeUnit, out valueOffset, out qulityOffset);
hb = ManualHisDataMemoryBlockPool.Pool.Get(css); hb = ManualHisDataMemoryBlockPool.Pool.Get(css);
hb.Time = time; hb.Time = time;
hb.MaxCount = MergeMemoryTime * 1000 / timeUnit; hb.MaxCount = MergeMemoryTime * 1000 / timeUnit + 2;
hb.TimeUnit = timeUnit; hb.TimeUnit = timeUnit;
hb.TimeLen = 4; hb.TimeLen = 4;
hb.TimerAddress = 0; hb.TimerAddress = 0;
...@@ -1760,7 +1815,7 @@ namespace Cdy.Tag ...@@ -1760,7 +1815,7 @@ namespace Cdy.Tag
SortedDictionary<DateTime, ManualHisDataMemoryBlock> datacach; SortedDictionary<DateTime, ManualHisDataMemoryBlock> datacach;
if (mHisTags.ContainsKey(id) && mHisTags[id].Type == RecordType.Manual) if (mHisTags.ContainsKey(id) && mHisTags[id].Type == RecordType.Driver)
{ {
lock (mManualHisDataCach) lock (mManualHisDataCach)
{ {
...@@ -1787,10 +1842,10 @@ namespace Cdy.Tag ...@@ -1787,10 +1842,10 @@ namespace Cdy.Tag
} }
else else
{ {
var css = CalCachDatablockSize(tag.TagType, 0, MergeMemoryTime * 1000 / timeUnit, out valueOffset, out qulityOffset); var css = CalCachDatablockSizeForManualRecord(tag.TagType, 0, MergeMemoryTime * 1000 / timeUnit, out valueOffset, out qulityOffset);
hb = ManualHisDataMemoryBlockPool.Pool.Get(css); hb = ManualHisDataMemoryBlockPool.Pool.Get(css);
hb.Time = time; hb.Time = time;
hb.MaxCount = MergeMemoryTime * 1000 / timeUnit; hb.MaxCount = MergeMemoryTime * 1000 / timeUnit +2;
hb.TimeUnit = timeUnit; hb.TimeUnit = timeUnit;
hb.TimeLen = 4; hb.TimeLen = 4;
hb.TimerAddress = 0; hb.TimerAddress = 0;
...@@ -2023,7 +2078,7 @@ namespace Cdy.Tag ...@@ -2023,7 +2078,7 @@ namespace Cdy.Tag
/// <returns></returns> /// <returns></returns>
public List<int> GetManualRecordTagId() public List<int> GetManualRecordTagId()
{ {
return mManager.HisTags.Where(e => e.Value.Type == RecordType.Manual).Select(e=>e.Value.Id).ToList(); return mManager.HisTags.Where(e => e.Value.Type == RecordType.Driver).Select(e=>e.Value.Id).ToList();
} }
/// <summary> /// <summary>
......
...@@ -974,6 +974,10 @@ namespace Cdy.Tag ...@@ -974,6 +974,10 @@ namespace Cdy.Tag
{ {
if (!mManualHisDataCach[sfile].ContainsKey(id)) if (!mManualHisDataCach[sfile].ContainsKey(id))
mManualHisDataCach[sfile].Add(id, datablock); mManualHisDataCach[sfile].Add(id, datablock);
else
{
LoggerService.Service.Warn("SeriseEnginer", "数据存储出现阻塞:"+id);
}
} }
else else
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册