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

修正无损压缩Bug

上级 35baa02d
......@@ -76,9 +76,9 @@ namespace Cdy.Tag
bool isFirst = true;
int ig = -1;
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
switch(type)
switch (type)
{
case TagType.Byte:
byte sval = 0;
......@@ -105,7 +105,7 @@ namespace Cdy.Tag
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
return mMarshalMemory.StartMemory.AsMemory<byte>(0, (int)mMarshalMemory.Position);
......@@ -134,7 +134,7 @@ namespace Cdy.Tag
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
break;
......@@ -163,7 +163,7 @@ namespace Cdy.Tag
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
break;
......@@ -191,8 +191,7 @@ namespace Cdy.Tag
}
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
break;
......@@ -221,7 +220,7 @@ namespace Cdy.Tag
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
break;
......@@ -250,7 +249,7 @@ namespace Cdy.Tag
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
break;
......@@ -279,12 +278,14 @@ namespace Cdy.Tag
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
break;
case TagType.Double:
double dsval = 0;
mDCompress.Reset();
mDCompress.Precision = this.Precision;
for (int i = 0; i < count; i++)
{
if (i != ig)
......@@ -292,7 +293,7 @@ namespace Cdy.Tag
var id = source.ReadDouble(offset + i * 8);
if (isFirst)
{
mMarshalMemory.Write(id);
mDCompress.Append(id);
isFirst = false;
dsval = id;
}
......@@ -300,7 +301,8 @@ namespace Cdy.Tag
{
if (CheckIsNeedRecord(dsval, id, deadArea, deadType))
{
mMarshalMemory.Write(id);
mDCompress.Append(id);
// mMarshalMemory.Write(id);
dsval = id;
}
}
......@@ -308,11 +310,14 @@ namespace Cdy.Tag
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
mDCompress.Compress();
return mMarshalMemory.StartMemory.AsMemory<byte>(0, (int)mMarshalMemory.Position);
case TagType.Float:
mFCompress.Reset();
mFCompress.Precision = this.Precision;
float fsval = 0;
for (int i = 0; i < count; i++)
{
......@@ -321,7 +326,7 @@ namespace Cdy.Tag
var id = source.ReadFloat(offset + i * 4);
if (isFirst)
{
mMarshalMemory.Write(id);
mFCompress.Append(id);
isFirst = false;
fsval = id;
}
......@@ -329,7 +334,7 @@ namespace Cdy.Tag
{
if (CheckIsNeedRecord(fsval, id, deadArea, deadType))
{
mMarshalMemory.Write(id);
mFCompress.Append(id);
fsval = id;
}
}
......@@ -337,9 +342,10 @@ namespace Cdy.Tag
else
{
ig = emptys.WriteIndex >= 0 ? emptys.Remove() : -1;
ig = emptys.ReadIndex < emptys.WriteIndex ? emptys.IncRead() : -1;
}
}
mFCompress.Compress();
return mMarshalMemory.StartMemory.AsMemory<byte>(0, (int)mMarshalMemory.Position);
default:
return base.CompressValues<T>(source, offset, count, emptys, type);
......
......@@ -137,7 +137,7 @@ namespace DBRuntime.His.Compress
/// </summary>
public void Compress()
{
if (mCanCompress)
if (mCanCompress && index > 2)
{
MemoryBlock.Write((byte)this.Precision);
MemoryBlock.Write(mBuffer[0]);
......
......@@ -137,7 +137,7 @@ namespace DBRuntime.His.Compress
/// </summary>
public void Compress()
{
if (mCanCompress)
if (mCanCompress && index>2)
{
MemoryBlock.Write((byte)this.Precision);
MemoryBlock.Write(mBuffer[0]);
......
......@@ -388,13 +388,14 @@ namespace Cdy.Tag
if (i != ig)
{
var id = source.ReadFloat(offset + i * 4);
mMarshalMemory.Write(id);
mFCompress.Append(id);
}
else
{
ig = emptys.ReadIndex<emptyIds.WriteIndex ? emptys.IncRead() : -1;
}
}
mFCompress.Compress();
return mMarshalMemory.StartMemory.AsMemory<byte>(0, (int)mMarshalMemory.Position);
case TagType.IntPoint:
int psval = 0;
......
......@@ -219,7 +219,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......@@ -267,7 +267,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......@@ -315,7 +315,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......@@ -362,7 +362,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......@@ -409,7 +409,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......@@ -456,7 +456,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......@@ -503,7 +503,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......@@ -550,7 +550,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......@@ -603,7 +603,7 @@ namespace Cdy.Tag
{
if (i == 1)
{
slope = CalSlope(pval, vals[i], vals[i].Key - ptim);
slope = CalSlope(pval, vals[i].Value, vals[i].Key - ptim);
}
else
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册