《连载 | 物联网框架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 

相关文章
相关标签/搜索