物聯網框架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進行數據持久化。


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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM