微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Linux的WEB服务器的设计与实现

基于Linux的WEB服务器的设计与实现

时间:10-21 来源:互联网 点击:

户端。设计了 LinkManger类、PPPDaemon类、PPPModemLink类、ModemCommand类、PPPException类,用来实现 PPP通信。其中 LinkManger类:用于管理 PPP连接,启动经由网络接到远端服务器的出站连接,生成一个 PPPDaemon实例用来设置 IP,验证用户名和密码。并实现接收 PPP事务。

PPPModemLink类首先打开一个串口并进行初始化,初始化完成后,把一个串口的对象传递给 PPP,然后创建 ModemCommand对象来控制与调制解调器的串行通信,并通过 SerialPortEvenlistener接口监视 CD以检测调制解调器是否挂起。其定义了 Modem的初始化和复位方法:initializeLink()和 resetModem()。

ModemCommand类负责和 modem具体的串行通信,其分别定义了 sendcommand()、 waitFoResponse()和 receiveCommand()方法。分别用来发送、等待和接收命令。当操作超时,则抛出 DataLinkException;waitforMatc()主要用来供 sendCommand()和 receiveCommand()进行调用,用来判断接收到的字符串是否和匹配字符串一致。当相应操作超时,则抛出 DataLinkException。

2.2 电子邮件功能的实现

在系统设计时,考虑到系统的存储容量,不可能将采集的数据全部存储在本地的系统中,为了保存系统的日志,可以采取定时向指定邮箱发送数据。本系统用 Java语言开发了后台自动发送邮件的功能。邮件采用 BASE64编码,并且支持 SMTP认证。

在本系统中,只需要完成 SMTP的发送方式,而不要求其完成 SMTP的接收方式,这样就简化了编程的难度。SMTP开服务器和 SMTP客户之间的对话过程:首先建立 TCP连接,然后客户端发送 HELO命令以标识发件人的身份,客户端发送 MAIL命令,服务器端以 OK作为响应,表明准备接收。接下来客户端发送 RCPT命令,以标识该电子邮件的计划接收人,服务器端如表示愿意为收件人接收邮件。则在协商结束后发送邮件,用命令 DATA发送,将输入内容一起发送出去。最后结束此次发送,用 QUIT命令退出。所有的命令都是以换行符作为结束。

2.3 嵌入式 Web服务器接口模块的实现

在本系统中为了满足不同工业控制系统的需要,设计有串口、CAN总线接口、Modem接口和 RS-485接口。系统在启动时,从系统的 FLASH中读取 120个字节的初始化信息,并据此来判断是否开启接口,并对所开启的接口进行初始化。由于各个模块的初始化函数己经存在,因此系统初始化时,只要调用相应的函数就够了。PPP已经在网络模块部分介绍,而 RS-485的使用和普通串口的初始化相似,本部分主要介绍 RS-232和 CAN。

2.3.1 RS-232串口驱动函数设计

系统的开发语言是 Java,但 Java本身不提供对串口操作的类,要实现对串口的读写操作,需要用第三方 API函数完成,实际的开发过程中,使用串口通讯协议开发包 comm.jar,它是 J2SE的标准扩展,支持 RS-231串口,并提供了一种与平台无关的串口通信机制。

串口驱动主要实现对串口的读写操作,给应用程序提供发询接收数据的接口。串口正常工作之前,需要进行初始化设置,因此驱动中还有初始化函数。串口的驱动函数串口的驱动函数主要包括: serialInit()用来初始化 UART、serialRead()用来接收字节组、 serialWrite()用来发送字节组。

2.3.2 CAN总线模块

CAN接口在工业控制系统的运用越来越广泛,操作系统提供了对 CAN进行操作的dalsem.com.CanBus类,如要对 CAN进行操作,首先要建立一个 CAN的对象。

CanBus canTest = new CanBus(CanBus.CANBUS0);

由于 DS80C400只提供一个 CAN控制器,所以只能选用 CANBUS0。一旦对象被初始化,就需要设置 CAN的速率。 CAN速率的设置通过设置 Prescaler,TSEGI,TSEGZ和同步段来完成。CAN的计算速率为:CAN波特率=晶振频率/Prescaler+ (TSEG1+TSEG2)。

将上述设置完成后,就可以使 CAN控制器使能了:canTest.enableController();要想完成帧的发送和接收,除了在信息中心设置接收和发送模式外,还必须先定义一个 CanFrame的对象即 CanFrame frame =new CanFrame();要接收一个 CAN的帧时,信息是以 CanFrame对象的形式进行接收,并且调用 canTest.receive(frame);如要发送数据,也必须将数据封装层 CanFrame对象的形式进行发送,并且调用 canTest.sendFrame(frame)。

2.4人机接口模块

本系统将浏览器/服务器(B/S)结构和客户端/服务器(C/S)结构相结合,客户端仍只需使用易于操作的 Web浏览器,使用该模式不仅统一了用户界面,为用户对系统的查询和操作提供了极大的方便,系统还通过 Java Applet平衡了服务器端与浏览器端的负载状况。

为了对控制对象进行远程操作, We

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top