快捷搜索:
来自 计算机编程 2019-12-01 04:19 的文章
当前位置: 67677新澳门手机版 > 计算机编程 > 正文

物联网框架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.缕缕传输大块数据流的三种方法(如:文件)


 

目       录

11.贯彻设备(驱动)与器具(驱动)级联调整... 2

11.1         概述... 2

11.2         设备链接器... 2

11.3         场景即使... 3

11.4         设备驱动开垦及注意事项... 3

11.5         宿主程序服务实例配置注意事项... 5

11.6         运营效果... 6

11.实现设备(驱动)与器材(驱动)级联调节     

11.1     概述

    物联网建设中数量搜集是根基,进行调节是目标,这是五个根本因素。在收罗设备数据的时候,如若该装置的实时数据现身万分,那么是不是存在任何设施要扩充联合浮动?相当于说一个配备出现格外之后,要对其他某些设备开展联合浮动调节,以完成制止出现越来越大危急的状态。

    那么不仅仅要对某些设备实行联合浮动调控,还要对调节的结果开展反馈给现身相当的配备。产生特别、联合浮动、调整、反馈的闭环,以高达监测与垄断共同效率的指标。

11.2     设备链接器

      IRunDevice设备驱动接口世襲了IDeviceConnector设备链接器接口,以便使装备驱动与设施驱动之间能够双向相互作用,完毕数量传递与命令调节的指标。接口的定义如下:

public interface IDeviceConnector
    {
        /// <summary>
        /// 支行设备连接器
        /// </summary>
        /// <param name="fromDevice">信息传递的发送端</param>
        /// <param name="toDevice">信息传递的目的端,以及包含的数据信息</param>
        /// <returns></returns>
        object RunDeviceConnector(IFromDevice fromDevice, IDeviceToDevice toDevice);

        /// <summary>
        /// 设备连接器回调函数,在这里写回调的处理结果
        /// </summary>
        /// <param name="obj"></param>
        void DeviceConnectorCallback(object obj);

        /// <summary>
        /// 如果执行方出现异常,则返回给这个函数结果
        /// </summary>
        /// <param name="ex"></param>
        void DeviceConnectorCallbackError(Exception ex);

        /// <summary>
        /// 连接器事件,发起端
        /// </summary>
        event DeviceConnectorHandler DeviceConnector;

        /// <summary>
        /// 确发事件接口
        /// </summary>
        /// <param name="fromDevice"></param>
        /// <param name="toDevice"></param>
        void OnDeviceConnector(IFromDevice fromDevice, IDeviceToDevice toDevice);
}

    通过这一个接口定义,可以获知经过OnDeviceConnector事件触发音信传送的初步端,会把新闻传递给选用信息端设备驱动的RunDeviceConnector接口函数,推行完RunDeviceConnector函数后,会把结果数据重返给发送端设备驱动的DeviceConnectorCallback接口函数,借使接纳数据端设备驱动推行RunDeviceConnector进程中出现分外,则会调用发起端设备驱动的DeviceConnectorCallbackError接口函数,至此整个工艺流程甘休。

11.3     场景如果

    0号设备驱动的名称为金三,1号配备驱动的名目叫普京总统。金三得悉大韩民国时期朴大妈事件后,问普京大帝:四弟,朴大姑怎么还不下课?。普京总统回答:你不感觉那才是的确的英剧吗?傻小子。金三说:奥黑也真够坑爹的!成功全数流程的音信传送。

11.4     设备驱动开发及注意事项

  1. 金三接到音信后,发起消息传送。触发OnDeviceConnector事件,并把IDeviceToDevice接口deviceCode参数设置为1,指向传递给弗拉基米罗维奇·普京。代码如下:

    public override void Communicate(ServerSuperIO.Communicate.IRequestInfo info)

        {
            byte[] cmds = this.Protocol.GetCommand(info.Data);
            CommandArray cr = (CommandArray)cmds[0];
            dynamic obj = this.Protocol.DriverAnalysis<byte[]>(cr.ToString(), info.Data, info.BigData);
            if (obj != null)
            {
                if (cr == CommandArray.RealTimeData)
                {
                    _deviceDyn.Dyn = (Dyn)obj;
                    OnDeviceRuningLog("通讯正常");
    
                    Console.WriteLine(">>>>模拟控制命令开始");
                    this.OnDeviceConnector(new FromDevice(this.DeviceParameter.DeviceID,this.DeviceParameter.DeviceCode,this.DeviceParameter.DeviceAddr,this.DeviceParameter.DeviceName),new DeviceToDevice("1",this.DeviceParameter.DeviceName "问:大哥,朴大妈为什么还不下课?",null,null) );
                }
            }
        }
    

     2.弗拉基米罗维奇·普京选择到新闻后,实行音讯解析后,并赶回她的乐趣(结果)。代码如下:

public override object RunDeviceConnector(IFromDevice fromDevice, IDeviceToDevice toDevice)
        {
            Console.WriteLine(toDevice.Text);//输出其他设备传来的数据。
            return this.DeviceParameter.DeviceName   "答:你不觉得这才是真正的韩剧吗?傻小子";
        }  

    3.金三接受到弗拉基米罗维奇·普京的归来音讯后,把方向指向了奥黑。代码如下:

public override void DeviceConnectorCallback(object obj)
        {
            Console.WriteLine(obj.ToString());//输出返回结果
            Console.WriteLine(this.DeviceParameter.DeviceName  "说:奥黑也真够坑爹的!");
            Console.WriteLine(">>>>模拟控制命令结束");
        }

     注:这里并不曾行使DeviceConnectorCallbackError实施分外再次回到接口函数。

11.5     宿主程序服务实例配置注意事项

       那是用节制方式实现的,设备驱动并不曾主动发送数据。代码如下:

static void Main(string[] args)
        {
            DeviceSelfDriver dev1 = new DeviceSelfDriver();
            dev1.DeviceParameter.DeviceName = "金三";
            dev1.DeviceParameter.DeviceAddr = 0;
            dev1.DeviceParameter.DeviceID = "0";
            dev1.DeviceDynamic.DeviceID = "0";
            dev1.DeviceParameter.DeviceCode = "0";
            dev1.DeviceParameter.COM.Port = 1;
            dev1.DeviceParameter.COM.Baud = 9600;
            dev1.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev1.DeviceParameter.NET.RemotePort = 9600;
            dev1.CommunicateType = CommunicateType.NET;
            dev1.Initialize("0");

            DeviceSelfDriver dev2 = new DeviceSelfDriver();
            dev2.DeviceParameter.DeviceName = "普京";
            dev2.DeviceParameter.DeviceAddr = 1;
            dev2.DeviceParameter.DeviceID = "1";
            dev2.DeviceDynamic.DeviceID = "1";
            dev2.DeviceParameter.DeviceCode = "1";
            dev2.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev2.DeviceParameter.NET.RemotePort = 9600;
            dev2.CommunicateType = CommunicateType.NET;
            dev2.Initialize("1");

            IServer server = new ServerManager().CreateServer(new ServerConfig()
            {
                ServerName = "服务1",
                ComReadTimeout = 1000,
                ComWriteTimeout = 1000,
                NetReceiveTimeout = 1000,
                NetSendTimeout = 1000,
                ControlMode = ControlMode.Self,
                SocketMode = SocketMode.Tcp,
                StartReceiveDataFliter = true,
                ClearSocketSession = false,
                StartCheckPackageLength = true,
                CheckSameSocketSession = false,
                DeliveryMode = DeliveryMode.DeviceCode,
            });

            server.AddDeviceCompleted  = server_AddDeviceCompleted;
            server.DeleteDeviceCompleted =server_DeleteDeviceCompleted;
            server.Start();

            server.AddDevice(dev1);
            server.AddDevice(dev2);

            while ("exit" == Console.ReadLine())
            {
                server.Stop();
            }
        }

11.6     运转效果

      1.图片

图片 1

      2.视频


1.[连载]《C#电视发表(串口和网络)框架的宏图与落实》

2.[开源]C#跨平台物联网通信框架ServerSuperIO(SSIO)介绍

2.利用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)营造系统的欧洲经济共同体方案

3.C#工业物联网和集成系统技术方案的技术路径(数据源、数据搜聚、数据上传与选拔、ActiveMQ、Mongodb、WebApi、手提式有线电话机App)

5.ServerSuperIO开源地址:

物联网&集成技巧(.NET卡塔尔国 QQ群54256083 

注:最新原代码,还没有曾自由,教程写完了,同步更新。

本文由67677新澳门手机版发布于计算机编程,转载请注明出处:物联网框架ServerSuperIO教程

关键词: