
基于java平台的集中器的分层架构系统
技术领域
1.本技术涉及工业控制技术领域,尤其涉及一种基于java平台的集中器的分层架构系统。
背景技术:2.在目前电力行业的集中器均使用linux平台,每个厂商的硬件环境各不相同,现有的集中器,采用的是各个厂商生产设计自家的产品,在系统软件架构的实现方式上均不相同导致应用开发调用也不尽相同,会导致应用的重复开发。同时由于linux kernel需要遵循gpl开源协议,如果用于商业用途,就需要开源部分硬件相关的参数,这样对于厂商是不利的。
技术实现要素:3.为了解决系统软件架构无法统一、不能跨平台使用的问题,本技术提供一种基于java平台的集中器的分层架构系统。
4.根据本技术的一个方面,提供一种基于java平台的集中器的分层架构系统,包括集中器信息单元,用于提供与集中器的硬件、操作系统以及驱动库的基础信息并独立出来;平台功能库,其为平台标准化封装接口,用于接收集中器的硬件、操作系统以及驱动库相关操作的信息;应用层,用于提供产品业务功能,并进行业务逻辑计算,其与所述平台功能库进行交互;硬件抽象层,用于将集中器信息单元独立出来的基础信息封装到平台功能库中。
5.在一些实施方式中,操作系统为嵌入式操作系统。
6.在一些实施方式中,平台功能库包括基础业务库,为业务逻辑进行标准化封装接口,以库的形式发布并供应用层调用。
7.在一些实施方式中,应用层的业务逻辑计算包括以下步骤:
8.通过java的jni技术,调用本地动态链接库文件的接口以实现平台功能库与集中器信息单元之间的交互。
9.在一些实施方式中,本地动态链接库文件的接口定义在所述平台功能库。
10.在一些实施方式中,平台功能库中还设置有与所述集中器的硬件对应的映射表,所述平台功能库通过所述映射表,并通过接口调用动态链接库对所述电力集中器信息单元中相应的硬件进行操作。
11.在一些实施方式中,java的jni技术包括以下步骤:
12.1)在平台功能库中定义java本地调用接口,用于java应用程序业务逻辑调用;
13.2)根据定义java本地调用接口,生成对应的电力集中器的串口jni接口头文件;
14.3)使用c语言实现对串口的操作api,包含sgd_uart.h和sgd_uart.c文件;
15.4)结合c接口函数和java本地调用接口,编写实现接口函数转换调用;
16.5)编写makefile文件,用以编译整个工程,生成动态库和测试java程序;
17.6)拷贝动态库到终端的系统库路径,拷贝java程序到终端,运行java程序,java程
序可以使用jni提供的接口函数加载动态库对相应的硬件进行操作。
18.本技术相对于现有技术的有益效果是:
19.本技术通过java技术,采用统一的java平台架构,实现操作系统软件分层设计架构,有利于应用程序的开发,可以使不同厂商开发的应用,在不同的硬件平台使用,减低了应用程序开发的耦合性,便于应用的管理和使用。
附图说明
20.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是本技术一实施例的基于java平台的集中器的分层架构系统的框架示意图;
22.图2是本技术一实施例的基于java平台的集中器的分层架构系统的java的jni技术包括以下步骤流程图。
具体实施方式
23.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.需要说什么的是,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
25.实施例1
26.参照图1,提供一种基于java平台的集中器的分层架构系统,包括集中器信息单元04,用于提供与集中器的硬件、操作系统以及驱动库的基础信息并独立出来;平台功能库02,其为平台标准化封装接口,用于接收集中器的硬件、操作系统以及驱动库相关操作的信息;应用层01,用于提供产品业务功能,并进行业务逻辑计算,其与所述平台功能库进行交互;硬件抽象层03,用于将集中器信息单元独立出来的基础信息封装到平台功能库中。
27.优选地,操作系统为嵌入式操作系统。
28.优选地,平台功能库包括基础业务库,为业务逻辑进行标准化封装接口,以库的形式发布并供应用层调用。
29.优选地,应用层的业务逻辑计算包括以下步骤:
30.通过java的jni技术,调用本地动态链接库文件的接口以实现平台功能库与集中器信息单元之间的交互。
31.优选地,本地动态链接库文件的接口定义在所述平台功能库。
32.优选地,平台功能库中还设置有与所述集中器的硬件对应的映射表,所述平台功能库通过所述映射表,并通过接口调用动态链接库对所述电力集中器信息单元中相应的硬
件进行操作。
33.优选地,参照图2,java的jni技术包括以下步骤:
34.s1:在平台功能库中定义java本地调用接口,用于java应用程序业务逻辑调用;。
35.举例而言,可以将java本地调用接口进行定义,文件名为:uart.java可以在其中定义这些函数:
36.public static native int sgd_uart_open(string port);打开串口设备;
37.public static native int sgd_uart_close(int fd);关闭串口设备;
38.public static native int sgd_uart_set(int fd,int speed,int flow_ctrl,int databits,int stopbits,int parity);设置串口参数(波特率、流控、数据位、停止位,奇偶校验位);
39.public static native byte[]sgd_uart_recv(int fd);串口接收函数;
[0040]
public static native int sgd_uart_send(int fd,byte send_buf[],int data_len);串口发送函数;
[0041]
以上函数当中的串口设备可以为本技术的集中器。
[0042]
s2:根据定义java本地调用接口,生成对应的电力集中器的串口jni头文件(uart.h)。
[0043]
具体而言,可以在ubuntu命令行执行如下命令:
[0044]
javac uart.java
[0045]
javah uart
[0046]
执行完成之后会生成头文件uart.h。
[0047]
s3:使用c语言实现串口的c操作api,主要文件为sgd_uart.c(c语言串口函数接口)和sgd_uart.h(c语言函数功能实现)文件。
[0048]
其中,sgd_uart.c文件中有:
[0049]
int sgd_uart_open(char*port)及相关执行;
[0050]
nt sgd_uart_close(int fd)及相关执行;
[0051]
int sgd_uart_set(int fd,int speed,int flow_ctrl,int databits,int stopbits,int parity)及相关执行;
[0052]
int sgd_uart_recv(int fd,unsigned char*rcv_buf,int data_len)及相关执行;
[0053]
int sgd_uart_send(int fd,unsigned char*send_buf,int data_len)及相关执行。
[0054]
其中,sgd_uart.h文件举例如下:
[0055]
#ifndef__sgd__uart_h
[0056]
#define__sgd__uart_h
[0057]
int sgd_uart_open(char*port);
[0058]
int sgd_uart_close(int fd);
[0059]
int sgd_uart_set(int fd,int speed,int flow_ctrl,int databits,int stopbits,int parity);
[0060]
int sgd_uart_recv(int fd,unsigned char*rcv_buf,int data_len);
[0061]
int sgd_uart_send(int fd,unsigned char*send_buf,int data_len);
[0062]
#endif
[0063]
以上两个文件与前面文件中的函数对应,以方便将来的函数调用。
[0064]
s4:结合c接口函数(sgd_uart.h头文件)和java本地调用接口(uart.h头文件),编写实现接口函数转换调用(uart.c文件)
[0065]
举例而言,“串口设备打开”可以如以下程序:
[0066]
*class:uart
[0067]
*method:sgd_uart_open
[0068]
*signature:(ljava/lang/string;)i
[0069]
*/
[0070]
jniexport jint jnicall java_uart_sgd_1uart_1open。
[0071]
同样方式可以编写与前述步骤对应的uart.c。
[0072]
s5:编写makefile文件,用于编译整个工程;执行make命令生成动态库和测试java程序;
[0073]
s6:拷贝动态库到终端的系统库路径(/lib文件夹下),拷贝java程序到终端,运行java程序,java程序可以使用jni提供的接口函数加载动态库对相应的硬件进行操作。
[0074]
本技术相对于现有技术的有益效果是:
[0075]
本技术通过java技术,采用统一的java平台架构,实现操作系统软件分层设计架构,有利于应用程序的开发,可以使不同厂商开发的应用,在不同的硬件平台使用,减低了应用程序开发的耦合性,便于应用的管理和使用。
[0076]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。