Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
cdy816
Mars
提交
ecac2c77
Mars
项目概览
cdy816
/
Mars
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Mars
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ecac2c77
编写于
10月 15, 2020
作者:
cdy816
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Bug 修改
上级
1b6199f3
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
176 addition
and
111 deletion
+176
-111
Common/Cdy.Tag/His/RecordType.cs
Common/Cdy.Tag/His/RecordType.cs
+2
-2
Driver/SimDriver/Driver.cs
Driver/SimDriver/Driver.cs
+1
-1
RunTime/DBRuntime/His/Compress/Special/DeadAreaCompressUnit2.cs
...e/DBRuntime/His/Compress/Special/DeadAreaCompressUnit2.cs
+41
-39
RunTime/DBRuntime/His/Compress/Special/LosslessCompressUnit2.cs
...e/DBRuntime/His/Compress/Special/LosslessCompressUnit2.cs
+44
-40
RunTime/DBRuntime/His/Compress/Special/SlopeCompressUnit2.cs
RunTime/DBRuntime/His/Compress/Special/SlopeCompressUnit2.cs
+18
-18
RunTime/DBRuntime/His/HisDataMemoryQueryService.cs
RunTime/DBRuntime/His/HisDataMemoryQueryService.cs
+1
-1
RunTime/DBRuntime/His/HisEnginer2.cs
RunTime/DBRuntime/His/HisEnginer2.cs
+65
-10
RunTime/DBRuntime/His/SeriseEnginer2.cs
RunTime/DBRuntime/His/SeriseEnginer2.cs
+4
-0
未找到文件。
Common/Cdy.Tag/His/RecordType.cs
浏览文件 @
ecac2c77
...
...
@@ -26,9 +26,9 @@ namespace Cdy.Tag
/// </summary>
ValueChanged
,
/// <summary>
///
手动
///
驱动自己更新
/// </summary>
Manual
Driver
}
...
...
Driver/SimDriver/Driver.cs
浏览文件 @
ecac2c77
...
...
@@ -110,7 +110,7 @@ namespace SimDriver
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
());
}
}
...
...
RunTime/DBRuntime/His/Compress/Special/DeadAreaCompressUnit2.cs
浏览文件 @
ecac2c77
...
...
@@ -171,6 +171,8 @@ namespace Cdy.Tag
var
count
=
(
int
)(
size
-
this
.
QulityOffset
);
//var tims = source.ReadUShorts(sourceAddr, (int)count);
byte
tlen
=
(
source
as
HisDataMemoryBlock
).
TimeLen
;
if
(
mMarshalMemory
==
null
)
{
mMarshalMemory
=
new
MemoryBlock
(
count
*
10
);
...
...
@@ -199,7 +201,7 @@ namespace Cdy.Tag
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
;
//写入时间
...
...
@@ -218,7 +220,7 @@ namespace Cdy.Tag
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
);
rsize
+=
4
;
...
...
@@ -227,7 +229,7 @@ namespace Cdy.Tag
case
TagType
.
Byte
:
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
...
...
@@ -247,7 +249,7 @@ namespace Cdy.Tag
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
);
rsize
+=
4
;
...
...
@@ -255,7 +257,7 @@ namespace Cdy.Tag
break
;
case
TagType
.
UShort
:
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
...
...
@@ -273,7 +275,7 @@ namespace Cdy.Tag
rsize
+=
ures
.
Length
;
//质量戳
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
);
rsize
+=
4
;
...
...
@@ -281,7 +283,7 @@ namespace Cdy.Tag
break
;
case
TagType
.
Short
:
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
...
...
@@ -299,7 +301,7 @@ namespace Cdy.Tag
rsize
+=
res
.
Length
;
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
);
rsize
+=
4
;
...
...
@@ -307,7 +309,7 @@ namespace Cdy.Tag
break
;
case
TagType
.
UInt
:
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
...
...
@@ -325,7 +327,7 @@ namespace Cdy.Tag
rsize
+=
uires
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -333,7 +335,7 @@ namespace Cdy.Tag
break
;
case
TagType
.
Int
:
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
//写入时间
...
...
@@ -350,7 +352,7 @@ namespace Cdy.Tag
rsize
+=
ires
.
Length
;
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
);
rsize
+=
4
;
...
...
@@ -358,7 +360,7 @@ namespace Cdy.Tag
break
;
case
TagType
.
ULong
:
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
//写入时间
...
...
@@ -375,7 +377,7 @@ namespace Cdy.Tag
rsize
+=
ulres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -383,7 +385,7 @@ namespace Cdy.Tag
break
;
case
TagType
.
Long
:
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
//写入时间
...
...
@@ -400,7 +402,7 @@ namespace Cdy.Tag
rsize
+=
lres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -409,7 +411,7 @@ namespace Cdy.Tag
case
TagType
.
DateTime
:
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
;
//写入时间
...
...
@@ -426,7 +428,7 @@ namespace Cdy.Tag
rsize
+=
dres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -443,7 +445,7 @@ namespace Cdy.Tag
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
//写入时间
...
...
@@ -466,7 +468,7 @@ namespace Cdy.Tag
rsize
+=
ddres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -491,7 +493,7 @@ namespace Cdy.Tag
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
);
rcount
=
count
-
emptys2
.
WriteIndex
-
1
;
//写入时间
...
...
@@ -508,7 +510,7 @@ namespace Cdy.Tag
rsize
+=
fres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -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
sres
=
CompressValues
(
vals
,
emptys
);
target
.
Write
(
sres
.
Length
);
...
...
@@ -553,14 +555,14 @@ namespace Cdy.Tag
rsize
+=
4
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -577,14 +579,14 @@ namespace Cdy.Tag
rsize
+=
4
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -601,14 +603,14 @@ namespace Cdy.Tag
rsize
+=
4
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -625,14 +627,14 @@ namespace Cdy.Tag
rsize
+=
4
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -650,14 +652,14 @@ namespace Cdy.Tag
rsize
+=
4
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -674,14 +676,14 @@ namespace Cdy.Tag
rsize
+=
4
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -698,14 +700,14 @@ namespace Cdy.Tag
rsize
+=
4
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
@@ -722,14 +724,14 @@ namespace Cdy.Tag
rsize
+=
4
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
//质量
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
);
rsize
+=
4
;
...
...
RunTime/DBRuntime/His/Compress/Special/LosslessCompressUnit2.cs
浏览文件 @
ecac2c77
...
...
@@ -851,7 +851,9 @@ namespace Cdy.Tag
{
var
count
=
(
int
)(
size
-
this
.
QulityOffset
);
if
(
mMarshalMemory
==
null
)
byte
tlen
=
(
source
as
HisDataMemoryBlock
).
TimeLen
;
if
(
mMarshalMemory
==
null
)
{
mMarshalMemory
=
new
MemoryBlock
(
count
*
10
);
}
...
...
@@ -863,6 +865,8 @@ namespace Cdy.Tag
emptys
.
CheckAndResize
(
count
);
var
datas
=
CompressTimers
(
source
,
sourceAddr
,
(
int
)
count
,
emptys
);
long
rsize
=
0
;
int
rcount
=
count
-
emptys
.
WriteIndex
-
1
;
...
...
@@ -877,117 +881,117 @@ namespace Cdy.Tag
switch
(
type
)
{
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
);
rsize
+=
4
;
rsize
+=
cval
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
cval
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ures
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
res
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
uires
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ires
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ulres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
lres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
dres
.
Length
;
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
);
rsize
+=
4
;
...
...
@@ -1004,13 +1008,13 @@ namespace Cdy.Tag
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
);
rsize
+=
4
;
rsize
+=
ddres
.
Length
;
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
);
rsize
+=
4
;
...
...
@@ -1027,20 +1031,20 @@ namespace Cdy.Tag
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
);
rsize
+=
4
;
rsize
+=
fres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
sres
=
CompressValues
(
vals
,
emptys
);
target
.
Write
(
sres
.
Length
);
...
...
@@ -1055,104 +1059,104 @@ namespace Cdy.Tag
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
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
);
rsize
+=
4
;
rsize
+=
cqus
.
Length
;
break
;
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
);
rsize
+=
4
;
rsize
+=
ipres
.
Length
;
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
);
rsize
+=
4
;
...
...
RunTime/DBRuntime/His/Compress/Special/SlopeCompressUnit2.cs
浏览文件 @
ecac2c77
...
...
@@ -1920,49 +1920,49 @@ namespace Cdy.Tag
switch
(
type
)
{
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
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
);
break
;
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
);
cqus
=
CompressQulitys
(
source
,
count
*
4
+
sourceAddr
,
count
,
usedIndex
);
cqus
=
CompressQulitys
(
source
,
count
*
(
tlen
+
2
)
+
sourceAddr
,
count
,
usedIndex
);
rsize
=
FillData
(
cval
,
cqus
,
timeData
,
target
,
targetAddr
);
break
;
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
);
cqus
=
CompressQulitys
(
source
,
count
*
4
+
sourceAddr
,
count
,
usedIndex
);
cqus
=
CompressQulitys
(
source
,
count
*
(
tlen
+
2
)
+
sourceAddr
,
count
,
usedIndex
);
rsize
=
FillData
(
cval
,
cqus
,
timeData
,
target
,
targetAddr
);
break
;
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
);
cqus
=
CompressQulitys
(
source
,
count
*
6
+
sourceAddr
,
count
,
usedIndex
);
cqus
=
CompressQulitys
(
source
,
count
*
(
tlen
+
4
)
+
sourceAddr
,
count
,
usedIndex
);
rsize
=
FillData
(
cval
,
cqus
,
timeData
,
target
,
targetAddr
);
break
;
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
);
cqus
=
CompressQulitys
(
source
,
count
*
6
+
sourceAddr
,
count
,
usedIndex
);
cqus
=
CompressQulitys
(
source
,
count
*
(
tlen
+
4
)
+
sourceAddr
,
count
,
usedIndex
);
rsize
=
FillData
(
cval
,
cqus
,
timeData
,
target
,
targetAddr
);
break
;
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
);
cqus
=
CompressQulitys
(
source
,
count
*
10
+
sourceAddr
,
count
,
usedIndex
);
cqus
=
CompressQulitys
(
source
,
count
*
(
tlen
+
8
)
+
sourceAddr
,
count
,
usedIndex
);
rsize
=
FillData
(
cval
,
cqus
,
timeData
,
target
,
targetAddr
);
break
;
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
);
cqus
=
CompressQulitys
(
source
,
count
*
10
+
sourceAddr
,
count
,
usedIndex
);
cqus
=
CompressQulitys
(
source
,
count
*
(
tlen
+
8
)
+
sourceAddr
,
count
,
usedIndex
);
rsize
=
FillData
(
cval
,
cqus
,
timeData
,
target
,
targetAddr
);
break
;
case
TagType
.
Double
:
...
...
@@ -1976,9 +1976,9 @@ namespace Cdy.Tag
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
);
cqus
=
CompressQulitys
(
source
,
count
*
10
+
sourceAddr
,
count
,
usedIndex
);
cqus
=
CompressQulitys
(
source
,
count
*
(
tlen
+
8
)
+
sourceAddr
,
count
,
usedIndex
);
rsize
=
FillData
(
cval
,
cqus
,
timeData
,
target
,
targetAddr
);
break
;
case
TagType
.
Float
:
...
...
@@ -1990,9 +1990,9 @@ namespace Cdy.Tag
{
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
);
cqus
=
CompressQulitys
(
source
,
count
*
6
+
sourceAddr
,
count
,
usedIndex
);
cqus
=
CompressQulitys
(
source
,
count
*
(
tlen
+
4
)
+
sourceAddr
,
count
,
usedIndex
);
rsize
=
FillData
(
cval
,
cqus
,
timeData
,
target
,
targetAddr
);
break
;
...
...
RunTime/DBRuntime/His/HisDataMemoryQueryService.cs
浏览文件 @
ecac2c77
...
...
@@ -168,7 +168,7 @@ namespace DBRuntime.His
{
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
;
}
...
...
RunTime/DBRuntime/His/HisEnginer2.cs
浏览文件 @
ecac2c77
...
...
@@ -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>
...
...
@@ -768,7 +823,7 @@ namespace Cdy.Tag
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
);
...
...
@@ -1096,8 +1151,8 @@ namespace Cdy.Tag
}
long
ltmp2
=
sw
.
ElapsedMilliseconds
;
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
SortedDictionary
<
DateTime
,
ManualHisDataMemoryBlock
>
datacach
;
if
(
mHisTags
.
ContainsKey
(
id
)
&&
mHisTags
[
id
].
Type
==
RecordType
.
Manual
)
if
(
mHisTags
.
ContainsKey
(
id
)
&&
mHisTags
[
id
].
Type
==
RecordType
.
Driver
)
{
lock
(
mManualHisDataCach
)
{
...
...
@@ -1422,10 +1477,10 @@ namespace Cdy.Tag
{
if
(
hb
!=
null
)
HisDataMemoryQueryService
.
Service
.
RegistorManual
(
id
,
hb
.
Time
,
hb
.
EndTime
,
hb
);
var
css
=
CalCachDatablockSize
(
tag
.
TagType
,
0
,
MergeMemoryTime
*
1000
/
timeUnit
,
out
valueOffset
,
out
qulityOffset
);
var
css
=
CalCachDatablockSize
ForManualRecord
(
tag
.
TagType
,
0
,
MergeMemoryTime
*
1000
/
timeUnit
,
out
valueOffset
,
out
qulityOffset
);
hb
=
ManualHisDataMemoryBlockPool
.
Pool
.
Get
(
css
);
hb
.
Time
=
time
;
hb
.
MaxCount
=
MergeMemoryTime
*
1000
/
timeUnit
;
hb
.
MaxCount
=
MergeMemoryTime
*
1000
/
timeUnit
+
2
;
hb
.
TimeUnit
=
timeUnit
;
hb
.
TimeLen
=
4
;
hb
.
TimerAddress
=
0
;
...
...
@@ -1760,7 +1815,7 @@ namespace Cdy.Tag
SortedDictionary
<
DateTime
,
ManualHisDataMemoryBlock
>
datacach
;
if
(
mHisTags
.
ContainsKey
(
id
)
&&
mHisTags
[
id
].
Type
==
RecordType
.
Manual
)
if
(
mHisTags
.
ContainsKey
(
id
)
&&
mHisTags
[
id
].
Type
==
RecordType
.
Driver
)
{
lock
(
mManualHisDataCach
)
{
...
...
@@ -1787,10 +1842,10 @@ namespace Cdy.Tag
}
else
{
var
css
=
CalCachDatablockSize
(
tag
.
TagType
,
0
,
MergeMemoryTime
*
1000
/
timeUnit
,
out
valueOffset
,
out
qulityOffset
);
var
css
=
CalCachDatablockSize
ForManualRecord
(
tag
.
TagType
,
0
,
MergeMemoryTime
*
1000
/
timeUnit
,
out
valueOffset
,
out
qulityOffset
);
hb
=
ManualHisDataMemoryBlockPool
.
Pool
.
Get
(
css
);
hb
.
Time
=
time
;
hb
.
MaxCount
=
MergeMemoryTime
*
1000
/
timeUnit
;
hb
.
MaxCount
=
MergeMemoryTime
*
1000
/
timeUnit
+
2
;
hb
.
TimeUnit
=
timeUnit
;
hb
.
TimeLen
=
4
;
hb
.
TimerAddress
=
0
;
...
...
@@ -2023,7 +2078,7 @@ namespace Cdy.Tag
/// <returns></returns>
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>
...
...
RunTime/DBRuntime/His/SeriseEnginer2.cs
浏览文件 @
ecac2c77
...
...
@@ -974,6 +974,10 @@ namespace Cdy.Tag
{
if
(!
mManualHisDataCach
[
sfile
].
ContainsKey
(
id
))
mManualHisDataCach
[
sfile
].
Add
(
id
,
datablock
);
else
{
LoggerService
.
Service
.
Warn
(
"SeriseEnginer"
,
"数据存储出现阻塞:"
+
id
);
}
}
else
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录