《連載 | 物聯網框架ServerSuperIO教程》- 13.自定義檢視顯示介面開發,滿足不同的顯示需求
阿新 • • 發佈:2018-12-27
目 錄
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上開發好檢視介面後,完全可以在二次開發套件下掛載和執行(二次開發套件下載)。在進行二次開時,有幾點特別需要注意:
- ShowGraphics(IWin32Window windows)介面,windows引數是當前顯示檢視的父窗體,如果父窗體設定了IsMdiContainer=true,那麼可以設定當前顯示檢視showForm.MdiParent = (Form)windows。
- UpdateDevice(string devid, object obj)實時資料更新介面,如果二次開發的檢視的例項增加到當前服務例項中,那麼裝置驅動會通過OnDeviceObjectChanged資料改變事件通知檢視的UpdateDevice介面進行資料更新。OnDeviceObjectChanged何時觸發,完全由二次開發者自己把控。
- OnGraphicsShowClosed檢視關閉事件介面,當前檢視進行關閉時,一定要觸發這個事件,ServerSuperIO會自動釋放資源,並把當前檢視例項從服務例項中銷燬,以便下次能夠正常顯示。
- 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 裝置驅動開發及注意事項
- 給檢視例項傳遞資料資訊,通過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 執行效果
物聯網&整合技術(.NET) QQ群:54256083