《连载 | 物联网框架ServerSuperIO教程》- 15.数据持久化接口的使用。附:3.2发布与版本更新说明。

本文涉及的产品
物联网平台,标准版 1个月
IoT设备身份认证,上限1000台 1个月
简介: 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。 《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。
+关注继续查看

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进行数据持久化。


1.[连载]《C#通讯(串口和网络)框架的设计与实现》

2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍

2.应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案

3.C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)

5.ServerSuperIO开源地址:https://github.com/wxzz/ServerSuperIO

物联网&集成技术(.NET) QQ群54256083 

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
EMQ
|
4月前
|
存储 监控 网络协议
工业物联网数据桥接教程:Modbus 桥接到 MQTT
通过将 Modbus RTU 或 TCP 转换为 MQTT 消息,可以轻松地将设备数据发送到云端,并在需要时进行远程控制和监控。
EMQ
310 0
工业物联网数据桥接教程:Modbus 桥接到 MQTT
|
11月前
|
JSON JavaScript 物联网
阿里云物联网IOT平台使用案例教程(模拟智能设备)
阿里云物联网IOT平台使用案例教程(模拟智能设备)
|
监控 物联网 网络性能优化
物联网云智能开发—EMQ X云服务器搭建及测试教程
物联网云智能开发—EMQ X云服务器搭建及测试教程
1546 0
物联网云智能开发—EMQ X云服务器搭建及测试教程
|
存储 传感器 物联网
物联网云智能开发—MosQuitto服务器的安装 测试 订阅&发布及加密教程
物联网云智能开发—MosQuitto服务器的安装 测试 订阅&发布及加密教程
414 0
物联网云智能开发—MosQuitto服务器的安装 测试 订阅&发布及加密教程
|
监控 物联网 数据安全/隐私保护
物联网云智能开发—EMQ X云服务器搭建及测试教程
玩物联网,当然要自己搭建物联网云平台。一方面可以有更多的功能定制空间,同时学习网络建站,最重要的是运营成本。作为普通开发者,使用阿里云、腾讯云、OneNet等免费实例固然香,但是一旦开通企业版并上线后,费用就会异常高,高到离谱。 自己家庭构建云服务器,受限于没有公网IP,也略麻烦。而使用大厂的云服务器,除了有公网IP,也不用担心断电、断网、外部网络攻击。一键系统部署、在线后台查看、云端系统快照,这些功能也大大方便了用户。总之比自己买硬件建站要方便太多。
|
物联网
【连载】物联网全栈教程-从云端到设备(一) 故事背景
一     2016年的时候,我还在学校里面准备着毕业论文,当时做的课题是预测一个挖掘机上面的一个继电器的寿命。我们的想法是检测其吸合的次数,然后根据吸合的次数来预计其寿命,这个想法很简单。因为一个继电器失效之前通常会正常吸合一定的次数比如10W次。
3208 0
|
物联网 传感器 网络协议
【连载,完结】物联网全栈教程-从云端到设备---简单介绍单片机代码,裸机上云!
物联网全栈教程-从云端到设备(完结 十四) 一 设备端的开发是一个非常简单的工作。零妖今天就简单讲解一下物联网弹幕器这个设备的源代码,给大家提供一个裸机上云的思路。连载文章更新到这里要告一段落,因为真的没啥要讲的了。
6442 0
相关产品
物联网平台
推荐文章
更多