异步串行接口与以太网服务器的连接

2007-03-09 19:03:27来源: 互联网
摘要:提供一种简便、经济的方法,通过TINI平台实现串行接口设备与以太网的连接。一旦设备连接到以太网,就能提供TINI Web服务。 关键词:以太网 串行接口 TINI 很多电子设备利用串行接口与其它设备进行通信,其中有温度调节器、POS机、远程监控仪、条码扫描仪、票据打印机、射频标签收发器、血压计及其它现场使用的测试设备和新型自动化设备。大多数设备与外部的通信是通过串口进行的,不能直接连接到大型计算机网络,无法满足TCP/IP连接和以太网通信的需求。由于成本和时间问题,很少有人选择对系统进行重新设备的途径。利用本文介绍的基于DS80C390或DS80C400微控制器的TINI平台,可以将孤立的串行设备连接到以太网。 1 TINI和网络 TINI(微网接口)是Dallas Semiconductor开发的一种技术平台,目的是协助用户快速整合DS80C390/DS80C400网络微控制器的研发,TINI定义了一个芯片组,包含一个嵌入式操作系统,其中整合了经过高度优化的Java运行环境。Java编程者可从其中获得一般的嵌入式开发中不多见的强大功能:多线程、无和单元收集、继承性、虚拟化、跨平台能力 、强大的网络支持,以及—最后但很重要—大量免费的开发工具。TINI使用乾通常不直接面对汇编代码。不过,为了优化严格要求速度的通道或者访问底层硬件,同时也支持并鼓励本地语言子程序(TINI操作系统用本地代码写成,因此,串行I/O的吞吐率和现代PC没有明显差异)。除完全支持java.net包外,TINI Java运行环境还包含一个完整实现的javax.com子系统。通过Java可毫不费力地访问TCP/IP和串行口,因此,TINI系统可非常容易地用来实现串行口-以太网桥。 下面的例子中,TINIm390验证模块(放置在E10插槽)是DS80C390 TINI开发平台的硬件部分(TINIm400是配合DS80C400制作的)。除了SRAM、Flash、以太网、CAN总线、1-Wire等,系统还有四个串口,其中DS80C390内部包括两个UART,另外两个是扩充的(采用一片16550选配件)。需要注意的是,E10插座上的两个串行连接器都被接到了serial0,它们只是在DTE/DCE引脚安排上有所差异。详细资料请参阅《TINI特性和开发指南》,PDF文件可以从http://www.ibutton.com/TINI/book.html下载。 2 范例 下面介绍两具具体应用,并从一个普通的串行口-以太网程序中摘录片段出来。经过修改,它几乎可适应于各种应用。这些范例利用TINIm390/400验证模块搭建而成,如图1所示。 可以把TINI验证模块看成“黑盒子”,将多个串行设备挂接到以太网。根据最终设备的需要,TINI可以让数据流直通,也以对数据进行解析、翻译或修改。尽管设计人员可以在TINIm390/400的开发器外壳上运行这些范例,但更合理的做法将其驻留于内存之中,掉电之后还能够自启动,并利用其它一些TINI构造技术使最终产品更加牢靠。如果想修改这些范例,需要具备一些基本的网络知识和编程经验。样例工作代码也可以Dallas公司ftp站点(ftp://dalsemi.com)下载。 (1)虚拟调制解调器 虚拟调制解调器(Modem)利用TINIm390/400和TCP/IP连接,替代特殊调制器和电话线。假定有一个旧设备,比如某工厂的“机器状态监视器”,它利用一个调制解调器,一天之内数次拨号到一个中央服务器,报告机器的状态、负载和效率数据。为了削减服务器端日益增长的调制解调器库,并利用现有的LAN取代连接到设备的电话线,我们可以重写服务器软件以支持TCP/IP,并且用TINI虚拟调制解调器取代每个机器上原有的调制解调器。这样,机器状态监视器就不必再作任何修改,对于最终设备而言,虚拟调制解调器的使用和一个真正的调制解调器完全一样。 除了上述配置,虚拟调制解调器当然也可以成对使用。如果双方都使用虚拟调制解调器,就无须对服务器软件作任何改动,TINI模块可直接替换现有的调制解调器。在此情况之下,虚拟调制解调器每次接到“AID”调制解调器拨号命令时,实际建立的是TCP连接。“ATH”断开命令关闭TCP连接。软件也实现一系列其它的经典AT调制解调器命令,并被诸如Microsoft Windows之类的网络系统认作真调制解调器,此外,虚拟调制解调器还可以侦听TCP端口,当收到“呼叫”信号时,向终端设备发出“振铃”。 下面的代码片段显示了如何对TINIm390上的串行口进行初始化: public static void man(String args[]){ TINIOS.setSerialBootMessagesState(false); TINIOS.setDebugMessagesState(false); TINIOS.setConsoleOutputEnabled(false); System.out.println("Connecting to serial0 at 9600bps," "listening on TCP port 8001"); try{ CommPortIdentifier portId=CommPortIdentifier.getPortIdentifier("seria10"); SerialPort port=(SerialPort)=(SerialPort)portId.open("VmodemTINI",10000); TINIOS.estRTSCTSFlowControlEnable(1,false); TINIOS.setRTSCTSFlowControlEnable(0,true); TCPSerialVirtualModem modem=new TCPSerial VirtualModem(port,/*Comm speed */9600,/*TCP Port */8001); Modem.processIuput(); } catch (Excepiton e){ System.out.println("Exception:+e.toString()); } } 这段代码首先禁止掉所有来自TINI OS的调试输出——TINI上的标准惯例。获得一个端口号后,打开这个端口(如果端口正在被另一个应用使用,第二个参数指明等待多久),接下来,设置硬件流控制状态。由于TINIm390仅有一套RTS/CTS线用于串口0和1,在目标端口使用它们之前,程序首先应该关掉其它端口上的流控制,下面,就是一个Java虚拟调制解调器范例。 虚拟调制解调器类似包含一个AT命令解释器(未在此示出,尽管到目前为止,它是本范例中最大的一部分)和网络代码。下面的代码用来设置串口位速率、数据和停止位,以及奇偶位。从中可以看出,处理入站连接是何等简单: /**Creates a new VirtualModem connected to a serial port on * one end and a TCP port on the data side. * serial --the serial port this VirtualModem talks to. * speed --the speed the serial port should be set to. * tcpport --the TCP port this VirtualModem listens on. * throws IOException when there"s a problem with the serial or TCP port.*/ public TCPSerialVirtualModem(SerialPort serial,int speed,int tcpport) throws IOException { super(serial); try{ serial.setSerialPortParams(speed,SerialPort.DATABITS_8, SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); } catch(Unsupported CommOperationException e){ throw new IOException(); } … serverSock=new ServerSocket(tcpport,1);//backlog of one listenThread=new listenInbound(); listenThread.start(); } 最后,listenThrad()片段可接受一个到来的连接请求: public void run() { int rc; Socket s; While (running){ s=null;//No incoming connection request try { answered=false; s=serverSock.accept(); //Discard incoming connection if already connected if(connected) throw new IOException(); sock=s;//for answer() … (2)UPS监视器 第二个实例是将TINIm390/400连接到一个不间断电源的串口。软件要用网络UPS工具协议,允许多个客户端在多种平台上检测UPS的状态。该项目源于需要由一台没有串口的新Macintosh计算机监视现有的UPS电源的需求。目前存在两种基本的UPS设备,即所谓的智能型和简单型(或“哑巴型”)。简单的UPS在多个串行引脚上指示其工作状态,它实际上输出任何ASCII数据。由于不存在太多的串行引脚,因而它仅能够指示几组有限的信息,如表1所列。 表1 信 号 意 义 RTS(来自 UPS) 电池低 TD(来自 UPS) 使用电池 CTS(去 UPS) 关闭UPS电源 具体实现部分见网络补充版(http://www.dpj.com.cn)。 3 结论 很多现有设备仅支持异步串行通信,然而,当前的许多应用要求以太网和TCP/IP组网能力。利用强大的Java运行环境和基于DS80C390和DS80C400微控制器的TINI技术,很容易在极短时间内开发出一个串行口-以太网转换器

关键字:异步  串行接口  接口  以太网

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200703/2695.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
异步
串行接口
接口
以太网

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved