《连载 | 物联网框架ServerSuperIO教程》- 15.数据持久化接口的使用。附:3.2发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍
《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。
《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍
《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。
《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。
《连载 | 物联网框架ServerSuperIO教程》- 6.并发通讯模式开发及注意事项
《连载 | 物联网框架ServerSuperIO教程》- 7.自控通讯模式开发及注意事项
《连载 | 物联网框架ServerSuperIO教程》- 8.单例通讯模式开发及注意事项
《连载 | 物联网框架ServerSuperIO教程》- 9. 协议过滤器,解决一包多发、粘包、冗余数据
《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)
《连载 | 物联网框架ServerSuperIO教程》- 11.实现设备(驱动)与设备(驱动)交互和级联控制。
《连载 | 物联网框架ServerSuperIO教程》- 12.服务接口的开发,以及与云端双向交互
《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显示接口开发,满足不同的显示需求
《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动、视图驱动、服务实例的挂载
ServerSuperIO 3.2更新说明:
1.增加IDataPersistence数据持久化接口,可以以多种形式存储设备的参数和实时数据。现在仅支持Xml序列化的方式,后期会支持MongoDB、influxdb和实时数据库(类似PI)等。
2.增加r配制参数ComNullInterval和NetNullInterval等,轮询模式下,串口和网络IO通道为空的情况下,中断时间间隔。
下载地址:http://pan.baidu.com/s/1c1ZZLOO
更新说明地址:http://www.bmpj.net/thread-36-1-1.html
目 录
15.数据持久化接口的使用... 2
15.1 概述... 2
15.2 定义IDataPersistence数据持久化接口... 2
15.3 使用IDataPersistence数据持久化接口... 5
15.数据持久化接口的使用
15.1 概述
ServerSuperIO 3.2版本以前,设备数据仅支持Xml序列化的方式,如果以其他方式存储数据,那么只能把持久化操作写在设备驱动中,本质上失去了模块化的灵活性。3.2 版本以后增加了数据持久化接口,方便支持多种形式存储设备的参数数据和实时数据,3.2版本里现在仅支持Xml序列化的方式,后期会支持MongoDB、influxdb和实时数据库(类似PI)等
15.2 定义IDataPersistence数据持久化接口
1.接口定义
凡是涉及到不同数据存储方式的都可以继承IDataPersistence接口,具体代码定义发下:
public interface IDataPersistence
{
/// <summary>
/// 连接数据源
/// </summary>
void Connect(); /// <summary>
/// 选择数据对象
/// </summary>
/// <param name="devid"></param>
/// <param name="objType"></param>
/// <returns></returns>
object Select(string devid, Type objType); /// <summary>
/// 插入数据对象
/// </summary>
/// <param name="devid"></param>
/// <param name="obj"></param>
void Insert(string devid, object obj); /// <summary>
/// 更新数据对象
/// </summary>
/// <param name="devid"></param>
/// <param name="obj"></param>
void Update(string devid, object obj); /// <summary>
/// 删除数据对象
/// </summary>
/// <param name="devid"></param>
/// <param name="obj"></param>
void Delete(string devid,object obj); /// <summary>
/// 判断是否存在
/// </summary>
/// <param name="devid"></param>
/// <param name="obj"></param>
/// <returns></returns>
bool Exist(string devid,object obj);
}
2.接口实现形式
如果以MongoDB、influxdb和实时数据库,那么都可以继承IDataPersistence接口,下面以Xml存储数据为例,代码如下:
public class XmlPersistence:IXmlPersistence
{
public void Connect()
{} public object Select(string devid, Type objType)
{
string path = GetSavePath(devid,objType);
return SerializeUtil.XmlDeserailize(path, objType);
} public void Insert(string devid, object obj)
{
string path = GetSavePath(devid,obj.GetType());
SerializeUtil.XmlSerialize(path, obj);
} public void Update(string devid, object obj)
{
this.Insert(devid, obj);
} public void Delete(string devid,object obj)
{
string path = GetSavePath(devid,obj.GetType());
if (System.IO.File.Exists(path))
{
System.IO.File.Delete(path);
}
} public bool Exist(string devid, object obj)
{
string path = GetSavePath(devid, obj.GetType());
return System.IO.File.Exists(path);
}
......
}
15.3 使用IDataPersistence数据持久化接口
ServerSuperIO框架二次开发的设备驱动涉及到两类数据:设备参数和实时数据。这两类数据都对应着基类:DeviceParameter和DeviceDynamic。每个设备驱动可能对应着不同的设备参数(系数等)和实时数据(温度、湿度、流量等),因为涉及到不同的硬件设备和传感器。可以分别继承DeviceParameter和DeviceDynamic两个基类,这两个基类都具有InitDataPersistence(IDataPersistence dataPersistence)接口,实现不同的数据持久化存储接口,并进行Save、Load和Delete操作。
具体定义方法,如下代码:
public class DeviceDyn:DeviceDynamic
{
public DeviceDyn() : base()
{
this.InitDataPersistence(new XmlPersistence());
} public override string GetAlertState()
{
throw new NotImplementedException("无报警信息");
} public float Flow{set;get;}
}
具体使用方法,如下代码:
DeviceDyn dyn=new DeviceDyn();
dyn.Save(); //保存
dyn.Load(); //加载
dyn.Delete();//删除
注:this.InitDataPersistence()不进行此操作,默认使用XmlPersistence进行数据持久化。
2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍
2.应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案
3.C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)
5.ServerSuperIO开源地址:https://github.com/wxzz/ServerSuperIO
物联网&集成技术(.NET) QQ群:
《连载 | 物联网框架ServerSuperIO教程》- 15.数据持久化接口的使用。附:3.2发布与版本更新说明。的更多相关文章
- 《连载 | 物联网框架ServerSuperIO教程》- 17.支持实时数据库,高并发保存测点数据。附:3.4 发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 18.集成OPC Client,及使用步骤
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 17.集成Golden实时数据库,高并发保存测点数据。附:3.4 发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 9. 协议过滤器,解决一包多发、粘包、冗余数据
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显示接口开发,满足不同的显示需求
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动、视图驱动、服务实例的挂载
注:ServerSuperIO二次开发套件授权码申请---截止到:2016-12-09 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架Server ...
- 《连载 | 物联网框架ServerSuperIO教程》- 16.OPC Server的使用步骤。附:3.3 发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 16.集成OPC Server,及使用步骤。附:3.3 发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
随机推荐
- redis对比memcached
摘要 : 简单地比较Redis与Memcached的区别,大多数都会得到以下观点: 1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储. 2 Re ...
- Cocos2dx 学习笔记整理----场景切换
据说Cocos2dx场景切换的方法有32种:cocos2dx 常见的32种切换场景的动画 无需一一求证,只需要知道切换场景需要怎么做就行了. 作为导演CCDirector,切换场景的事情当然归它管了. ...
- 对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误
在Java中修饰符总共有一下几种: 1.访问控制修饰符 分别有:public private protected,缺省 2.其它修饰符 分别有:abstract,final,stati ...
- svn第一篇----入门指南
摘要:trunk存放的是主代码,不修改,branch,tag,milestone均是从trunk中衍生的.branch复制trunk中代码用于开发,tag用于存放比较重要的发行版,存放release版 ...
- JS、html打开超链接的几种形式
1.直接使用input在原有的标签页中直接打开一个页面,将原有标签页覆盖 在按钮中直接打开一个连接,这里不需要用到js的代码,根据HTML中的onclick属性 <input type=&quo ...
- ajax原理图解
Ajax 原理图解 摘自: http://www.nowamagic.net/ajax/ajax_PicForAjaxPrinciple.php Ajax其实已经使用很久了,但一直也没有时间正经的找本 ...
- D Vitamin - the wonder vitamin
原文 Be healthier and happier by spending time in the sun In the dead of winter,we don't typically thi ...
- Thinking in scala (5)----高阶函数*
高阶函数是函数式编程里面一个非常重要的特色,所谓的高阶函数,就是以其它函数作为参数的函数. 下面以一个小例子演示Scala的高阶函数特性,非常有意思,也非常强大. 首先看这么一个程序: code1: ...
- UVa 10057 - A mid-summer night's dream
题目大意:给n个数,找一个数A使得A与这n个数的差的绝对值最小.输出A最小的可能值,n个数中满足A的性质的数的个数以及满足A性质的不同的数的个数(不必从这n个数中挑选). 看见绝对值就想到了数轴上点之 ...
- OC纯代码全手工打造ScroolView实现翻页
OC纯代码全手工打造ScroolView实现翻页 1. 概述 分为三部分: 上部标题ScrollView 下部内容ScrollView 上部当前页 标示线 2. 效果 上下两部分都随着手势的滑动一块滑 ...