微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于精简TCP/IP协议栈的信息家电网络服务器

基于精简TCP/IP协议栈的信息家电网络服务器

时间:02-11 来源:不详 点击:

更适合于嵌入式系统下面即是WEB服务器的大体框架。

#include<uip.h>

void http_listen_init(void){

uip_listen(80);

} //http listen初始化

void listen_init(void){

http_listen_init();

}

void applicaTIon(void){

if(uip_connected()) //如果当前的连接状态为connected

switch (uip_conn->lport){

case htons(80):

httpd; //如果80 PORT有数据到达,则调用HTTP处理HTML文件的传送

}

}

    首先,服务器与客户机建立连接,再通过侦听端口80,判断是否有客户请求到达,若有则将调用应用程序httpd进行相应处理,否则,继续侦听。Httpd是用于处理HTTP请求的应用程序,具体设计在协议栈uIP中有描述。uip.h是协议uIP的一个头文件。

在应用软件上实现简单WEB服务器功能,其主要由两个模块构成:一是用户登陆模块;二是家电监控模块。用户登陆模块需要解决用户的合法性检查,即接收用户输入的用户名和密码,进行校验,合法则进入家单监控页面,非法则发出警告页面。家电监控模块针对各家电的硬件情况,收集信息家电的状态码,并通过网页形式显示。

在两个模块中,有一部分相似的处理,即对输入的数据进行解析。现在定义数组htmlinputs来存放解析后的信息。对表单输入的数据进行解析后,将其name值和value值分别存放在htmlinput_struct.name和htmlinput_struct.value里,便于以后的处理。变量htmlinputcount存放表单里输入变量的个数。定义如下:

struct htmlinput_struct htmlinputs[100];

int htmlinputcount=0;

除此外,定义函数get_inputs()和translate()对输入的数据进行处理。

Int get_inputs();//将从表单输入的数据分别装到对应的name/value数据队中

Void translate(char*sourcestr);//解读编码URL字符

具体程序代码在此就不再多述。

整个上层应用程序的流程图如图7所示。

5 小结

以太网作为接口,以S1C33系列微处理器为硬件平台,利用软件化的精简嵌入式TCP/IP,能够实现HTTP服务。当然在系统成熟的条件下,还可以考虑把以太网接口替换为无线网络接口。本文为信息家电网络接入Internet提供了一种无需额外的PC或网关设备的解决方案。这种低成本、高性能的方案,具有可靠、灵活的特点,适用于通信速率不太、允许时延大于1s且需要连接Internet的家庭自动化设备。此外用户还可以根据需要,按照此方法,构造自己的网络服务器,可为普通的电气设备或系统如公共服务设备、家庭医疗保健设备、工业自动化系统等,赋予接入Internet的能力。

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

网站地图

Top