物联网框架ServerSuperIO
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接口,具体代码定义发下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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存储数据为例,代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
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操作。
具体定义方法,如下代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class DeviceDyn:DeviceDynamic{ public DeviceDyn() : base() { this.InitDataPersistence(new XmlPersistence()); } public override string GetAlertState() { throw new NotImplementedException("无报警信息"); } public float Flow{set;get;}} |
具体使用方法,如下代码:
|
1
2
3
4
|
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群:54256083
物联网框架ServerSuperIO的更多相关文章
- 《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。附小文:招.NET开发,结果他转JAVA了,一切都是为了生活
参考文章: 1.SuperIO通讯框架介绍,含通信本质 2.C#跨平台物联网通讯框架ServerSuperIO(SSIO) 一.感慨 上大学的时候,没有学过C#,花了5块钱在地坛书市买了一本教程,也就 ...
- 《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制 一.综述 SuperIO(SIO)定位 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 6.并发通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 7.自控通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 8.单例通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 9. 协议过滤器,解决一包多发、粘包、冗余数据
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
随机推荐
- MySQL 数据库 简单操作命令 (部分总结)
1.查看进程方式查看数据库 ps - ajx|grep mysql 2.登录 MySQL mysql -u用户名 -p密码 3.开启服务 sudo service mysql start 4.停止服务 ...
- git-------基础知识(本地推送项目版本---github上)
创建Git仓库 一:初始化版本库:-git init 二:添加文件到缓存区:-git add --添加所有文件 是:加个点-列:git add . 三:查看仓库状态:-git status 四:添加 ...
- 《Java大学教程》—第18章 高级图形编程
自测题:1. 在图形应用程序中为用户提供选择的多种方式:P433下拉菜单(pull-down menu).弹出式菜单(pop-up menu).对话框窗口(dialogue window).单选 ...
- C# SHA256加密算法记录
using System.Text; using System.Diagnostics; using System.Security; using System.Security.Cryptograp ...
- Spring Web项目spring配置文件随服务器启动时自动加载
前言:其实配置文件不随服务器启动时加载也是可以的,但是这样操作的话,每次获取相应对象,就会去读取一次配置文件,从而降低程序的效率,而Spring中已经为我们提供了监听器,可监听服务器是否启动,然后在启 ...
- 利用nginx搭建小型的文件服务器
PS内的文件如果需要共享给其他计算机下载,可以选择ftp的方式,优点是操作性很高,修改删除下载等等都可以,但是速度略慢. 如果仅仅是将VPS作为文件中转站,可以尝试用Nginx架设一个简单的文件服务器 ...
- 1.01-url-open_code
import urllib.request def load_data(): url = "http://www.baidu.com/" #get的请求 #http请求 #resp ...
- UVA1374-Power Calculus(迭代加深搜索)
Problem UVA1374-Power Calculus Accept:107 Submit:584 Time Limit: 3000 mSec Problem Description In ...
- 需要熟练的Python知识点
数据与列表元祖字符串 repr(x) 将对象x转换为表达式字符串 eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象 unichr(x) 将一个整数转换为Unicode字符 ...
- 吴恩达课后作业学习2-week2-优化算法
参考:https://blog.csdn.net/u013733326/article/details/79907419 希望大家直接到上面的网址去查看代码,下面是本人的笔记 我们需要做以下几件事: ...