单片机嵌入式Internet技术的Web应用实现
时间:11-24
来源:互联网
点击:
3 单片机上嵌入式Web服务器的软件实现
3.1 Web服务器的建立
在进行以上的工作之后,用户就可以建立Web服务器,通过uIP协议实现不同的微控制器或工作站之间的通信。Web服务器和客户端浏览器间的通信采用HTTP协议。嵌入式系统经常需要根据用户的指令,采集系统的当前数据信息传送给客户端浏览器,为实现这种客户端浏览器和Web服务器的动态交互,需要在服务器端采用通用网关接口CGI(Common Gateway Interface)技术。CGI是一个在服务器上运行的程序,它分析处理用户发送到服务器上的数据信息,完成动态文件资源的创建和处理,再将用户信息返回给客户端。
Web服务器初始化完成后,服务器等待客户端的连接请求,客户端浏览器输入服务器的IP地址后发一个物理地址解析协议(ARP)请求包,服务器收到后进行应答。客户端收到应答包后发送超文本传输协议(HTTP)包,服务器收到HTTP包后开始建立与客户端的TCP连接并作出对此包的响应。客户端收到响应包后即断开连接,服务器侦测到客户端断开了连接也同时断开连接。
3.2 Web服务器数据处理流程
当系统的网卡接收到从网络传送来的数据包后,首先分析目的地址是否与自己的物理地址一致,如果不一致,则丢弃此包;如果一致,则读取网络数据并分析。如果是ARP请求包,则转入ARP处理程序,并发送一个ARP应答包给客户端。如果是IP包,则交由IP层处理,同时去掉以太网首部[4-5]。IP层根据IP首部的协议字段分析该IP包属于什么数据包,如果是UDP包则,丢弃;如果是ICMP请求包,则发送一个ICMP应答包给客户端;如果是TCP包且IP地址和端口号正确,则接收数据包,数据解包后,将数据部分通过串口输出,控制MAX232现场设备。反之,如果现场通过串口发送数据到单片机,单片机将数据按照TCP协议格式打包,送入RTL8019AS,由RTL8019AS将数据发送到局域网中。根据需要还可以在收到串口数据时,先完成数据预处理,再将处理好的数据送到局域网。具体的处理过程如图2所示。
3.3 单片机上的Web服务器编程
uIP协议栈提供了一个称为宏的UIP_APPCALL的应用程序接口供用户设计应用程序时使用。要在单片机上实现Web Server服务,首先将该宏定义为一个应用程序函数名,然后在此函数中实现HTTP协议。完成后,用户可以从局域网内的任何客户机访问该单片机Web服务器。如果分配一个公网IP地址,则也可以从Internet上访问此Web服务器。实现的程序如下:
#define UIP_APPCALL uip_http /*定义宏UIP_APPCALL为uip_http的应用程序函数*/
void uip_http(void) /*开始实现http协议建立Web服务器*/
{struct uip http_state*s;
s=(struct uip app_state*)uip_conn->appstate;
if(uip_connected())
{… /*打开连接接口函数,开始一个新的应用程序连接*/
}
if(uip_newdat()||uip_rexmit()) /*接收数据接口或重发数据接口函数,应用程序发送数据*/
{if(uip_datalen()>0) /*判定数据的大小接口函数
{if(uip_conn->lport==80) /*收到新连接端口号为80的请求,此即http应用*/
{update_table_data();
s->dataptr=newpage;
s->dataleft=1957;
uip_send(s->dataptrs->dataleft); /*发送上述http应用数据*/
}
}
}
if(uip_acked()) /*返回ACK数据确认接口函数*/
{if(s->dataleft>uip_mss()&&uip_conn->lport==80)
{s->dataptr+=uip_conn->len;
s->dataleft-=uip-conn->len;
uip_send(s->dataptrs->dataleft);
}
return;
}
if(uip_poll())
{… /*轮询接口函数用于轮询各个客户端发起的连接*/
return;
}
if(uip_timedout()|| /*判断连接是否超时*/
uip_closed()|| /*关闭当前的连接*/
uip_aborted()) /*中断连接接口*/
{return;}
}
本文设计的系统成功应用在宁波市某商业广场的地下停车场监测系统中。由于该商业广场停车场业务量较大,常常导致车位饱和而客户不知道的情形下进入停车场寻找车位,而该停车场规定进入停车场超过15 min的车辆即开始收费。导致客户常常寻找超过规定的时间而仍未找到停车位但需付费,从而发生客户和管理方之间的纠纷,影响商业广场的整体形象。使用了该系统后,各个车位上的数据采集系统实时采集停车信息并反馈给系统。系统在停车场入口处显示停车场当前有无可停车位以及哪些区域有空闲车位等信息。如果车位已满,将会显示无可停车位。除此之外,管理人员还可通过客户端进行查询、计时计费等工作。本系统最大的优点是开发费用低廉且操作简单。在本文设计的系统中,客户端使用普通的Web浏览器,通过Internet即可与单片机嵌入式Web应用服务器进行通信。客户端浏览器不需要开发额外的软件,也不需要浏览器支持特别的功能。客户端可通过访问嵌入式Web服务器的网页内容与之进行交互。嵌入式Web与现场控制接口互连,可实现对被控设备的远程监测、控制、诊断、管理及维护等。嵌入式技术和Internet技术的相互融合,加速了电子设备的网络化应用趋势。应用单片机作为嵌入式Internet技术的硬件设备可以降低系统的成本。本文设计的嵌入式Web系统根据不同的应用需求,稍加修改即可应用在智能家电、智能建筑、仪器仪表、通讯产品、工业控制等众多领域。
3.1 Web服务器的建立
在进行以上的工作之后,用户就可以建立Web服务器,通过uIP协议实现不同的微控制器或工作站之间的通信。Web服务器和客户端浏览器间的通信采用HTTP协议。嵌入式系统经常需要根据用户的指令,采集系统的当前数据信息传送给客户端浏览器,为实现这种客户端浏览器和Web服务器的动态交互,需要在服务器端采用通用网关接口CGI(Common Gateway Interface)技术。CGI是一个在服务器上运行的程序,它分析处理用户发送到服务器上的数据信息,完成动态文件资源的创建和处理,再将用户信息返回给客户端。
Web服务器初始化完成后,服务器等待客户端的连接请求,客户端浏览器输入服务器的IP地址后发一个物理地址解析协议(ARP)请求包,服务器收到后进行应答。客户端收到应答包后发送超文本传输协议(HTTP)包,服务器收到HTTP包后开始建立与客户端的TCP连接并作出对此包的响应。客户端收到响应包后即断开连接,服务器侦测到客户端断开了连接也同时断开连接。
3.2 Web服务器数据处理流程
当系统的网卡接收到从网络传送来的数据包后,首先分析目的地址是否与自己的物理地址一致,如果不一致,则丢弃此包;如果一致,则读取网络数据并分析。如果是ARP请求包,则转入ARP处理程序,并发送一个ARP应答包给客户端。如果是IP包,则交由IP层处理,同时去掉以太网首部[4-5]。IP层根据IP首部的协议字段分析该IP包属于什么数据包,如果是UDP包则,丢弃;如果是ICMP请求包,则发送一个ICMP应答包给客户端;如果是TCP包且IP地址和端口号正确,则接收数据包,数据解包后,将数据部分通过串口输出,控制MAX232现场设备。反之,如果现场通过串口发送数据到单片机,单片机将数据按照TCP协议格式打包,送入RTL8019AS,由RTL8019AS将数据发送到局域网中。根据需要还可以在收到串口数据时,先完成数据预处理,再将处理好的数据送到局域网。具体的处理过程如图2所示。
3.3 单片机上的Web服务器编程
uIP协议栈提供了一个称为宏的UIP_APPCALL的应用程序接口供用户设计应用程序时使用。要在单片机上实现Web Server服务,首先将该宏定义为一个应用程序函数名,然后在此函数中实现HTTP协议。完成后,用户可以从局域网内的任何客户机访问该单片机Web服务器。如果分配一个公网IP地址,则也可以从Internet上访问此Web服务器。实现的程序如下:
#define UIP_APPCALL uip_http /*定义宏UIP_APPCALL为uip_http的应用程序函数*/
void uip_http(void) /*开始实现http协议建立Web服务器*/
{struct uip http_state*s;
s=(struct uip app_state*)uip_conn->appstate;
if(uip_connected())
{… /*打开连接接口函数,开始一个新的应用程序连接*/
}
if(uip_newdat()||uip_rexmit()) /*接收数据接口或重发数据接口函数,应用程序发送数据*/
{if(uip_datalen()>0) /*判定数据的大小接口函数
{if(uip_conn->lport==80) /*收到新连接端口号为80的请求,此即http应用*/
{update_table_data();
s->dataptr=newpage;
s->dataleft=1957;
uip_send(s->dataptrs->dataleft); /*发送上述http应用数据*/
}
}
}
if(uip_acked()) /*返回ACK数据确认接口函数*/
{if(s->dataleft>uip_mss()&&uip_conn->lport==80)
{s->dataptr+=uip_conn->len;
s->dataleft-=uip-conn->len;
uip_send(s->dataptrs->dataleft);
}
return;
}
if(uip_poll())
{… /*轮询接口函数用于轮询各个客户端发起的连接*/
return;
}
if(uip_timedout()|| /*判断连接是否超时*/
uip_closed()|| /*关闭当前的连接*/
uip_aborted()) /*中断连接接口*/
{return;}
}
本文设计的系统成功应用在宁波市某商业广场的地下停车场监测系统中。由于该商业广场停车场业务量较大,常常导致车位饱和而客户不知道的情形下进入停车场寻找车位,而该停车场规定进入停车场超过15 min的车辆即开始收费。导致客户常常寻找超过规定的时间而仍未找到停车位但需付费,从而发生客户和管理方之间的纠纷,影响商业广场的整体形象。使用了该系统后,各个车位上的数据采集系统实时采集停车信息并反馈给系统。系统在停车场入口处显示停车场当前有无可停车位以及哪些区域有空闲车位等信息。如果车位已满,将会显示无可停车位。除此之外,管理人员还可通过客户端进行查询、计时计费等工作。本系统最大的优点是开发费用低廉且操作简单。在本文设计的系统中,客户端使用普通的Web浏览器,通过Internet即可与单片机嵌入式Web应用服务器进行通信。客户端浏览器不需要开发额外的软件,也不需要浏览器支持特别的功能。客户端可通过访问嵌入式Web服务器的网页内容与之进行交互。嵌入式Web与现场控制接口互连,可实现对被控设备的远程监测、控制、诊断、管理及维护等。嵌入式技术和Internet技术的相互融合,加速了电子设备的网络化应用趋势。应用单片机作为嵌入式Internet技术的硬件设备可以降低系统的成本。本文设计的嵌入式Web系统根据不同的应用需求,稍加修改即可应用在智能家电、智能建筑、仪器仪表、通讯产品、工业控制等众多领域。
嵌入式 电子 单片机 AVR C语言 电路 总线 电阻 传感器 滤波器 相关文章:
- 蓝牙无线电调制解调器Siw1701原理与应用(02-19)
- 嵌入式移动数据库的关键技术(03-20)
- 在嵌入式SQL中怎样使用游标(08-12)
- 嵌入式Linux系统软件开发学习思路详细介绍 (08-20)
- 基于AVR单片机的嵌入式“瘦服务器”系统设计思想(03-11)
- 嵌入式系统设计中的存储碎片收集策略(05-04)