Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
cdy816
Mars
提交
ab5ea49d
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 搜索 >>
提交
ab5ea49d
编写于
4月 25, 2020
作者:
cdy816
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复无损压缩数据存储位置不对Bug
上级
dd17d5e1
变更
18
展开全部
隐藏空白更改
内联
并排
Showing
18 changed file
with
863 addition
and
44 deletion
+863
-44
Cdy.Tag/His/DataFileSeriserbase.cs
Cdy.Tag/His/DataFileSeriserbase.cs
+7
-0
Cdy.Tag/Interface/HisQueryResult.cs
Cdy.Tag/Interface/HisQueryResult.cs
+2
-2
DBDevelopService/Database/DbManager.cs
DBDevelopService/Database/DbManager.cs
+6
-0
DBHisData/HisQuery/DataFileManager.cs
DBHisData/HisQuery/DataFileManager.cs
+1
-1
DBInRun/Program.cs
DBInRun/Program.cs
+10
-6
DBStudio/DBInStudioServer.csproj
DBStudio/DBInStudioServer.csproj
+15
-0
DBStudio/Program.cs
DBStudio/Program.cs
+496
-4
DBStudio/Properties/Resources.Designer.cs
DBStudio/Properties/Resources.Designer.cs
+108
-0
DBStudio/Properties/Resources.resx
DBStudio/Properties/Resources.resx
+135
-0
DBStudio/Res.cs
DBStudio/Res.cs
+24
-0
DataRunner/His/Compress/Special/LosslessCompressUnit.cs
DataRunner/His/Compress/Special/LosslessCompressUnit.cs
+20
-19
DataRunner/His/Compress/Special/NoneCompressUnit.cs
DataRunner/His/Compress/Special/NoneCompressUnit.cs
+1
-1
DataRunner/His/HisEnginer.cs
DataRunner/His/HisEnginer.cs
+8
-8
DataRunner/His/Serise/LocalFileSeriser.cs
DataRunner/His/Serise/LocalFileSeriser.cs
+17
-0
DataRunner/His/TimerMemoryCacheProcesser.cs
DataRunner/His/TimerMemoryCacheProcesser.cs
+1
-1
DataRunner/His/ValueChangedMemoryCacheProcesser.cs
DataRunner/His/ValueChangedMemoryCacheProcesser.cs
+1
-1
HisDataTools/View/HisDataQueryView.xaml
HisDataTools/View/HisDataQueryView.xaml
+2
-1
HisDataTools/ViewModel/HisDataQueryModel.cs
HisDataTools/ViewModel/HisDataQueryModel.cs
+9
-0
未找到文件。
Cdy.Tag/His/DataFileSeriserbase.cs
浏览文件 @
ab5ea49d
...
...
@@ -66,6 +66,13 @@ namespace Cdy.Tag
/// <returns></returns>
public
abstract
bool
OpenFile
(
string
filename
);
/// <summary>
///
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public
abstract
bool
OpenForReadOnly
(
string
filename
);
/// <summary>
/// 检查是否存在
/// </summary>
...
...
Cdy.Tag/Interface/HisQueryResult.cs
浏览文件 @
ab5ea49d
...
...
@@ -127,7 +127,7 @@ namespace Cdy.Tag
/// <param name="qulity"></param>
public
void
Add
<
T
>(
T
value
,
DateTime
time
,
byte
qulity
)
{
Add
((
bool
)((
object
)
value
)
,
time
,
qulity
);
Add
((
object
)
value
,
time
,
qulity
);
}
/// <summary>
...
...
@@ -200,7 +200,7 @@ namespace Cdy.Tag
break
;
}
MemoryHelper
.
WriteDateTime
((
void
*)
handle
,
mCount
*
8
+
mTimeAddr
,
time
);
Marshal
.
WriteByte
(
handle
+
mCount
+
mQulityAddr
,
(
byte
)
value
);
Marshal
.
WriteByte
(
handle
+
mCount
+
mQulityAddr
,
(
byte
)
qulity
);
// mDataBuffer[mCount + mQulityAddr] = qulity;
mCount
++;
}
...
...
DBDevelopService/Database/DbManager.cs
浏览文件 @
ab5ea49d
...
...
@@ -29,6 +29,11 @@ namespace DBDevelopService
#
region
...
Properties
...
/// <summary>
///
/// </summary>
public
bool
IsLoaded
{
get
;
set
;
}
#
endregion
...
Properties
...
#
region
...
Methods
...
...
...
@@ -55,6 +60,7 @@ namespace DBDevelopService
}
}
}
IsLoaded
=
true
;
}
/// <summary>
...
...
DBHisData/HisQuery/DataFileManager.cs
浏览文件 @
ab5ea49d
...
...
@@ -223,7 +223,7 @@ namespace Cdy.Tag
{
List
<
DataFileInfo
>
re
=
new
List
<
DataFileInfo
>();
int
id
=
Id
/
TagCountOneFile
;
if
(
mTimeFileMaps
.
ContainsKey
(
I
d
))
if
(
mTimeFileMaps
.
ContainsKey
(
i
d
))
{
var
nxtYear
=
new
DateTime
(
startTime
.
Year
+
1
,
1
,
1
);
if
(
nxtYear
>
startTime
+
span
)
...
...
DBInRun/Program.cs
浏览文件 @
ab5ea49d
...
...
@@ -8,6 +8,7 @@ namespace DBInRun
{
static
void
Main
(
string
[]
args
)
{
bool
mIsClosed
=
false
;
Console
.
WriteLine
(
Res
.
Get
(
"WelcomeMsg"
));
if
(
args
.
Length
>
0
&&
args
[
0
]==
"start"
)
{
...
...
@@ -22,7 +23,7 @@ namespace DBInRun
}
Console
.
WriteLine
(
Res
.
Get
(
"HelpMsg"
));
while
(
true
)
while
(
!
mIsClosed
)
{
Console
.
Write
(
">"
);
string
[]
cmd
=
Console
.
ReadLine
().
Split
(
new
string
[]
{
" "
},
StringSplitOptions
.
RemoveEmptyEntries
);
...
...
@@ -37,6 +38,7 @@ namespace DBInRun
{
Cdy
.
Tag
.
Runner
.
RunInstance
.
Stop
();
}
mIsClosed
=
true
;
break
;
case
"start"
:
if
(
cmd
.
Length
>
1
)
...
...
@@ -91,6 +93,7 @@ namespace DBInRun
private
static
string
GetHelpString
()
{
StringBuilder
re
=
new
StringBuilder
();
re
.
AppendLine
();
re
.
AppendLine
(
"start [database] // "
+
Res
.
Get
(
"StartMsg"
));
re
.
AppendLine
(
"stop // "
+
Res
.
Get
(
"StopMsg"
));
re
.
AppendLine
(
"gd [databasename] [double tag count] [float tag count] [long tag count] [int tag count] [bool tag count] // "
+
Res
.
Get
(
"GDMsg"
));
...
...
@@ -141,36 +144,37 @@ namespace DBInRun
test
.
Append
(
new
Cdy
.
Tag
.
BoolTag
()
{
Name
=
"Bool"
+
i
,
Group
=
"Bool"
});
}
Cdy
.
Tag
.
HisDatabase
htest
=
db
.
HisDatabase
;
int
id
=
0
;
for
(
int
i
=
0
;
i
<
dcount
;
i
++)
{
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Double
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
});
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Double
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
,
CompressType
=
0
});
id
++;
}
for
(
int
i
=
0
;
i
<
fcount
;
i
++)
{
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Float
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
});
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Float
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
,
CompressType
=
0
});
id
++;
}
for
(
int
i
=
0
;
i
<
lcount
;
i
++)
{
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Long
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
});
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Long
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
,
CompressType
=
0
});
id
++;
}
for
(
int
i
=
0
;
i
<
icount
;
i
++)
{
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Int
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
});
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Int
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
,
CompressType
=
0
});
id
++;
}
for
(
int
i
=
0
;
i
<
bcount
;
i
++)
{
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Bool
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
});
htest
.
AddHisTags
(
new
Cdy
.
Tag
.
HisTag
()
{
Id
=
id
,
TagType
=
Cdy
.
Tag
.
TagType
.
Bool
,
Circle
=
1000
,
Type
=
Cdy
.
Tag
.
RecordType
.
Timer
,
CompressType
=
0
});
id
++;
}
db
.
HisDatabase
=
htest
;
...
...
DBStudio/DBInStudioServer.csproj
浏览文件 @
ab5ea49d
...
...
@@ -10,6 +10,21 @@
<ProjectReference Include="..\SimDriver\SimDriver.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy "$(TargetPath)" "$(SolutionDir)\Output" /y
copy "$(TargetDir)$(TargetName).exe" "$(SolutionDir)\Output" /y
if exist "$(TargetDir)$(TargetName).XML" copy "$(TargetDir)$(TargetName).XML" "$(SolutionDir)\Output\Xml" /y
if exist "$(TargetDir)$(TargetName).pdb" copy "$(TargetDir)$(TargetName).pdb" "$(SolutionDir)\Output" /y
copy "$(TargetDir)$(TargetName).runtimeconfig.json" "$(SolutionDir)\Output" /y" />
</Target>
...
...
DBStudio/Program.cs
浏览文件 @
ab5ea49d
此差异已折叠。
点击以展开。
DBStudio/Properties/Resources.Designer.cs
0 → 100644
浏览文件 @
ab5ea49d
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace
DBInStudioServer.Properties
{
using
System
;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[
global
::
System
.
CodeDom
.
Compiler
.
GeneratedCodeAttribute
(
"System.Resources.Tools.StronglyTypedResourceBuilder"
,
"16.0.0.0"
)]
[
global
::
System
.
Diagnostics
.
DebuggerNonUserCodeAttribute
()]
[
global
::
System
.
Runtime
.
CompilerServices
.
CompilerGeneratedAttribute
()]
internal
class
Resources
{
private
static
global
::
System
.
Resources
.
ResourceManager
resourceMan
;
private
static
global
::
System
.
Globalization
.
CultureInfo
resourceCulture
;
[
global
::
System
.
Diagnostics
.
CodeAnalysis
.
SuppressMessageAttribute
(
"Microsoft.Performance"
,
"CA1811:AvoidUncalledPrivateCode"
)]
internal
Resources
()
{
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[
global
::
System
.
ComponentModel
.
EditorBrowsableAttribute
(
global
::
System
.
ComponentModel
.
EditorBrowsableState
.
Advanced
)]
internal
static
global
::
System
.
Resources
.
ResourceManager
ResourceManager
{
get
{
if
(
object
.
ReferenceEquals
(
resourceMan
,
null
))
{
global
::
System
.
Resources
.
ResourceManager
temp
=
new
global
::
System
.
Resources
.
ResourceManager
(
"DBInStudioServer.Properties.Resources"
,
typeof
(
Resources
).
Assembly
);
resourceMan
=
temp
;
}
return
resourceMan
;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性
/// 重写当前线程的 CurrentUICulture 属性。
/// </summary>
[
global
::
System
.
ComponentModel
.
EditorBrowsableAttribute
(
global
::
System
.
ComponentModel
.
EditorBrowsableState
.
Advanced
)]
internal
static
global
::
System
.
Globalization
.
CultureInfo
Culture
{
get
{
return
resourceCulture
;
}
set
{
resourceCulture
=
value
;
}
}
/// <summary>
/// 查找类似 Invailed Parameter! 的本地化字符串。
/// </summary>
internal
static
string
ErroParameter
{
get
{
return
ResourceManager
.
GetString
(
"ErroParameter"
,
resourceCulture
);
}
}
/// <summary>
/// 查找类似 exit 的本地化字符串。
/// </summary>
internal
static
string
Exit
{
get
{
return
ResourceManager
.
GetString
(
"Exit"
,
resourceCulture
);
}
}
/// <summary>
/// 查找类似 manage a database 的本地化字符串。
/// </summary>
internal
static
string
GDMsg
{
get
{
return
ResourceManager
.
GetString
(
"GDMsg"
,
resourceCulture
);
}
}
/// <summary>
/// 查找类似 enter h for command help information 的本地化字符串。
/// </summary>
internal
static
string
HelpMsg
{
get
{
return
ResourceManager
.
GetString
(
"HelpMsg"
,
resourceCulture
);
}
}
/// <summary>
/// 查找类似 display command list 的本地化字符串。
/// </summary>
internal
static
string
HMsg
{
get
{
return
ResourceManager
.
GetString
(
"HMsg"
,
resourceCulture
);
}
}
}
}
DBStudio/Properties/Resources.resx
0 → 100644
浏览文件 @
ab5ea49d
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema
id=
"root"
xmlns=
""
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
xmlns:msdata=
"urn:schemas-microsoft-com:xml-msdata"
>
<xsd:import
namespace=
"http://www.w3.org/XML/1998/namespace"
/>
<xsd:element
name=
"root"
msdata:IsDataSet=
"true"
>
<xsd:complexType>
<xsd:choice
maxOccurs=
"unbounded"
>
<xsd:element
name=
"metadata"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
use=
"required"
type=
"xsd:string"
/>
<xsd:attribute
name=
"type"
type=
"xsd:string"
/>
<xsd:attribute
name=
"mimetype"
type=
"xsd:string"
/>
<xsd:attribute
ref=
"xml:space"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"assembly"
>
<xsd:complexType>
<xsd:attribute
name=
"alias"
type=
"xsd:string"
/>
<xsd:attribute
name=
"name"
type=
"xsd:string"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"data"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"1"
/>
<xsd:element
name=
"comment"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"2"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
type=
"xsd:string"
use=
"required"
msdata:Ordinal=
"1"
/>
<xsd:attribute
name=
"type"
type=
"xsd:string"
msdata:Ordinal=
"3"
/>
<xsd:attribute
name=
"mimetype"
type=
"xsd:string"
msdata:Ordinal=
"4"
/>
<xsd:attribute
ref=
"xml:space"
/>
</xsd:complexType>
</xsd:element>
<xsd:element
name=
"resheader"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
name=
"value"
type=
"xsd:string"
minOccurs=
"0"
msdata:Ordinal=
"1"
/>
</xsd:sequence>
<xsd:attribute
name=
"name"
type=
"xsd:string"
use=
"required"
/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader
name=
"resmimetype"
>
<value>
text/microsoft-resx
</value>
</resheader>
<resheader
name=
"version"
>
<value>
2.0
</value>
</resheader>
<resheader
name=
"reader"
>
<value>
System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader
name=
"writer"
>
<value>
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data
name=
"ErroParameter"
xml:space=
"preserve"
>
<value>
Invailed Parameter!
</value>
</data>
<data
name=
"Exit"
xml:space=
"preserve"
>
<value>
exit
</value>
</data>
<data
name=
"GDMsg"
xml:space=
"preserve"
>
<value>
manage a database
</value>
</data>
<data
name=
"HelpMsg"
xml:space=
"preserve"
>
<value>
enter h for command help information
</value>
</data>
<data
name=
"HMsg"
xml:space=
"preserve"
>
<value>
display command list
</value>
</data>
</root>
\ No newline at end of file
DBStudio/Res.cs
0 → 100644
浏览文件 @
ab5ea49d
//==============================================================
// Copyright (C) 2020 Inc. All rights reserved.
//
//==============================================================
// Create by 种道洋 at 2020/3/29 11:05:05.
// Version 1.0
// 种道洋
//==============================================================
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Threading
;
namespace
DBStudio
{
public
class
Res
{
public
static
string
Get
(
string
name
)
{
return
DBInStudioServer
.
Properties
.
Resources
.
ResourceManager
.
GetString
(
name
,
Thread
.
CurrentThread
.
CurrentCulture
);
}
}
}
DataRunner/His/Compress/Special/LosslessCompressUnit.cs
浏览文件 @
ab5ea49d
...
...
@@ -55,33 +55,33 @@ namespace Cdy.Tag
/// <returns></returns>
public
override
long
Compress
(
MarshalMemoryBlock
source
,
long
sourceAddr
,
MarshalMemoryBlock
target
,
long
targetAddr
,
long
size
)
{
target
.
Write
(
this
.
StartTime
);
target
.
Write
Datetime
(
targetAddr
,
this
.
StartTime
);
switch
(
TagType
)
{
case
TagType
.
Bool
:
return
Compress
<
bool
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
bool
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
Byte
:
return
Compress
<
byte
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
byte
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
UShort
:
return
Compress
<
ushort
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
ushort
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
Short
:
return
Compress
<
short
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
short
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
UInt
:
return
Compress
<
uint
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
uint
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
Int
:
return
Compress
<
int
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
int
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
ULong
:
return
Compress
<
ulong
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
ulong
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
Long
:
return
Compress
<
long
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
long
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
Double
:
return
Compress
<
double
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
double
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
Float
:
return
Compress
<
float
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
float
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
String
:
return
Compress
<
string
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
string
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
case
TagType
.
DateTime
:
return
Compress
<
DateTime
>(
source
,
sourceAddr
,
target
,
targetAddr
,
size
)
+
8
;
return
Compress
<
DateTime
>(
source
,
sourceAddr
,
target
,
targetAddr
+
8
,
size
)
+
8
;
}
return
8
;
}
...
...
@@ -97,9 +97,9 @@ namespace Cdy.Tag
int
preids
=
0
;
mVarintMemory
.
Position
=
0
;
bool
isFirst
=
true
;
for
(
int
i
=
1
;
i
<
timerVals
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
timerVals
.
Count
;
i
++)
{
if
(
timerVals
[
i
]
>
0
)
if
(
timerVals
[
i
]
>
0
||
i
==
0
)
{
var
id
=
timerVals
[
i
];
if
(
isFirst
)
...
...
@@ -556,7 +556,7 @@ namespace Cdy.Tag
//byte[] qus = null;
int
rcount
=
count
-
emptys
.
Count
;
target
.
Write
(
(
ushort
)
rcount
);
target
.
Write
UShort
(
targetAddr
,
(
ushort
)
rcount
);
rsize
+=
2
;
target
.
Write
((
int
)
datas
.
Length
);
target
.
Write
(
datas
);
...
...
@@ -788,8 +788,9 @@ namespace Cdy.Tag
for
(
int
i
=
1
;
i
<
count
;
i
++)
{
var
ss
=
(
ushort
)
memory
.
ReadInt32
();
re
.
Add
((
ushort
)(
preval
+
ss
));
preval
=
ss
;
var
val
=
(
ushort
)(
preval
+
ss
);
re
.
Add
(
val
);
preval
=
val
;
}
return
re
;
}
...
...
@@ -1049,7 +1050,7 @@ namespace Cdy.Tag
public
virtual
int
DeCompressALlValue
<
T
>(
MarshalMemoryBlock
source
,
int
sourceAddr
,
DateTime
startTime
,
DateTime
endTime
,
int
timeTick
,
HisQueryResult
<
T
>
result
)
{
int
count
=
0
;
var
timers
=
GetTimers
(
source
,
sourceAddr
+
8
,
startTime
,
endTime
,
timeTick
,
out
count
);
var
timers
=
GetTimers
(
source
,
sourceAddr
,
startTime
,
endTime
,
timeTick
,
out
count
);
var
valuesize
=
source
.
ReadInt
();
var
value
=
DeCompressValue
<
T
>(
source
.
ReadBytes
(
valuesize
),
count
);
...
...
DataRunner/His/Compress/Special/NoneCompressUnit.cs
浏览文件 @
ab5ea49d
...
...
@@ -48,7 +48,7 @@ namespace Cdy.Tag
/// <returns></returns>
public
override
long
Compress
(
MarshalMemoryBlock
source
,
long
sourceAddr
,
MarshalMemoryBlock
target
,
long
targetAddr
,
long
size
)
{
target
.
Write
(
this
.
StartTime
);
target
.
Write
Datetime
(
targetAddr
,
this
.
StartTime
);
target
.
Write
((
ushort
)(
size
-
this
.
QulityOffset
));
//写入值的个数
if
(
size
>
0
)
source
.
CopyTo
(
target
,
sourceAddr
,
targetAddr
+
10
,
size
);
...
...
DataRunner/His/HisEnginer.cs
浏览文件 @
ab5ea49d
...
...
@@ -210,31 +210,31 @@ namespace Cdy.Tag
{
case
Cdy
.
Tag
.
TagType
.
Bool
:
case
Cdy
.
Tag
.
TagType
.
Byte
:
mHisTag
=
new
ByteHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
};
mHisTag
=
new
ByteHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
,
CompressType
=
vv
.
Value
.
CompressType
,
Parameters
=
vv
.
Value
.
Parameters
};
break
;
case
Cdy
.
Tag
.
TagType
.
Short
:
case
Cdy
.
Tag
.
TagType
.
UShort
:
mHisTag
=
new
ShortHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
};
mHisTag
=
new
ShortHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
,
CompressType
=
vv
.
Value
.
CompressType
,
Parameters
=
vv
.
Value
.
Parameters
};
break
;
case
Cdy
.
Tag
.
TagType
.
Int
:
case
Cdy
.
Tag
.
TagType
.
UInt
:
mHisTag
=
new
IntHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
};
mHisTag
=
new
IntHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
,
CompressType
=
vv
.
Value
.
CompressType
,
Parameters
=
vv
.
Value
.
Parameters
};
break
;
case
Cdy
.
Tag
.
TagType
.
Long
:
case
Cdy
.
Tag
.
TagType
.
ULong
:
mHisTag
=
new
LongHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
};
mHisTag
=
new
LongHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
,
CompressType
=
vv
.
Value
.
CompressType
,
Parameters
=
vv
.
Value
.
Parameters
};
break
;
case
Cdy
.
Tag
.
TagType
.
Float
:
mHisTag
=
new
FloatHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
};
mHisTag
=
new
FloatHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
,
CompressType
=
vv
.
Value
.
CompressType
,
Parameters
=
vv
.
Value
.
Parameters
};
break
;
case
Cdy
.
Tag
.
TagType
.
Double
:
mHisTag
=
new
DoubleHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
};
mHisTag
=
new
DoubleHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
,
CompressType
=
vv
.
Value
.
CompressType
,
Parameters
=
vv
.
Value
.
Parameters
};
break
;
case
Cdy
.
Tag
.
TagType
.
DateTime
:
mHisTag
=
new
DateTimeHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
};
mHisTag
=
new
DateTimeHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
,
CompressType
=
vv
.
Value
.
CompressType
,
Parameters
=
vv
.
Value
.
Parameters
};
break
;
case
Cdy
.
Tag
.
TagType
.
String
:
mHisTag
=
new
StirngHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
};
mHisTag
=
new
StirngHisRunTag
()
{
Id
=
vv
.
Value
.
Id
,
Circle
=
vv
.
Value
.
Circle
,
Type
=
vv
.
Value
.
Type
,
TagType
=
vv
.
Value
.
TagType
,
RealMemoryAddr
=
realbaseaddr
,
RealMemoryPtr
=
realHandle
,
RealValueAddr
=
realaddr
,
CompressType
=
vv
.
Value
.
CompressType
,
Parameters
=
vv
.
Value
.
Parameters
};
break
;
}
mHisTag
.
MaxCount
=
count
;
...
...
DataRunner/His/Serise/LocalFileSeriser.cs
浏览文件 @
ab5ea49d
...
...
@@ -377,6 +377,21 @@ namespace Cdy.Tag
return
false
;
}
/// <summary>
///
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public
override
bool
OpenForReadOnly
(
string
filename
)
{
if
(
System
.
IO
.
File
.
Exists
(
filename
))
{
mStream
=
System
.
IO
.
File
.
Open
(
filename
,
FileMode
.
Open
,
FileAccess
.
Read
,
FileShare
.
ReadWrite
);
return
true
;
}
return
false
;
}
/// <summary>
///
/// </summary>
...
...
@@ -485,5 +500,7 @@ namespace Cdy.Tag
//LoggerService.Service.Info("LocalFileSeriser", "写入文件耗时:" + sw.ElapsedMilliseconds + " 文件大小:" + len / 1024.0 / 1024.0);
return
this
;
}
}
}
DataRunner/His/TimerMemoryCacheProcesser.cs
浏览文件 @
ab5ea49d
...
...
@@ -126,7 +126,7 @@ namespace Cdy.Tag
public
void
Stop
()
{
mIsClosed
=
true
;
closedEvent
.
WaitOne
();
closedEvent
.
WaitOne
(
1000
);
}
/// <summary>
...
...
DataRunner/His/ValueChangedMemoryCacheProcesser.cs
浏览文件 @
ab5ea49d
...
...
@@ -128,7 +128,7 @@ namespace Cdy.Tag
public
void
Stop
()
{
mIsClosed
=
true
;
closedEvent
.
WaitOne
();
closedEvent
.
WaitOne
(
1000
);
}
/// <summary>
...
...
HisDataTools/View/HisDataQueryView.xaml
浏览文件 @
ab5ea49d
...
...
@@ -9,6 +9,7 @@
d:DesignHeight="450" d:DesignWidth="926">
<UserControl.Resources>
<res:IndexConverter x:Key="ic" />
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
...
...
@@ -61,7 +62,7 @@
<DataGridTemplateColumn IsReadOnly="True" Width="200" MinWidth="60" Header="{res:ResMarker DateTime}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock HorizontalAlignment="Center" Text="{Binding DateTime}" VerticalAlignment="Center" />
<TextBlock HorizontalAlignment="Center" Text="{Binding DateTime
String
}" VerticalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
...
...
HisDataTools/ViewModel/HisDataQueryModel.cs
浏览文件 @
ab5ea49d
...
...
@@ -337,6 +337,15 @@ namespace HisDataTools.ViewModel
/// </summary>
public
DateTime
DateTime
{
get
;
set
;
}
public
string
DateTimeString
{
get
{
return
DateTime
.
ToString
(
"yyyy-MM-dd HH:mm:ss.fff"
);
}
}
/// <summary>
///
/// </summary>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录