《連載 | 物聯網框架ServerSuperIO教程》- 13.自定義視圖顯示接口開發,知足不一樣的顯示需求

1.C#跨平臺物聯網通信框架ServerSuperIO(SSIO)介紹html

《連載 | 物聯網框架ServerSuperIO教程》1.4種通信模式機制。git

《連載 | 物聯網框架ServerSuperIO教程》2.服務實例的配置參數說明github

《連載 | 物聯網框架ServerSuperIO教程》- 3.設備驅動介紹windows

《連載 | 物聯網框架ServerSuperIO教程》-4.如開發一套設備驅動,同時支持串口和網絡通信。緩存

《連載 | 物聯網框架ServerSuperIO教程》- 5.輪詢通信模式開發及注意事項。網絡

《連載 | 物聯網框架ServerSuperIO教程》- 6.併發通信模式開發及注意事項併發

《連載 | 物聯網框架ServerSuperIO教程》- 7.自控通信模式開發及注意事項框架

《連載 | 物聯網框架ServerSuperIO教程》- 8.單例通信模式開發及注意事項ide

《連載 | 物聯網框架ServerSuperIO教程》- 9. 協議過濾器,解決一包多發、粘包、冗餘數據函數

《連載 | 物聯網框架ServerSuperIO教程》- 10.持續傳輸大塊數據流的兩種方式(如:文件)

《連載 | 物聯網框架ServerSuperIO教程》- 11.實現設備(驅動)與設備(驅動)交互和級聯控制。

《連載 | 物聯網框架ServerSuperIO教程》- 12.服務接口的開發,以及與雲端雙向交互


 

目       錄

13.自定義視圖顯示接口開發,知足不一樣的顯示需求... 2

13.1        概述... 2

13.2        視圖顯示接口... 2

13.3        設備驅動開發及注意事項... 4

13.4        運行效果... 5

13.自定義視圖顯示接口開發,知足不一樣的顯示需求

13.1     概述

    若是ServerSuperIO部署在服務端,那麼徹底沒有必要在SSIO視圖接口上進行視圖顯示開發,能夠用WEB端來作。若是ServerSuperIO部署在PC機端或者嵌入式主機,而且帶現場顯示屏幕,那麼就須要有實時顯示的界面,以及知足現場用戶的不一樣需求。針對這種狀況,ServerSuperIO內部提供了視圖顯示接口,設備驅動提取完成數據後,能夠把數據實時傳輸給視圖接口,能夠當即顯示,也能夠先緩存數據,定時進行顯示;  能夠幾個設備驅動的數據顯示在一個視圖,也能夠所有設備驅動的數據顯示在一個視圖。示意以下圖:

 

13.2     視圖顯示接口

    視圖抽象類GraphicsShow繼承自IGraphicsShow接口,進行二次開發能夠繼承GraphicsShow抽象類。在ServerSuperIO上開發好視圖接口後,徹底能夠在二次開發套件下掛載和運行(二次開發套件下載)。在進行二次開時,有幾點特別須要注意:

  1. ShowGraphics(IWin32Window windows)接口,windows參數是當前顯示視圖的父窗體,若是父窗體設置了IsMdiContainer=true,那麼能夠設置當前顯示視圖showForm.MdiParent = (Form)windows。
  2. UpdateDevice(string devid, object obj)實時數據更新接口,若是二次開發的視圖的實例增長到當前服務實例中,那麼設備驅動會經過OnDeviceObjectChanged數據改變事件通知視圖的UpdateDevice接口進行數據更新。OnDeviceObjectChanged什麼時候觸發,徹底由二次開發者本身把控。
  3. OnGraphicsShowClosed視圖關閉事件接口,當前視圖進行關閉時,必定要觸發這個事件,ServerSuperIO會自動釋放資源,並把當前視圖實例從服務實例中銷燬,以便下次可以正常顯示。
  4. MouseRightContextMenu上下文菜單顯示接口,若是右鍵單擊當前視圖顯示的某個設備視圖時,能夠調用這個上下文菜單接口,會調用設備驅動IRunDevice接口的ShowContextMenu函數,能夠在這個函數中展現上下文菜單。這個功能特別有用,由於針對不一樣類型的設備驅動功能不同,能夠經過上下文菜單自定義該類型設備的功能特性。

   GraphicsShow接口代碼定義以下:

public interface IGraphicsShow : IPlugin
    {
        /// <summary>
        ///     視圖Key,要求惟一
        /// </summary>
        string ShowKey { get;}

        /// <summary>
        ///     視圖名稱
        /// </summary>
        string ShowName { get; }

        /// <summary>
        /// 顯示窗體
        /// </summary>
        /// <param name="windows"></param>
        void ShowGraphics(IWin32Window windows);

        /// <summary>
        ///
        /// </summary>
        void CloseGraphics();

        /// <summary>
        ///     更新設備
        /// </summary>
        /// <param name="devCode">設備code</param>
        /// <param name="obj">設備對象</param>
        void UpdateDevice(string devCode, object obj);

        /// <summary>
        ///     移除設備
        /// </summary>
        /// <param name="devCode">設備code</param>
        void RemoveDevice(string devCode);

        /// <summary>
        ///     關閉窗體事件時發生
        /// </summary>
        event GraphicsShowClosedHandler GraphicsShowClosed;

        /// <summary>
        ///     單擊右鍵,調用上下文菜單
        /// </summary>
        event MouseRightContextMenuHandler MouseRightContextMenu;

        /// <summary>

        /// 是否被釋放
        /// </summary>
        bool IsDisposed { get; }
    }

13.3     設備驅動開發及注意事項

  1. 給視圖實例傳遞數據信息,經過OnDeviceObjectChanged事件。代碼以下:
List<string> list = new List<string>();
list.Add(_devicePara.DeviceCode);
list.Add(_devicePara.DeviceName);
list.Add(_deviceDyn.Dyn.Flow.ToString());
list.Add(_deviceDyn.Dyn.Signal.ToString());
OnDeviceObjectChanged(list.ToArray());

     2.顯示上下文菜單,視圖接口的MouseRightContextMenu會調用設備驅動的ShowContextMenu接口函數。代碼以下:

 public override void ShowContextMenu()
        {
            this._contextMenuComponent.ContextMenuStrip.Show(Cursor.Position);
        }

13.4     運行效果

 


 

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 

相關文章
相關標籤/搜索