利用Java实现远程控制显微镜自动聚焦


利用Java实现远程控制显微镜自动聚焦◎宋高俊黄喜成刘鼎字(南昌航空大学,江西南昌33006)[关键词]网络控制;JMF技术;C/S模式;自动聚焦;实时性【摘要]提出了一种基于Java网络控制技术的显微镜自动聚焦技术,利用基于Java的JMF(JavaMediaFramework)技术的C/S(Client/Server)网络控制模式;利用Socket通信与基于Java的串口通信实现网络控制显微镜进行自动聚焦。实现了网络视频的实时传输与通过网络发送实时控制指令。实验表明基于C/S模式的网络控制技术能够很好地满足实时控制。[中图分类号]TP393.0[文献标志码]A[文章编号]1001—4926(2010)03—0001—05ImplementationofRemoteControlonMicroscopeAuto-focusUsingJavaSONGGao-junHUANGXi-·chengLIUDing··yu(NanchangHangkongUniversity,Nanchang,^angxi330063,China)Keywords:networkcontrol;JMFtechnology;C/Smode;auto—focus;real—timeAbstract:AJava—basednetworkcontroltechnologyofthemicroscopeauto—focustechnologyispresented,imposingJMF(JavaMediaFramework)technologyC/S(Client/Server)networkcontrolmodeandsocketcommunicationandbaseonJavaserialcorn-munieationforimplement—ingnetworkcontrolmicroscopeauto—focus.Real—timenetworkvideotransmissionandreal—timecon-trolcommandssentoverthenetworkareachieved.ExperimentsshowthatnetworkcontroltechnologybasedonC/Smodecouldsatisfythereal—timecontr01.随着人们生活水平的不断提高,人们对医疗技术和条件的要求也越来越高。要想尽量满足人们的需求又不至于造成资源的过剩就需采取一种技术来充分调配各个地方的资源。现代网络技术的飞速发展给人们提供了一个新的思路,可以通过网络来进行资源共享。同时,将控制系统进行入网实现网络远程控制将成为一大趋势。本文就是利用基于Java的网络控制技术来控制显微镜自动聚焦。技术人员只需将标本放到显微镜下,通过网络传输给远端的专家们,专家们通过网络来观察标本的情况可以进行类似现场的技术指导。1系统设计系统原理框图如图1所示,首先在服务器端通过USB接口接收图像采集设备的信号,然后通过网络传输到客户端同时在服务器端将图像显示出来。客户端在接收到视频信号后初始化播放器进行播放,同时根据接收到的图像的清晰度发出控制指令给服务器端,服务器端在接收到聚焦指令后又通过串口给单片机发送控制指令,单片机又根据指令给电机驱动器发送信号控制步进电机来实现自动聚焦。[收稿日期]2010-08-03[修回日期]2010—09—04[作者简介]宋高俊(1959一),男,南昌航空大学信息工程学院副教授,博士。主要研究方向:移动通信与信号处理。 万方数据 2010年9月2第24卷。;;期镜刊l兰采集JL服客头务户’器显广———'1网络徽腱堵端镜计计镇{省吣算算倚)机机图1系统原理框图1.1客户端主要功能及其实现客户端主要实现视频的接收与播放和利用socket通信发送控制指令来实现网络控制。1.1.1视频接收实时接收网络媒体数据流是通过javax.media包中定义的各种RTP事件监听器和RTP事件处理类来处理和控制的,RTP各事件监听器的功能说明如下:ControllerListener接口是用于处理控制器(Con—troller,例如Players、Processors)对象产生的事件的一个异步接口,通过使用ControllerListener接口,能够实现播放器潜在的耗时操作的计时管理,例如预取操作等,当一个控制器报告一个事件时,它对所有注册的监听器调用ControllerListener接口中的control-lerUpdate()方法,如果为多个控制器共同注册了一个监听器,则需要在该方法中判断究竟是由哪一个控制器报告的事件。ReceiveStreamListener监听器用来监听正在接收的RTP数据流的状态改变消息,在使用RTP协议的实时接收网络媒体数据流的应用程序中通过实现ReceiveStreamListener接口中的update()方法可以监听到ReceiveStreamEvent事件。SessionListener监听器用来接收作为一个整体的RTP会话的状态改变消息,例如,在R,I’P会话中加入了一个新的“参与者”,在实时接收网络媒体数据流的应用程序中通过实现该接口中的update()方法可以监听到SessionEvent事件。南量航室士謦学报JournalofNanchangHangkongUniversity自然科学版⋯⋯⋯·NaturalSclerices利用Java实现远程控制显微镜自动聚焦1.1.2视频播放Player接口通过ControllerListener接口的con-trollerUpdate()方法来判断播放器是初始化完成,如果播放器初始化完成就通过Player接口的getVisu.alComponent()方法来得到播放器的显示组件和getControlPanelComponent()方法获取默认的播放器控制组件来显示播放视频和控制播放视频。1.1.3客户端SocketSocket是实现客户机与服务器进行通信的一种机制,它是两台计算机进行通信的端口。在Java程序中,可以将Socket类和ServerSocket类分别用于客户机和服务器中,分别创建独立的Socket,将两个Socket进行连接,实现连接后,就可以通过Socket进行通信。Java.net.Socket类是Java执行客户端TCP操作的基础类,这个类本身使用直接代码通过主机操作系统的本地TCP栈进行通信,Socket类的方法会建立和销毁连接,设置各种socket选项。客户端Socket通信主要代码如下:publicvoidSocketCommu(){intportnum;ipstr=jt.getText();portnum=5,400;Socketsocket=newSocket(ipstr,port-num);output=newDataOutputStream(socket.getOutputStream());output.writeUTF(“开始连接”);connection.setEnabled(false);}protectedvoiddoMovedown(){try{output.writeUTF(“向下移”);}catch(IOExceptione){e.printStackTrace();}} 万方数据 2010年9月第24卷第3期protectedvoiddoFocus(){try{output.writeUTF(“聚焦”);}catch(IOExceptione){e.printStackTrace();}}1.2服务器端主要功能及其实现在服务器端主要实现视频的捕捉与发送并且利用ServerSocket类实现对客户端指令的响应,并且通过串口与单片机进行通信实现控制显微镜自动聚焦。1.2.1视频捕捉视频捕捉是基于JMF(JavaMediaFramework)来实现的,JMF是Sun联合Intel、SiliconGraphics等公司共同开发的一套在Java应用和applet中显示和处理多媒体数据的类集合。利用JMF可以很容易地创建、显示、捕获、操作和存储时间媒体的Java应用和Applet¨J。JMF通过CaptureDeviceManager类的getDevice(java.1ang.StringdeviceName)函数来返回一个Cap-tureDevicelnfo对象再通过CaptureDevicelnfo对象的方法getLoeator()返回一个媒体定位器来获得数据源。1.2.2视频发送为了实现实时性在视频传输过程中就不能用传统的TCP/IP协议,TCP/IP的数据包太大耗时多,因此,在实时视频传输中常常用RTP(Real—TimeTransportProtoc01)协议oRTP实时流的发送是通过会话管理器(SessionManager)来传输的其大概步骤是:在视频发送前先产生一个JMF处理器(Processor),为每一种RTP格式设置相应的轨迹格式,然后再从处理器获取输出数据源,会话管理器产生一个发送数据流,即以数据源和序号作为参数调用会话管理器的createSend.Stream()方法,再开始会话传输。1.2.3服务器socket在本系统中服务器端一直处于监听状态。当接利用Java实现远程控制显微镜自动聚焦3收到客户端发出的控制指令后,服务器端就通过串I:1发送指令给单片机,单片机再驱动步进电机使显微镜进行聚焦。服务器端Socket通信主要代码如下://Socket通信初始化publicvoidsocketComm(){intport=6,000;ServerSocketserver=NewServerSocket(port);socket=server.accept();server.close();}//接收到控制指令做出相应反应publicvoidtran(){StringinStr=⋯:input=NewDataInputStream(socket.get-InputStream());while(true){inStr=input.readUTF();if(inStr.equals(“聚焦”)){value=getlmageinformation();//聚焦评价函数值计算}⋯⋯根据接收到的不同指令做出相应的处理}1.2.4Java串口通信Sun的J2SE中并没有直接提供串行通信协议的开发包,而是以独立的jar包形式发布在java.sun.tom网站上,即conlm.jar,称之为Javacommuni—cationAPI。它是J2SE的标准扩展‘2|。下载了COmB.jar开发包后,与之一起的还有两个重要的文件:win32com.dll和javax.comm.proper-ties。comm.jar调用本地驱动接口,而javax.corn.properties是这个驱动的类配置文件首先将comm.jar复制到JDK的\lib\ext目录,再将win32com.dU复制到JDK的\bin目录下,然后将javax.comm.properties复制到JDK的\lib目录‘3|。到此Java串 万方数据 2010年9月4第24卷1113期口通信配置完成,然后只需在你的串El通信项目中导入comm.jar文件即可。串口通信部分代码如下:publicfinalbytefocus=0x01;//控制信号的设计publicfinalbytemoveup=0x02;publicfinalbytemovedown=Ox03;publicfinalbytemoveleft=0x04;publicfinalbytemoveright=0x05;portList=CommPortIdentifier.getPortldentifiers();while(portList.hasMoreElements()){portld=(CommPortIdentifier)portList.nextElement();if(portld.getPortType()一:CommPortldentifier.PORT—SERIAL){if(portld.getName().equals(“COMl”)){serialPort=(SerialPort)portld.open(“Sead—Comm”,2,000);serialPort.setSerialPortParams(2,400,Serial·Port.DATABITS一8,SefiMPort.STOPBITS一1,Serial-Port.PARITY—EVEN);outputStream=serialPort.getOutputStream();inputStream=sefiMPoa.getlnputStream();serialPort.addEventListener(this);sefialPort.notifyOnDataAvailable(true);}publicvoidsend(byteb){tryioutputStream.write(b);}catch(IOExceptione){e.printStackTrace();}}1.3单片机串口通信及控制步进电机由于单片机的P口输出电流太小,最大只有5mA所以不能够直接驱动步进电机需要通过步进电机驱动器来实现控制步进电机。通过驱动器控制南‘鸵它女謦学报JournalofNanchangHangkongUnlversity自然科学版⋯⋯⋯.NaturalSciences利用Java实现远程控制显微镜自动聚焦步进时只需给驱动器方向控制信号(CW和CCW)和时钟脉冲信号(CLK一和CLK+)。单片机每给步进电机一个脉冲电机就走一步(1.8度步距角),微调时每次只给一个脉冲步进电机走一步大约为70urn,如果经过细分控制精度会更高,比如16细分那么步进电机每走一步就大约是4.3urn。单片机串口通信主要代码如下:sbitCLOCK=P1“0;//输入到驱动器的脉冲sbitCLOCK一=P1‘1;sbitCW=P1^2;//电机转向控制信号sbitCCW=P1^3;voidinitiate—RS232(void){EA=1;TRl=1;IX3=1;ET0=1;SCON=OxSO;TMOD=Ox21;THl=0xFD;TLl=0xFD;ES=1;}voidserial()interrupt4{if(RI!=0){RI=O;jlEs=SBUF;}if(宰s===0】国11{TRO=l;l}voidtime0()interrupt1{TH0=OxFE;TID=OxOC;//电机转速控制CW=0;CCW=1;CLOCK=~CLOCK;CLOCK一=0;}2实验结果与讨论我们在局域网内两台连接在网络上的电脑上做了实验,实验中视频的传输速度与质量相当不错,除了在启动服务器端程序时,初始化播放器要等待2到3秒钟外基本上没有传输延迟。为了实现更精确 万方数据 2010年9月第24卷第3期的聚焦设计了“上移”、“下移”两个控件,每点击控件一下将通过网络控制步进电机走一步从而达到微调的效果。以下是对中性笔墨水进行聚焦的效果图,图2是在客户端点击聚焦按钮后聚焦完成后在服务器端所显示的图像,图3是客户端最终看到的通过网络聚焦后服务器端发送过来的图像。图2服务器端程序运行效果图3结语利用Java实现远程控制显微镜自动聚焦5图3客户端程序运行效果图实现了通过网络来控制显微镜自动聚焦,实现了网络视频传输的实时性和网络控制指令发送与响应的实时性,鉴于Java与平台无关的优点可将该系统的服务器端用嵌入式系统来代替,以实现设备的便携与能耗的降低。【参考文献】[1]刘宏飞.基于JMF的视频医疗系统的设计与实现[D].西安:西北大学,2004.[2]周国华,唐土生.基于Java串行通信研究[J].福建电脑,2006(6):145—150.[3]陆颖瑜,张永林.利用Java实现对云台和镜头的远程控制[J].工程设计学报,2007,9(4):46—49 万方数据 利用Java实现远程控制显微镜自动聚焦 作者: 宋高俊, 黄喜成, 刘鼎宇, SONG Gao-jun, HUANG Xi-cheng, LIU Ding-yu 作者单位: 南昌航空大学,江西,南昌,33006 刊名: 南昌航空大学学报(自然科学版) 英文刊名: JOURNAL OF NANCHANG HANGKONG UNIVERSITY(NATURAL SCIENCES) 年,卷(期): 2010,24(3) 参考文献(3条) 1.刘宏飞 基于JMF的视频医疗系统的设计与实现[学位论文] 2004 2.周国华;唐土生 基于Java串行通信研究[期刊论文]-福建电脑 2006(06) 3.陆颖瑜;张永林 利用Java实现对云台和镜头的远程控制[期刊论文]-工程设计学报 2007(04) 本文读者也读过(10条) 1. 蒋炎华.JIANG Yan-hua 计算机本科专业开设网络控制实验的研究[期刊论文]-玉林师范学院学报2010,31(2) 2. 朱阳春 校园自助式实验室群管理系统研究[期刊论文]-硅谷2010(20) 3. 杨妮妮 基于JMF的视频监控系统研究[期刊论文]-安防科技2009(12) 4. 阮若林.徐水秀 基于Java的网络语音信号传输的实现[期刊论文]-咸宁学院学报2004,24(6) 5. 黄武新.谈士力.李宪华.戎海亮 基于网络和视觉的多机械人研究平台[期刊论文]-机电一体化2010(5) 6. 徐园园.郑力新.XU Yuan-yuan.ZHENG Li-xin 利用ISP技术的控制系统网络实验室的设计[期刊论文]-华侨大学 学报(自然科学版)2010,31(4) 7. 杨妮妮.YANG Ni-ni 基于JMF的视频监控系统研究[期刊论文]-科学技术与工程2009,9(10) 8. 冷波.唐建雄.Leng Bo.Tang Jianxiong 基于JMF的多媒体远程监控系统的设计和实现[期刊论文]-武汉理工大学 学报(信息与管理工程版)2006,28(8) 9. 马向华.高强明.MA Xiang-hua.GAO Qiang-ming 网络控制系统在线时延预估策略与实现[期刊论文]-化工自动化 及仪表2007,34(6) 10. 任洁.宋高俊.王阳.REN Jie.SONG Gao-jun.WANG Yang 时变宽带信道的长距离预测[期刊论文]-计算机仿真 2010,27(12) 引用本文格式:宋高俊.黄喜成.刘鼎宇.SONG Gao-jun.HUANG Xi-cheng.LIU Ding-yu 利用Java实现远程控制显微 镜自动聚焦[期刊论文]-南昌航空大学学报(自然科学版) 2010(3)
还剩5页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

沐风星星

贡献于2015-11-18

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf