一、编程方法 1.概述 EM9118是16位450KHz多功能并行数据采集模块,是数据采集卡的一种,板载64MB硬件缓冲区保证其可以长时间连续采集。 如果使用网络接口,无需安装驱动即可操作设备。如果使用 USB 接口,则需要首先安装驱动才能够使用设备。 2.JAVA调用dll简述 Java程序调用动态链接库可以通过JNA (java native access) 库调用实现。JNA提供了一组Java工具类,用于在运行期间动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码,省去了对c/c++程序的再封装操作。 EM9118.dll是PC端程序调用EM9118设备的函数库,在使用函数库时,请确保EM9118.dll至少在下面目录中的一个:工程目录、可执行文件目录、系统目录。 Java代码通过JNA库调用EM9118.dll的库函数,就可以实现对于EM9118设备的操作,和设备相关的操作,都封装在Em9118.java文件中。 上述文件均可以在示例文件目录下找到,如果用户属于资深JAVA程序员并且熟悉JetBrains的IEDA开发环境,可以直接看第五、六部分的设备相关操作。如果是初次接触JAVA编程的新手,可以顺序阅读以下章节,一步步的建立工程,最终实现对EM9118的编程操作。 二、建立开发环境 1.简述 用户需要准备Jdk+IntelliJ IDEA的开发环境。其中Jdk是Java开发包,可以在Oracle公司的官方网站免费下载;IntelliJ IDEA是开发Java程序的集成开发环境,在这个软件界面内可以进行编程、调试等工作。 2.程序下载地址 Jdk下载地址:https://www.oracle.com/cn/java/technologies/javase-jdk15-downloads.html 选择Windows x64 Installer下载。 IntelliJ IDEA下载地址:https://download.jetbrains.com/idea/ideaIC-2020.3.3.win.zip
3.Jdk程序安装执行jdk-15.0.2_windows-x64_bin.exe程序,按照提示进行默认配置安装即可。安装完成后,可以检查Jdk是否安装成功,在命令行界面下执行Java -version,可以显示计算机当前安装的Java版本信息。
在程序安装完毕后,需要检查系统变量的设置。 (1)选择【此电脑】-单击右键-【属性】
(2)在【系统】窗口中,选择【高级系统设置】
(3)在【系统属性】窗口中选择【环境变量】
(4)在【环境变量】窗口中选择【系统变量】下的Path,单机【编辑】按钮
(5)如果没有出现如下图红框中的Java安装目录,需要单击【新建】按钮,增加一个条目,将Jdk安装后的bin目录加入。
4.IntelliJ IDEA程序安装解压缩下载的ideaIC-2020.3.3.win.zip文件,执行安装程序,按照提示进行默认配置安装即可。
四、IntelliJ IDEA界面概述1.IDEA的默认界面如下图,
2.代码编辑窗口,在这里可以读、写、浏览源代码。 3.导航栏,操作导航栏可以在用户项目的结构中,打开各个文件。选择菜单项View | Appearance | Navigation Bar,可以开闭导航栏。 4.状态栏,显示最近的事件信息和操作提示。选择菜单项View | Appearance | Status Bar,可以开闭状态栏。 5.项目工具窗口,对编辑代码的支持,可以显示用户项目的结构信息。用户在这里可以选择项目中的各个文件。选择菜单项View | Tool Windows开闭工具窗口。 6.上下文菜单,可以在界面元素上单击右键,显示与该元素有关的操作的上下文菜单。 7.弹出菜单,支持与当前上下文相关的操作菜单。 8.运行工具窗口,显示用户程序运行输出的各项信息。
五、示例建立Java项目及配置开发环境1.在启动界面后,单击【New Project】按钮
2.在【New Project】窗口中,如下图,确认选择Java项目,单击【Next】按钮。
3.在【New Project】窗口,选中【Create project from template】,单击【Next】按钮。IDEA会创建一个含有默认Main类的工程。
4.用户可以在【Project name】后,输入项目的名称,本示例使用的名称是JavaTest。在【Project location】后输入项目的存储位置。默认情况下,项目名称就是用户项目所在目录的名称。用户也可以选择其他目录存储项目,这时要保证所选目录中不包含其他Java项目。在【Base packeage】后输入用户自定义的包名称。包是Java开发过程中的一种代码组织形式,是一系列相关的类和接口的集合,这样可以最大化避免发生命名冲突的问题。用户在开发自己的程序时,也需要定义自己的包。一般形式是,com.xxxx,xxxx是指的用户自定义的名称。
单击【Finish】按钮,完成项目的创建。如果用户选择的目录不存在,IDEA会提示建立。 之后,在用户计算机中,就会出现与刚才定义相关的目录结构,其中源文件存放在下面目录中,注意“user”目录名可能会根据用户真实的用户名有所不同。
5.在项目目录中创建libs目录
6.将示例文件目录libs中的Jna5.6.0.jar文件拷贝到此目录下。
7.将Em9118.java拷贝到项目的srccomuser目录下,保证与Main.java处于同一个目录。
用户需要将Em9118.java文件开始处的package改为用户定义的package名称。示例程序是改为package com.user;
8.将EM9118.dll拷贝到项目根目录下; 9.在IDEA的项目工具窗口中,将出现6、7、8中创建的目录和拷贝的文件。
10.此时操作EM9118所有必要的文件都已经复制到工程目录下,接下来还需要设置一些工程属性才能够正常编译调试工程:选择【File】-【Project Structure...】
11.选择【Project Settings】-【Libraries】,选择【+】-【Java】
12.选择刚才创建的libs目录下的jna-5.6.0.jar,单击【ok】按钮。
13.会出现将Jna库加入项目的提示,单击【OK】按钮确认即可。
14.出现如下的界面,表示Jna库引入项目成功。
15.此时可以在IEDA环境下调试程序,如果想要生成jar文件,则需要继续设置工程:仍然选择【File】-【Project Structure...】-【Project Settings】-【Artifacts】
按照如下设置:
单击OK按钮后可以看到如下界面,点击箭头所指的“+”:
选择File选项:
选择工程目录下的EM9118.dll:
此时配置应该如下所示:
点击OK按钮后,工程目录树应该如下所示:
增加了MANIFEST.MF文件,此时点击Build菜单的Build Artifacts项,就可以生成jar文件了
生成的文件在下面的目录:
此时在命令行窗口进入对应目录后运行: java -jar javatest.jar 就可以得到程序的输出结果了。
六、接口类说明1.Em9118.dll的Java接口类定义在Em9118.java文件中。 2.Em9118.dll输出函数的Java声明封装在Em9118 class的IEm9118 interface中。 3.Em9118 class中还定义了调用Em9118.dll输出函数所必须的各个变量;为了方便用户开发,也定义了一些方法实现用户程序对Em9118设备的连接/断开、启动/停止采集、读取采集数据等操作。 4.Em9118.strIP:设备IP地址变量 5.Em9118.iCmdPort:命令连接端口,默认值为8000. 6.Em9118.iDatPort:数据连接端口,默认值为8001. 7.Em9118.dfFreq:ad采集组频率,取值范围是可以是1~450000Hz,注意只有6通道以下才可以达到450000Hz采集频率,大于6通道只能实现100000Hz采集频率。 8.Em9118.iIsAdInFifo:ad通道是否进fifo标识变量,1表示进fifo,0表示不进fifo。 9.Em9118.iAdRangeIdx:Ad范围取值下标,0表示-10v~+10v,1表示-5v~+5v。 10.Em9118.iClkSrc:时钟源,0表示内部,1表示外部 11.Em9118.iTriSrc:触发源,0表示内部,1表示为外部 12.Em9118.iEdgeLevel:触发方式,0表示边沿触发,1表示电平触发 13.Em9118.iUpdown:0表示上升,1表示下降。 14.Em9118.bAdType:true表示返回数据原码,false表示返回数据物理值。 15.Em9118.Em9118():接口类的构造函数形式一 16.Em9118.Em9118(String):接口类的构造函数形式二,输入参量是Em9118设备的IP地址。 17.Em9118.DevConn():连接设备。返回值为0,表示没有错误。 18.Em9118.DevDisConn():断开设备连接。无返回值。 19.Em9118.StartHc():启动设备采集。返回值为0,表示没有错误。 20.Em9118.StopHc():停止设备采集。无返回值。 21.Em9118.ReadAdVal():得到fifo中各个ad通道的数据。返回值类型是double类型的二维数组double[][]。数组第一维表示通道,第二维表示每通道的数据内容。
七、调用流程1、声明初始化接口类变量。 2、设置接口类变量(端口号、ip地址、触发源、ad进FIFO变量等)。 3、连接设备。 4、启动设备采集。 5、得到ad通道的数据。 6、用户自行处理数据。 7、处理完毕后停止设备采集。 8、断开设备连接。 流程图见下页。
|