新闻中心

EEPW首页>嵌入式系统>设计应用> CAN总线的嵌入式Web服务器设计

CAN总线的嵌入式Web服务器设计

作者: 时间:2011-04-29 来源:网络 收藏

2 嵌入式Web服务器软件设计与实现

2.1 以太网接口驱动程序的实现

要将嵌入式Web服务器接入以太网,就要对RTL8019AS进行编程,完成以太网帧的数据收发,相当于实现PC机中网卡的驱动程序功能。以太网控制器驱动程序用于设置RTL8019AS的工作状态和工作方式,分配收发数据的缓冲区,通过对地址及数据口的读写来完成以太网帧的接收与发送。首先要对RTL8019AS进行复位,并将其设置为跳线模式;然后对RTL8019AS的工作参数进行设置,以使其开始工作;接下来就读写RTL8019AS的RAM以完成数据包的接收和发送。程序流程如图3所示。

2.2 嵌入式Web服务器TCP/IP协议栈的实现

TCP/IP协议栈是SX虚拟外设的一个重要实现,是基于SX处理器的应用系统与Internet实现互联的基础。通过这些协议栈,可以更加方便地开发基于Internet的嵌入式应用系统。

以太网数据的传输是采用MAC地址来识别的,而ARP协议提供IP地址和数据链路层使用MAC地址之间的转换功能。为了保证系统在太网的通信,首先要实现ARP协议。由于嵌入式Web服务器要能在Internet上通信,在网络层一定要实现IP协议,还要实现能报告数据传送差错等情况的ICMP协议。在应用层,主要实现远端主机通过浏览器的访问控制方式,所以要实现HTTP协议;而HTTP协议是基于TCP协议实现传输的,加上TCP协议是面向可靠的数据流的传输,基于应用的需要对可靠性的要求,在传输层采用TCP协议,并对TCP协议进行了简化处理,主要针对HTTP协议开发TCP协议。

图4为TCP/IP协议栈主流程图。系统初始化后,进入主程序循环部分。主程序循环包括两大部分:对接收到的以太网数据帧进行解包和对欲发送的数据进行封装并发送。对接收到的以太网数据帧进行解包,供应用程序使用;对欲发送的数据进行打包,将数据以以太网数据帧的格式发送出去,使采用TCP/IP协议的以太网内所有计算机能收到此数据帧。

图4

工业现场数据经嵌入式Web服务器上传到以太网才能被用户利用,因此网络用户和Web服务器之间通信程序的开发也是本课题中很重要的一部分。课题中嵌入式Web服务器实现的功能主要是现场实时数据发布功能。实时数据包括温度、设备运行状态信息、通信状态信息、时钟信息等。嵌入式Web服务器将实时数据以网页形式发布到Internet上,远方客户通过接入Internet浏览该服务器发布的工业现场实时信息。本设计采用Brower/Server(简称B/S)开发模式。用这种方式开发嵌入式Web服务器应用程序具有很多优点。比如降低客户端的要求,方便客户端的分布使用,客户端的开发和维护费用降低等。但是因为SX单片机的资源有限,在用单片机搭建的服务器上编程实现实时动态数据的浏览任务较重。在服务器端运行程序,速度也受到限制,加上网页界面或程序结构的单方面调整都将导致整个系统全盘修改,系统的灵活性与可扩展性差。在设计中,如果仅仅采用B/S访问方式,其功能是难以完全完成的。针对应用传统B/S模式开发Web服务器应用软件的弊端,提出了改进方案。

为克服传B/S访问模式的弊端,做了以下两点改进。

①采用套接字编程,实现部分服务器程序在客户端运行,在客户端浏览器实现动态网页显示实时数据。在改进方案中,实现动态数据的实时浏览采用了Java applet技术。

②不再将HTML语言写入汇编程序,在浏览器端解板成网页,而是利用嵌入式Web服务器扩展的EEPROM24C256与SX52相连,用来存储要浏览的Web文件。当浏览器与Web服务器交互时,利用HTTP协议通过统一资源定位器URL来确定Web服务器应该为浏览器提供哪些资源。

这种改进方案在访问模式上还是通过浏览器访问嵌入式Web服务器,在通信模式上却利用了C/S(Client/Server)模式,其于套接字来编程,即所谓的B/S和C/S相结合模式。图5为B/S和C/S结合模式的原理。

通过B/S方式访问Web服务器上的静态网页,在个网页中嵌有Java applet文件。客户端的IE浏览器浏览这个网页时,会把网页中标识的Java applet源程序下载到客户端执行。在Java applet源程序中,创建了一个套接字来完成与服务器的通信(前提是在Web服务器上同时运行一个相应的服务器监听程序),主要是获取实时数据,用于在浏览器中显示。事实上,Java applet中的Socket通信是一个典型的C/S访问方式。

通过这种B/S和C/S相结合的访问方式,能够很好的实现实时数据的动态浏览。特别是这种实现方式秉承了B/S和C/S两者的优点,具有很大的灵活性。

以下是服务器与客户端applet通信具体实现过程。

①创建Socket。用tcbLocalPortMSB和tcbLocalPortLSB设置服务器监听端口号,具体设为8080;用myIP3~0设置服务器IP址,具体设为192.168.1.111。

tcp/ip相关文章:tcp/ip是什么




评论


相关推荐

技术专区

关闭