首先章           系统架构… 3,      各类数据音信

3.1           目录介绍… 8

开源跨平台IOT通信框架ServerSuperIO,集成到NuGet程序包管理器,以及Demo使用验证,iotnuget

     
物联网涉及到种种设备、各样传感器、各样数据源、种种协商,并且很难统一,那么就要有一个结构性的框架解决那个题材。SSIO就是依照一时提高的等级和具体实际情状的重组产物。

      各类数据新闻,如下图:

**          解决方案,合营SIO使用:**

一、SSIO特点

  • 轻型高性能通讯框架,适用于多种应用场,轮询格局、自控方式、并发方式和单例形式。
  • 不单是报导框架,是设备驱动、IO通道、控制情势场景的协调机制。
  • 协助协议驱动器,可以按正式写标准协议和自定义磋商。
  • 支撑发送数据缓存器,帮忙命令缓存重发和按事先级别发送。
  • 协理协议过滤器,按规则筛选数据,并且可以承受接口,自定义过滤形式。
  • 接济接收数据缓存器,可以缓存不切合过滤器的数额,和下次接收数据进行拼接。
  • 支撑按设备命令优先级别举办调度设施,保障有高级别命令的驱动及时发送。
  • 协助一个设备驱动,同时扶助串口和网络二种简报方式,可以监视IO通道数据。
  • 支撑一个设备驱动,在网络通信时方可支撑TCP Server和TCP
    Client三种工作格局。
  • 匡助多设备共享同一IO通道举办报纸发表。
  • 支撑定时清理超时的网络IO通道。
  • 支撑显得视图接口,知足分裂突显须求。
  • 支撑服务组件接口,可以自定义完结OPC服务、4-20mA输出、LED大屏突显、短信服务、以及多效益网关服务。
  •  帮忙创制多服务实例,完毕不一致工作的拆分。
  •  辅助跨平台安插,可以运行在Linux和Windows系统。

二、SSIO发布到NuGet平台

图片 1

三、搜索SSIO

图片 2

四、安装SSIO

图片 3

五、事例代码(Demo)

    Demo下载地址:https://github.com/wxzz/ServerSuperIO/tree/2.0

1.客户端(发送文书)

 

        static void SendFile()
        {
            if (!System.IO.File.Exists(_file))
            {
                Console.WriteLine("文件不存在:"+_file);
                return;
            }

            FileStream fs = null;
            try
            {
                Console.WriteLine("开始传输>>");

                string fileName=DateTime.Now.ToString("yyMMddHHmmss") + ".txt";
                int bufferSize = _sendBufferSize;
                byte[] sendBuffer = new byte[bufferSize];
                fs = new FileStream(_file, FileMode.Open,FileAccess.Read,FileShare.Read);

                long length = fs.Length;
                int count = 0;
                Stopwatch watch = new Stopwatch();
                watch.Start();
                while (length > 0)
                {
                    int sendNum = fs.Read(sendBuffer, 0, sendBuffer.Length);

                    byte[] package = GetDataPackage(fileName,sendBuffer, sendNum);

                    count+=_tcpClient.Client.Send(package, 0, package.Length, SocketFlags.None);

                    length -= sendNum;

                    float percent = ((fs.Length - length)/(float) fs.Length)*100.0f;
                    Console.WriteLine("已传:" + percent.ToString("0.00")  + "%");
                }
                watch.Stop();

                Console.WriteLine("传输完毕!总数:" + count.ToString()+",耗时:"+ watch.Elapsed.TotalSeconds.ToString(CultureInfo.InvariantCulture));
            }
            catch
            {
                throw;
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                    fs.Dispose();
                }
            }
        }

        static byte[] GetDataPackage(string fileName,byte[] sendBuffer, int sendNum)
        {
            byte[] sendPackage = new byte[sendNum + 24];
            sendPackage[0] = 0x35;
            sendPackage[1] = 0x35;

            string code = "0001";
            byte[] codeBytes = System.Text.Encoding.ASCII.GetBytes(code);
            Buffer.BlockCopy(codeBytes, 0, sendPackage, 2, 4);

            byte[] fileBytes= System.Text.Encoding.ASCII.GetBytes(fileName);
            Buffer.BlockCopy(fileBytes, 0, sendPackage, 6, 16);

            Buffer.BlockCopy(sendBuffer, 0, sendPackage, 22, sendNum);

            sendPackage[sendPackage.Length - 2] = 0x33;
            sendPackage[sendPackage.Length - 1] = 0x33;

            return sendPackage;
        }

 

 2.装置驱动

//设备驱动
 public class ReceiveFileDriver:RunDevice
    {
        private Dynamic _Dyn;
        private Parameter _Parameter;
        private Protocol _Protocol;
        public ReceiveFileDriver() : base()
        {
            _Dyn = new Dynamic();
            _Parameter = new Parameter();
            _Protocol = new Protocol();
        }

        public override void Initialize(int devid)
        {
            this.Protocol.InitDriver(this, new FixedHeadAndEndReceiveFliter(TransFileDriver.Protocol.Head, TransFileDriver.Protocol.End));    //初始化协议驱动
        }

        //省略......
}

//协议驱动,并处理数据
public class Command : ProtocolCommand
{
        public Command()
        {
        }
        public override string Name
        {
            get { return "writefile"; }
        }
        public override object Analysis(byte[] data, object obj)
        {
            try
            {
               //count += data.Length - 24;
               //Console.WriteLine(count.ToString()+","+data[0].ToString() + "," + data[data.Length - 1].ToString());

                string path = Path.Combine(Environment.CurrentDirectory, "rev");
                if (!System.IO.Directory.Exists(path))
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                string fileName = System.Text.Encoding.ASCII.GetString(data, 6, 16);
                path=Path.Combine(path, fileName);
                using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write))
                {
                    fs.Seek(fs.Length, SeekOrigin.Current);
                    byte[] content = new byte[data.Length - 24];
                    Buffer.BlockCopy(data, 22, content, 0, content.Length);
                    fs.Write(content, 0, content.Length);
                    fs.Flush();
                }

            }
            catch
            {
                return -1;
            }
            return 0;
        }

        public override byte[] Package(string code, object obj)
        {
            throw new NotImplementedException();
        }
    }

 3.宿主程序

 static void Main(string[] args)
{

            ReceiveFileDriver dev = new ReceiveFileDriver();
            dev.DeviceParameter.DeviceName = "设备4";
            dev.DeviceParameter.DeviceAddr = 0;
            dev.DeviceParameter.DeviceCode = "0001";
            dev.DeviceParameter.DeviceID = 0;
            dev.DeviceDynamic.DeviceID = 0;
            dev.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev.DeviceParameter.NET.RemotePort = 9600;
            dev.CommunicateType = CommunicateType.NET;
            dev.Initialize(0);

            IServer server = new ServerFactory().CreateServer(new ServerConfig()
            {
                ServerName = "接收文件服务",
                ListenPort = 6699,
                NetReceiveBufferSize = 2048,
                ControlMode = ControlMode.Self,
                SocketMode = SocketMode.Tcp,
                DeliveryMode = DeliveryMode.DeviceCode,
                StartReceiveDataFliter = true,
                ClearSocketSession = false,
            });

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

            server.AddDevice(dev);

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

 六、实验效果

 

      二日的时间,将近3GB的多寡音信,稳定性、扩大性都格外正确。

图片 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

http://www.bkjia.com/C\_jc/1151255.htmlwww.bkjia.comtruehttp://www.bkjia.com/C\_jc/1151255.htmlTechArticle开源跨平台IOT通讯框架ServerSuperIO,集成到NuGet程序包管理器,以及Demo使用说明,iotnuget
物联网涉及到 各个装备、各样传感器、各个数码源…

 

1.2    组件构架图

 图片 5

 

      物联网涉及到各样装备、各样传感器、种种数据源、各个协商,并且很难统一,那么就要有一个结构性的框架解决那一个题材。SSIO就是按照一时发展的级差和现实实际情状的咬合产物。

工业物联网和集成系统解决方案的技艺路线… 1

        static void SendFile()
        {
            if (!System.IO.File.Exists(_file))
            {
                Console.WriteLine("文件不存在:"+_file);
                return;
            }

            FileStream fs = null;
            try
            {
                Console.WriteLine("开始传输>>");

                string fileName=DateTime.Now.ToString("yyMMddHHmmss") + ".txt";
                int bufferSize = _sendBufferSize;
                byte[] sendBuffer = new byte[bufferSize];
                fs = new FileStream(_file, FileMode.Open,FileAccess.Read,FileShare.Read);

                long length = fs.Length;
                int count = 0;
                Stopwatch watch = new Stopwatch();
                watch.Start();
                while (length > 0)
                {
                    int sendNum = fs.Read(sendBuffer, 0, sendBuffer.Length);

                    byte[] package = GetDataPackage(fileName,sendBuffer, sendNum);

                    count+=_tcpClient.Client.Send(package, 0, package.Length, SocketFlags.None);

                    length -= sendNum;

                    float percent = ((fs.Length - length)/(float) fs.Length)*100.0f;
                    Console.WriteLine("已传:" + percent.ToString("0.00")  + "%");
                }
                watch.Stop();

                Console.WriteLine("传输完毕!总数:" + count.ToString()+",耗时:"+ watch.Elapsed.TotalSeconds.ToString(CultureInfo.InvariantCulture));
            }
            catch
            {
                throw;
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                    fs.Dispose();
                }
            }
        }

        static byte[] GetDataPackage(string fileName,byte[] sendBuffer, int sendNum)
        {
            byte[] sendPackage = new byte[sendNum + 24];
            sendPackage[0] = 0x35;
            sendPackage[1] = 0x35;

            string code = "0001";
            byte[] codeBytes = System.Text.Encoding.ASCII.GetBytes(code);
            Buffer.BlockCopy(codeBytes, 0, sendPackage, 2, 4);

            byte[] fileBytes= System.Text.Encoding.ASCII.GetBytes(fileName);
            Buffer.BlockCopy(fileBytes, 0, sendPackage, 6, 16);

            Buffer.BlockCopy(sendBuffer, 0, sendPackage, 22, sendNum);

            sendPackage[sendPackage.Length - 2] = 0x33;
            sendPackage[sendPackage.Length - 1] = 0x33;

            return sendPackage;
        }

首先章     系统架构

    
架构图那块主要表明一个差不多的结构化的意思,可以不太规范,希望我们可以了解。作为一个体系来讲还包涵网络安排框架图,依据使用场景和网络环境不雷同网络框架图也不雷同,所以不在本文的钻探范围内。

  • 轻型高性能通讯框架,适用于多种应用场,轮询情势、自控方式、并发方式和单例方式。
  • 不不过通讯框架,是装备驱动、IO通道、控制格局场景的和谐机制。
  • 支撑协议驱动器,能够按标准写标准协议和自定义合计。
  • 援救发送数据缓存器,支持命令缓存重发和按优先级别发送。
  • 支撑协议过滤器,按规则筛选数据,并且可以承受接口,自定义过滤方式。
  • 扶助接收数据缓存器,可以缓存不相符过滤器的数量,和下次接收数据举办拼接。
  • 帮衬按设备命令优先级别进行调度设施,有限支持有高级别命令的驱动及时发送。
  • 支撑一个设施驱动,同时辅助串口和网络二种简报形式,能够监视IO通道数据。
  • 支撑一个装备驱动,在网络通信时得以支持TCP
    Server和TCP Client二种工作格局。
  • 扶助多配备共享同一IO通道举行广播发表。
  • 支撑定时清理超时的网络IO通道。
  • 支撑显得视图接口,满足不一样显示需要。
  • 帮助服务组件接口,可以自定义达成OPC服务、4-20mA输出、LED大屏展现、短信服务、以及多职能网关服务。
  •  协理成立多服务实例,完结不一致工作的拆分。
  •  匡助跨平台安插,能够运行在Linux和Windows系统。

2.6           数据接受服务… 6

图片 6

   
大家在动脑筋,后互联网时代将怎么着进步?将是互联网与五行深度融合的经过,例如现在常被提及的物联网,我认为它实质上是工业互联网,是制作技术与互联网技术无缝过渡。不管是叫物联网照旧工业互联网,以后物与物的并行、物与人的并行将不可能避免。硬件与软件的协同发展,更快的无中生有了这几个历程,例如:智能芯片的发展、嵌入式操作系统的发展、智能传感器的前进等。

3.C#工业物联网和集成系统解决方案的技术途径(数据源、数据收集、数据上传与接受、ActiveMQ、Mongodb、WebApi、手机App)

2.3    数据搜集

    
数据搜集部分行使的是SuperIO框架,因为它支持串口和网口统一的插件式设备驱动开发,也就是说开发一个驱动可以支撑串口和网口通信。别的,可伸张性比较强,可以大大减小工作量。

    
开发了一个驱动程序,在SuperIO平台下扩充八个驱动实例,负责与数据源程序开展串口和网络通信。

 

2.5    音讯中间件

    
新闻中间件拔取ActiveMQ,须要安顿Java运行环境。可用的音讯中间件比较多,例如:RabbitMQ、ZeroMQ等。

    
按照使用场景分裂,可以拔取的技能方案和技巧途径也不平等。音信中间件那块也统统可以拔取通讯组件来替代,例如:Netty和SuperSocket。

一、SSIO特点

1.2           组件构架图… 4

      两日的时日,将近3GB的数目信息,稳定性、扩张性都充裕不易。

2.1    开发条件

支出语言:全部使用C#,配有少量的JS代码。

开发工具:除App部分,所有组件都应用VS2012付出,App程序采用VS2015开发,VS2015是一个极品开发工具工厂,在Win10操作系统上支出IoT嵌入式程序,也并未问题。

操作系统:Windows
8.1,用习惯了也不利,听说要停止服务了,然则还有人在应用XP呢,不必担心。

 

2.7           数据存储… 6

图片 7

2.4           数据上传服务… 6

 static void Main(string[] args)
{

            ReceiveFileDriver dev = new ReceiveFileDriver();
            dev.DeviceParameter.DeviceName = "设备4";
            dev.DeviceParameter.DeviceAddr = 0;
            dev.DeviceParameter.DeviceCode = "0001";
            dev.DeviceParameter.DeviceID = 0;
            dev.DeviceDynamic.DeviceID = 0;
            dev.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev.DeviceParameter.NET.RemotePort = 9600;
            dev.CommunicateType = CommunicateType.NET;
            dev.Initialize(0);

            IServer server = new ServerFactory().CreateServer(new ServerConfig()
            {
                ServerName = "接收文件服务",
                ListenPort = 6699,
                NetReceiveBufferSize = 2048,
                ControlMode = ControlMode.Self,
                SocketMode = SocketMode.Tcp,
                DeliveryMode = DeliveryMode.DeviceCode,
                StartReceiveDataFliter = true,
                ClearSocketSession = false,
            });

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

            server.AddDevice(dev);

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

1.1    硬件构架图

 图片 8

1.客户端(发送文书)

2.9           Web业务系统… 7

      各样数码音讯,如下图:

第二章           技术选型与介绍… 5

 2.设施驱动

2.2    数据源

   
数据源也就是暴发多少的事物,也有人把那块统称为传感器,不过我觉着那么些叫法不太准确,所以自己一般把那块统称为数据源。

   
数据源包含的内容很多,例如:各个传感器、大中小型设备、硬件电路、软件组件等。各个数据源的报导协议分裂、通信链路分裂、通信机制差异,在没有统一标准的景况下,那有的的劳作比第一。因为有了数码之后,你的事情系统才有使用的价值。

   
数据源我是写了一个模块的小程序,包罗串口通信和网口通信。至于报纸发表协议,请参见《C#通信(串口和网络)框架的布署性与贯彻(SuperIO)-
12.二次开发及利用
》。

         
解决方案,合营SIO使用:

   
二〇〇六年时,工业行业还在科普选用电话线进行数据传输和远程扶助。网络技术渐渐的在向各行各业传导,工业行业也在升高,局域网、光纤以太网、WIFI\3G\4G等已经应用很宽泛了。互联网技术在推进创制业发展的同时,也带来了诸多店家的与时俱进,升级技能、提供更好的劳动。

 六、实验效果

   
数据的流淌可以表现,现金的流动可以扩充GDP。技术的前进就是生产力的提拔,以后社团结构和涉嫌也肯定暴发变化。不管是不是懂技术技能、是不是懂管理,思维方法不转移肯定会被淘汰。

图片 9

前言

 3.宿主程序

2.7    数据存储

   
数据存储选择的是MongoDB,不太喜欢大而重叠的东西,而且不需求ORM了,安插简单,可以运用MongoVUE工具对数据库进行管理。假若是大拿,能够直接cmd。

 

2.8    数据接口

    数据接口选择Web
Api,符合RESTful风格的http协议,操作调用简单、方便。舍弃了WebService(Service)的Soap协议,更未曾选取WCF框架。

    这块并从未已毕权力、安全保管。

图片 10

   
2000年从此,互联网在中华的大地上轰轰烈烈的升高,在那么些行当竞争中比的是加快度。我清楚的记得《世界是平的》中有诸如此类一段话:在欧洲,羚羊每一天中午醒来时,它精通自己必须跑得比最快的狮子还快,否则就会被吃掉;狮子每一日晌午醒来时,它精通自己必须追上跑得最慢的羚羊,否则就会被饿死;不管您是狮子如故羚羊,当阳光升起时,你最好起来奔跑!我们奔跑的这10多年的年华里,互联网技术带来了各行各来的开拓进取,同时也囊括了各行各来。

   
Demo下载地址:https://github.com/wxzz/ServerSuperIO/tree/2.0

第三章           Demo的介绍… 8

//设备驱动
 public class ReceiveFileDriver:RunDevice
    {
        private Dynamic _Dyn;
        private Parameter _Parameter;
        private Protocol _Protocol;
        public ReceiveFileDriver() : base()
        {
            _Dyn = new Dynamic();
            _Parameter = new Parameter();
            _Protocol = new Protocol();
        }

        public override void Initialize(int devid)
        {
            this.Protocol.InitDriver(this, new FixedHeadAndEndReceiveFliter(TransFileDriver.Protocol.Head, TransFileDriver.Protocol.End));    //初始化协议驱动
        }

        //省略......
}

//协议驱动,并处理数据
public class Command : ProtocolCommand
{
        public Command()
        {
        }
        public override string Name
        {
            get { return "writefile"; }
        }
        public override object Analysis(byte[] data, object obj)
        {
            try
            {
               //count += data.Length - 24;
               //Console.WriteLine(count.ToString()+","+data[0].ToString() + "," + data[data.Length - 1].ToString());

                string path = Path.Combine(Environment.CurrentDirectory, "rev");
                if (!System.IO.Directory.Exists(path))
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                string fileName = System.Text.Encoding.ASCII.GetString(data, 6, 16);
                path=Path.Combine(path, fileName);
                using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write))
                {
                    fs.Seek(fs.Length, SeekOrigin.Current);
                    byte[] content = new byte[data.Length - 24];
                    Buffer.BlockCopy(data, 22, content, 0, content.Length);
                    fs.Write(content, 0, content.Length);
                    fs.Flush();
                }

            }
            catch
            {
                return -1;
            }
            return 0;
        }

        public override byte[] Package(string code, object obj)
        {
            throw new NotImplementedException();
        }
    }

2.1           开发环境… 5

五、事例代码(Demo)

2.9    Web业务种类

   
业务连串选择MVC框架,不过前端并不曾与后台的控制器进行交互,而是与数据接口的WebAPI举办互动。前后端完全分离。

2.动用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的一体化方案

3.2           Demo调试… 8

三、搜索SSIO

2.3           数据采集… 5

图片 11

2.8           数据接口… 7

1.[连载]《C#通讯(串口和网络)框架的宏图与贯彻》

1.1           硬件构架图… 3

物联网&集成技术(.NET) QQ群54256083

2.10        手机移动终端App. 7

 

目       录

图片 12

2.10     手机移动终端App

    
手机移动端应用VS2015费用,使用Xamarin框架举办开发,这些框架辅助跨平台。Xamarin是个很正确的事物,唯一的缺点就是急需付费,对于中国IT人士来讲,那点相应不是阻碍。

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

2.2           数据源… 5

二、SSIO发布到NuGet平台

   
上边对物联网和集成系统的化解方案的技巧途径举办介绍,只对技术选型和系统流程,对于架构的衍生和变化以及技巧哪个更好不做具体表明。只供参考!!!

 

   
大数量、分布式、云统计等也在以惊人的速度提升,有些人唯恐以为这个事物离大家生存还相比遥远。然而不用是那样的,距离二〇〇六年只然而10年左右,现在的上扬却是以前您不可以想像的,而这种加快度的升高办法,2年的进步可能是你过去10年的上进之和。不管这么些技巧现在是还是不是可以落地,不过这种动向是无能为力改观的。

style=”font-size: 18px;”>四、安装SSIO

2.6    数据接收服务

    
数据接收服务是在SuperIO平台下开发的,可以持续IAppService接口开发插件服务,并且挂载到SuperIO平台下运行。

    
数据接受服务向来与ActiveMQ进行相互,接收ActiveMQ转发过来的新闻,实际上是音讯消费者的角色。

 

2.4    数据上传服务

    
数据上传服务是在SuperIO平台下开发的,可以持续IAppService接口开发插件服务,并且挂载到SuperIO平台下运作,设备驱动采集完数据后,能够透过接口传递到劳动插件内,通过内存交互数据。如若提到到多少完全性的多寡交互,可以通过介质进行数量交互,例如:数据库、文本文件等。

   
数据上传服务一向与新闻中间件(ActiveMQ)进行相互,再由AcitveMQ举办新闻转载。数据上传服务实在是新闻生产者的角色。

5.ServerSuperIO开源地址:https://github.com/wxzz/ServerSuperIO

2.5           信息中间件… 6

前言… 1

3.2    Demo调试

 下载地址:http://pan.baidu.com/s/1pJ7lZWf

(1)    下载DEMO和工具

    下载SuperIO v2.2.7\SuperIO_Demo
v2.rar;下载mongodb数据库;下载ActiveMQ消息中间件。

(2)    启动服务和顺序

    
启动mongodb,mongodb-win32-x86_64-2008plus-3.0.3-1\start.bat,默许监听端口为:2222。

    
启动ActiveMQ服务,apache-activemq-5.12.0\bin\win64\activemq.bat,须要JAVA运行环境。

    
启动SuperIO_Demo.sln解决方案,必要VS2012付出IDE,也可以转成VS2015工程,重新编译。

    
启动SuperIO_App.sln解决方案,需求VS2015付出IDE,倘若利用VS自带的模拟器,须要实践<adb
connect
模拟器的IP>,才能把程序成功安顿到模拟器,并且展开调试,否则VS工具一贯处于计划阶段。

(3)运行效果图

 图片 13

(4)调试录像

   
youku录像不是太通晓,请下载高清调试录像,地址:http://pan.baidu.com/s/1pJ7lZWf中的【视频演示】。

 

 

小编:唯笑志在

Email:504547114@qq.com

QQ:504547114

.NET开发技术联盟:54256083

文档下载:http://pan.baidu.com/s/1pJ7lZWf

法定网址:http://www.bmpj.net

3.1    目录介绍

品种目录介绍如下:

ClientService(Service):上传数据与彼此组件。

DeviceDemo:设备驱动,负责募集数据。

DeviceExport:数据输出组件,在Demo没有应用。

DeviceShowUI:数据突显视图组件,负责突显采集过来的数量新闻。

FormTest:测试各部分的主工程。

ProtocolPackage:公用协议包。

ServerService:数据接收数据与相互组件。

SuperIO_App:移动APP端,需要VS2015打开。

SuperOPCClient:OPC客户端组件。

SuperOPCServer:OPC服务端组件。

TestDevice:模拟客户端测试程序。

WebAPI:WebAPI和Web业务端数据展现。

第二章     技术选型与介绍

作品不介绍代码部分,在Demo事例中有总体的代码和注释,能够下载调试。

第三章     Demo的介绍

率先章           系统架构… 3

 

相关文章