基于Netty和JNA技术的多通信方式的数据接收及处理系统的制作方法

文档序号:37279903发布日期:2024-03-12 21:17阅读:17来源:国知局
基于Netty和JNA技术的多通信方式的数据接收及处理系统的制作方法

本发明属于通讯领域,具体基于netty和jna技术的多通信方式的数据接收及处理系统。


背景技术:

1、物联网技术是当前互联网技术中的热点之一,它通过识别、感知、管理和操控各种硬件设备,来实现物与物、人与物之间的数据交互和相互联通。当前,物联网技术在智慧城市、智能家居、智能物流、智慧电网、工业自动化等领域得到了广泛应用,成为人类社会发展不可或缺的重要一环。而不同的硬件设备所对应的通信协议和数据格式可能存在很大的差异,因此海量设备所带来的海量数据的接入及处理已经是物联网应用中所需要解决的重要课题之一。

2、在传统的工业互联网领域,设备的传输协议和数据格式相较于目前较为流行的mqtt通信协议和json数据格式,还有很多在通信层使用tcp、udp及串口作为通信方式的设备。在使用tcp和udp作为通信方式时,经常将有数据的一端作为服务端,请求数据的一端作为客户端,比如常用的modbus tcp协议和iec60870-5-104协议。串口更是在此领域有广泛的应用场景,大范围应用于光伏逆变器、电池管理器等设备中,比较常用的如modbus rtu协议。

3、springboot是java平台上的一种基于spring的设计开发框架,它通过maven的pom文件来管理依赖包,并使用对应注解来替换配置文件来管理对象及其生命周期。借助springboot开发人员能够快速开发和部署应用程序。

4、netty作为著名的java开源框架,提供了异步的、事件驱动的网络应用程序框架和工具,可以快速开发高性能、高可靠性的网络服务器和客户端程序。它支持多种网络协议,并提供丰富的api接口。它基于reactor多线程模型,支持零拷贝的bytebuf缓冲对象和可扩展的事件模型。netty也曾出过支持串口通信的版本,但后来放弃,转为专注网络通信技术。

5、jna(jna,java native access)是一个java工具类,用于在运行期间动态访问本地化的动态链接库(so或者dll)。开发人员只要在一个java接口中描述目标nativelibrary的函数和结构,jna将自动实现java接口到动态链接库中相关方法的映射。

6、目前在netty的实际应用场景中,通常将netty作为server端来监听某个特定的端口,用于某类设备通过某种特定的通信协议来进行实时数据接入,比如车联网平台。但这并不能够覆盖所有的场景,因为在一些应用场景中,存在需要支持多种设备的不同通信协议的接入。因此单一的服务和协议并不能满足实际的业务需求,而同时开发多个服务来支撑实际需求,又会在开发、部署、实施过程中增加大量成本。此外,在实际应用过程中也需要支持通讯方式为串口的数据传输。综上所述,基于netty兼并整合上述多种通讯方式(包括tcp的客户端和服务端、udp的客户端和服务端、串口)和多种业务协议的技术特点,实现一种在单一平台下支持多种设备的接入和协议解析的方法,用以支撑实际的业务应用是非常有必要的。


技术实现思路

1、本发明为为了克服现有技术,提供一种基于netty和jna技术的多通信方式的数据接收及处理方法,本方法充分考虑netty、网络通信和串口通信的技术特点和设备的数据特点,将整个方法通过技术进行分层处理,能够保证各个模块之间高度解耦。

2、本发明实现目的的技术方案如下:

3、一种基于netty和jna技术的多通信方式的数据接收及处理系统,包括:配置层、配置存储层、协调管理层、设备层、通信层、协议层、对外数据层;

4、所述配置层分为:①设备配置、②通道配置、③协议配置、④遥测配置、⑤遥信配置、⑥遥控配置、⑦遥调配置;整个配置层以设备配置为核心配置,通过协议id,协议id来链接到通信配置、协议配置,④、⑤、⑥、⑦中的点根据设备id来对应到设备上;

5、所述配置存储层实现:redis用于存储实时配置信息,mysql数据库用于数据存档。当系统启动时,协调管理层从mysql中读取数据到redis,当配置信息需要修改时,需要从mysql数据库获取信息展示到界面,通过界面修改后再更新redis和mysql数据库;

6、所述协调管理层实现:通过读取相关的配置,创建协议对象实体、通信对象实体、设备对象实体,并管理这几个实体之间的关系,使数据能够在几个对象之间交互流转,并通过谷歌开源框架guava线程池分配相应的线程,用以保证数据收发和流转;

7、所述设备层接口实现:通过抽象协议类机制,抽象出设备对象基类,并实现包括设置四遥模型接口、设置遥测和遥信数据接口、设置遥控和遥调指令接口等。设备层将收到的遥测与遥信数据根据配置信息进行二次处理,将数据转化为实际的业务数据;

8、所述通信层实现:①增加串口实现:通过c++开发出串口通信so文件,实现标准的串口初始化、串口开闭、数据收发、状态查询等接口。然后通过jna开发java接口供主架构使用;②通信层接口实现:通过使用java的抽象通信层接口机制,抽象出通信类通用接口,定义通信开始方法和通信结束方法,并实现实际tcp的服务端、客户端,udp的服务端、客户端通信类及串口通信类,通信层用于跟设备建立通信连接,将设备发来的数据转给协议层并将协议层的数据传递给设备;

9、所述协议层接口实现:通过抽象协议类机制,抽象出协议类通信对象基类,并实现包括初始化、源数据写入、数据拆分、数据发送,停止等方法,设置设备对象变量。具体的协议包通过继承或重写这些方式及自定义接口来实现。协议层会对通信层发送过来的数据进行解析,然后将解析后的数据通过设备层接口传给对应的设备对象,也会调用设备对象接口,从中获取下行的遥控和遥调指令,将其转化并传递给对应的通信层对象。

10、所述对外数据层接口实现:通过谷歌开源框架guava线程池分配数据对接线程任务,线程中将每个设备的遥测和遥信数据转化为标准json结构,通过调用中间件api发送到中间件;监听中间件接口,将中间件传递过来外部遥控和遥调json结构转化为模型数据,传递到设备层的指定设备。

11、而且,所述①设备配置至少包括:通信单元id、设备名称、设备id、通信类型、ip、端口、协议id、通道id。

12、而且,所述②通道配置至少包括:通道id、串口名称、波特率、数据位、校验位、停止位。

13、而且,所述③协议配置至少包括:协议id、描述、路径、类名。

14、而且,所述④遥测配置至少包括:遥测id,通信单元id、组地址、点地址、名称、单元内点号、系数、偏移量。

15、而且,所述⑤遥信配置至少包括:遥信id,通信单元id、组地址、点地址、名称、单元内点号、取反标志。

16、而且,所述⑥遥控配置至少包括:遥控id,通信单元id、组地址、点地址、名称、单元内点号、控制类型。

17、而且,所述⑦遥调配置至少包括:遥调id,通信单元id、组地址、点地址、名称、单元内点号、控制类型。

18、与现有技术相比,本发明的有益效果在于:

19、1、本方法充分考虑netty、网络通信和串口通信的技术特点和设备的数据特点,将整个方法通过技术进行分层处理,能够保证各个模块之间高度解耦。

20、2、本发明在单体应用内实现多种通信方式的数据接入:包括tcp的客户端和服务端、udp的客户端和服务端、串口,可兼容多个业务场景。

21、3、本发明使用独立且封装好的通信技术实现方式及协议解析方式,可做到通信协议的快速开发(jar包方式)和灵活配置,从而使此方法快速适实际应用场景。

22、4、本发明标准化的四遥数据模型及上下行实时数据结构,能够保证解析数据格式的高度统一,方便业务层使用,并减少或避免业务层因为设备类型的增加而大量修改代码。

23、5、本发明充分考虑分布式架构特点,使系统能够进行分布式部署,方便整个系统的高可用性部署。

24、6、本发明的代码组织和开发充分考虑跨平台特性,系统处串口接口需要进行混合编译外,其他jave部分代码不用进行修改即可部署到arm框架的linux系统硬件设备中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1