CAN总线的嵌入式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。
②将服务器设为Listen监听状态,等待接收客户端连接。用TCP API函数建立被动连接代码如下:
TCPAppInit
Bank TCB_BANK
Mov tcbLocalPortLSB,#APPLET_PORT_LSB;设置TCP服务端口
Mov tcbLocalPortMSB,#APPLET_PORT_MSB
Jmp @TCPAppPassiveOpen;跳转到TCP被动连接程序,进行端口侦听
_TCPAppPassiveOpen
_bank TCP_BANK
mov tcpState,#TCP_ST_LISTEN
clr tcpUnAckMSB
clr tcpUnAckLSB
retp
③当TC
《CAN总线的嵌入式Web服务器设计(第3页)》