admin 管理员组

文章数量: 1087139


2024年2月26日发(作者:电子简历模板下载手机)

2013年第3期 (总第7l期) 桂林航天工业学院学报 JOURNAL OF GUILIN UNIVERSITY OF AEROSPACE TECHNOLOGY 信息与电子工程 基于J ava Ap p l et的LXI仪器 网页面板实现 张兵“ 李智 胡聪 桂林541004.、 541004/ /1 桂林电子科技大学 复杂系统集成研究室,广西\2桂林航天工业学院 复杂系统集成研究室,广西 桂林摘 要LXI模块借助于标准网络浏览器和IVI--COM驱动程序实现通信。作为IVI--COM驱动程序的辅助和克服 其必须安装的缺点,在现有LXI数字化仪模块的嵌入式linux boa服务器端,使用Java Applet技术实现了仪 器网页面板,并在仪器服务器端编写了应用程序,实现了网页面板对仪器的灵活控制和大批量波形数据的实 时回读与显示。 关键词 网页面板;Java Applet;嵌入式Web服务器;socket通信 中图分类号:TP273 文献标志码:A 文章编号:2095—4859(2013)03—0271—04 LXI(LAN Extensions for Instrumentation)即局域网 在仪器领域的扩展,是一种基于以太网技术等工业标准的、 由中小型总线模块组成的新型仪器平台。LXI总线是继 1・17, Ⅲ^卫“J■g 以 链接服务器,下i 本地运行 服务器端C应用 程序 浏览器 GPIB、VXI、PXI之后的自动测试系统总线,适合于组建局 域网范围的测试系统。LXI模块借助于标准网络浏览器和 IVI—COM驱动程序实现通信 ]。 web接口是实现LXI仪器最为关键的部分,用于构建 网络化测试系统,实现仪器通信和数据交互。只要知道了 仪器的ip,借助此接口便可以通过网页和IVI—COM驱动 实现对仪器的控制访问。为了克服IVI—C0M驱动必须 安装的缺点,使用Java A pplet技术设计仪器网页面板,只 需通过标准网络浏览器,便可实现对仪器的访问控制,方便 了仪器的使用。 l ⑨ 与2.客服户务端器建端立的l  实现通信 l !!!竺// l 图1客户端与服务器端通信过程 1.2 网页图形化界面环境搭建 1开发环境搭建 1.1整体框架 为了能实现网页仪器面板,采用了Java Applet技术, Java Applet本质也是Java程序,只是继承了Applet类,或 者JApplet类。只需要编写HTML文件,作为Java Applet 的启动文件,便可在支持Java的浏览器上运行。 图形化界面编写可以采用抽象窗口工作集(AWT)和 Swing库,AWT是sun最早提供的GUI库,但库功能有 限,后来又提供了Swing库,通过使用AwT和Swing提供 的图形界面库,Java的图形用户界面编写变得非常简 单口]。图形界面框架编写可以采用纯手工编写代码,但是 这样工程量大,组件之间不好组织,现在有很多软件提供了 相应工具,使得Java图形界面编写就像使用VC+4-中 仪器开启后,boa服务器中应用程序随之运行,在 Windows或Linux或其它系统的标准浏览器中输入仪器 的IP,就可进入仪器的网页控制面板,仪器服务端把网页 中要运行的Java Applet代码加载到网页中,就可以像操作 本地软面板一样实现对仪器的控制,首先通过socket建立 与仪器的链接,然后通过面板虚拟按键就可以实现对仪器 的控制与波形数据采集。客户端与服务器端通信过程如 图1所示。 *基金项目:广西教育厅科研项目《基于ARM的LXI发现机制与底层驱动研究》(编号:201106LXI63) 作者简介:张兵,男,重庆。硕士研究生。研究方向:测试计量技术及仪器。 271 **

2013年第3期 桂林航天工业学院学报 (总第71期) JOURNAL OF GUILIN UNIVERSITY OF AEROSPACE TECHNOLOGY张兵李智胡聪/文 MFC一样简单,例如Eclipse下的插件WindowBuilder、 Matisse4MyEclipse、Jigloo,Netbeans提供的Matisse等。 本文采用Jigloo,它对个人是免费的,且操作方便 2仪器网页面板的实现 2.1服务器端应用程序设计 服务器端应用程序随系统一起启动,程序运行后,建立 到Jigloo主页下载Jigloo插件,得到Jigloo压缩文件 (使用的版本为jigloo一464.zip),解压后,得到features和 对客户端的侦听,当检测到客户端的链接后,服务器端单独 建立一个线程供客户端使用,接收客户端命令,获取底层硬 plugins两个文件夹,把文件夹中的类容复制到Eclipse软 件数据,并采用相应算法分配好多通道数据,通过socket 件对应的文件中,Jigloo插件就安装好了。打开Eclipse软 回发给客户端[6],供客户端处理。 件,建立工程后,选择菜单File一>New一>Other,发现多 了Swing,选择Swing-- ̄JApplet,就可以建立JApplet的 图形开发环境口]。 1.3 Web服务器的环境搭建 ][ Boa服务器是一个小巧高效的Web服务器,是一个运 n—samplerecord/128;//n=count*8/lO24,8通道, 服务器端数据处理的主要代码为: void getdata() —{ 行于Unix或Linux下的,支持CGI,适合于嵌入式系统的 每次从底层硬件读1024个点,读取n次 单任务的Http服务器,源代码开放、性能高。 if(sample record 128) 1.3.1 Boa服务器的移植 n—n+1;//凑整 samplerecord=128*n;//实际采集的数据点数 (1)到Boa官网下载boa压缩文件(使用版本为boa— O.94.13),解压生成目录boa—O.94.13,进入b0a—O.94.13/src目 n2一sample—record/32768;//一个record为32k,由底 录,执行./configure,在boa一0.94.13/src目录下会生成 层硬件决定 Makefile文件。 if((samplerecord 32768)!一O) —(2)把Makefile中CC—gcc和CPP—gcc—E改成: CC—arm—linux—gcc和CPP—arm~linux~g+十E。 n2一n2+1: 一 dpramfd—open(”/dev/dpram”,0);//打开读取仪 —器数据的驱动 (3)修改src/boa.c文件。为了配合boa.conf文件的修 225到行227间如下内容注释掉: 改,把行for(k=0;k<n2;k++) if(setuid(0)!一一1){DIE(”icky Linux kernel bug!It);)。 {//是否是最后一个record if(k一一(n2—1)) (4)把src/compat.h的120行改为如下内容:#define TIMEZONE 0FFSET(foo)foo一>tm gmtoff。 { count=samplerecord一32768*k; (5)在boa~O.94.13/src目录下执行make命令,在boa 目录下会生成boa可执行文件,执行arm~linux~strip n3=count/128; ) else boa,优化boa,去掉其中的调试信息。 1.3.2 配置Boa服务器 { count=32768://count(1~一32k) n3—256; (1)在文件系统里面新建一个名为web/的目录,在文 件系统的etc/目录下面新建一个boa/目录. (2)拷贝刚才生成的boa可执行到文件系统的sbin/目 录下。 ) (3)拷贝boa一0.94.13目录下面的boa的配置文件 for(j=1;j<n3+l;j++)//总共读n3次,每次SIZE 个数据点 { ret=read(dpramfd,buf,SIZE*2); —boa.conf到文件系统的etc/boa/目录下。 (4)修改boa.conf文件。这里比较重要的是配置Doc— umentRoot(HTML文件的主目录,本文配置成/web)、Di- rectorylndex(HTML目录文件名,本文配置成index.ht— for(i=0;i<SIZE;i++) m1)、ScriptAlias(指明CGI脚本的虚拟路径对应的实际路 径,本文配置成/cgi~bin//web/cgi-bin/)。 { buf_wEi]一buf[i*2]; burw[ ]一(bur—wEi]<<8)1 buf[i*2+1];//8 —(5)把boa可执行文件加到启动文件中,重启系统 即可。 位合成16位 } 272 

2013年第3期 桂林航天工业学院学报 (总第71期) JOURNAL OF GUILIN UNIVERSITY OF AEROSPACE TECHNOLOGY张兵李智胡聪/文 for(i 0;i<SIZE/8;i++) ActionEvent evt) {//放到对应通道数组中 { chl[i+((j—num一1)*SIZE/8)]一bur—w[O+i 83;//通道1 ch2[i+((j—num一1)*SIZE/8)]一buf—w[1+i* 81;//通道2 ) userThread=new UserThread(socket,this); userThread.start();//启动run } class UserThread extends Thread if((j 64)一一0)//如果每个通道达到8192个点,通 { 过socket发送出去,发送函数为write_bufer {write—bufer(chl,8192); ……) else if(j一一n3)(……} ))) 2.2客户端网页面板的设计 在前面已搭建好的图形化开发环境基础上,主要做了 以下工作: (1)构建面板框架 ; (2)实现面板上组件的功能和组件之间的协调工作; (3)建立与仪器的链接,获取仪器大批量波形数据,并 在本地实现波形显示。由于数据量大,需要结合服务器端, 实现客户端与服务器应用程序的协调工作。 当程序运行后,首先需要建立与服务器端的socket链 接,实现与仪器的链接通信。程序会建立一个socket线 程,向仪器发送命令和读取仪器端发过来的数据。 Java程序要能在网页中运行,必须继承JApplet类: import javax.swing.JApplet; public class NewJApplet extends JApplet{ public static void main(StringE]args){ SwingUtilities.invokeLater(new Runnable(){ public void run(){//实例化NewJApplet类 JFrame frame=new JFrame(): NewJApplet inst—new NewJApplet(); frame.getContentPane().add(inst); ) }); } public NewJApplet(){ super(); initGUI(); } private void initGUI(){……) 网页面板获取和处理数据的主要代码如下: Private void connect butActionPerformed( Socket socket; InputStream getinput; this.socket:socket; get—input—socket.getlnputStream(); public void run() { n2=sample—record/32768; if((samplerecord 32768)!一O) n2:n2+1;//确定循环次数,以32768为一个单位 for(k=0;k<n2;k++)//循环n2次,如果是最后一 次循环,就要根据实际的采样点数获得本次循环要采样的 点数 { if(k一=(n2—1)) {count=samplerecord--32768*k; n3一count/128: } else { count=32768; n3—256; } for(j一0;j<(n3/64);j++)//与服务器端协调工 作{ usertnewapplet.newContentPane.paintarea. —datel[i一1++]一((short)(get—input.read()f(getinput. read()<<8)));//read()方法返回0到255之间的一个 无符号字节,数据存人对应通道数组中 ……}}}} 2.3功能验证 Java Applet程序编写完成后,编译成class文件,其运 行还得借助HTML文件,index.html文件类容为: <html><head><title>仪器网页面板</title></head> <body><applet codebase=”./classes”code= ”digitizer.class”width=1100 height=600 273 

2013年第3期 桂林航天工业学院学报 (总第7 1期) JOURNAI OF GUILIN UNIVERSITY OF AEROSPACE TECHNOI OGY张兵李智胡聪/文 strolling=3></applet></body> </html> 蚕 其中./classes是编译后的classes文件所在文件夹. digitizer是主类名。 把上面的classes文件夹和index.html文件放人文件 系统web目录下(boa.conf所配置);把服务器端应用程序 交叉编译后的可执行文件放入/shin目录下,并设置成开机 启动。 连接好PC与仪器,使其处于同一网段下,仪器启动 后,在PC浏览器地址栏输人仪器ip地址,就可以在浏览器 中显示出仪器面板,然后就可以实现对仪器的控制和数据 回显了。 夏蔓 图3 网页面板回读显示波形 3 结论 通过网页实现对仪器的访问,是LXI仪器的重要组成 I= 萄 l __・ —= 一 一 F_・_ j ・ i 部分,是对虚拟仪器技术的补充发展,在网页中引入Java Applet技术,能实现对仪器更复杂、更灵活的控制;通过对 网页面板的操作表明,面板反映速度快,操作灵活.稳定性 好,能实现对仪器的控制和波形数据回读显示。 图2对仪器进行配置 参考文献 [1] Agilent Technologies.LXI新一代测试自动化平台[EB/OL ̄.[2O13.7].http://www.tm.agilent.com.cn/tmo/ datasheet/list.asp?sort=updatetime&by=asc. [2] 李刚.Java疯狂讲义[M].北京:电子工业出版社,2o12:433—434. [3] 刘长炯.MyEclipse 6 Java开发中文教程[EB/OLJ.[2013.7].http://www.blogjava.net/beansoft/archive/2Olo/o9/ 09/331571.htm1. [4] 天嵌科技.Linux移植之Step By Step—V4一一2OlOO605EM/CD].[2013.7].www.embedsky.net. [5] 高明.LXI C类仪器Web接口技术研究与实现[D].桂林:桂林电子科技大学.2008. [6] 孙琼.嵌入式Linux应用程序开发详解I-M].北京:人民邮电出版社,2006:352—359. JDK[7] SUN.—API16zh一—一—CN.CHMEEB/OL].[2O13.7].http://dlc.sun.corn.edgesuite.net/jdk/jdk—api—localiza— (责任编辑李卫华) tions/jdk--api—zh—cn/publish/1.6.0/chm. 274 


本文标签: 仪器 网页 实现 面板 数据