基于Web的单片机远程监控系统的设计与实现
有ARP 处理操作就是填写ARP 包。主要程序代码编制如下:
(1)void init_arp(void)//完成ARP 表初始化,概括说就是ARP 表state 字段清0
(2)void arp_send(UCHAR * hwaddr,ULONG ipaddr,UCHAR msg_type)//完成ARP 请求
(3)void arp_rcve(UCHAR xdata * inbuf)// 完成响应操作
(4)UCHAR xdata * arp_resolve(ULONG dest_ipaddr) //完成从cache 里面查找对应//IP 地址的物理地址,如果没有,就发送ARP 请求
3.3.2 IP 协议的实现
网际协议 IP 是TCP/IP 协议族中最为核心的协议,它的主要功能是负责把数据交付给主机,当目标主机与原主机处于不同的物理网络中时,IP 负责把数据包路由到相应的目标网络上。Internet 上所有的数据都以IP 数据包格式传输。IP 协议最大的特点是提供不可靠的和无连接的数据包传送服务。IP 协议主要实现以下两个子程序:
(1) void ip_send(UCHAR xdata*outbuf,ULONG ipaddr, UCHAR proto_ id,DINT len)//发送IP 数据;该子程序用来创建一个发送数据报。
(2) void ip_rcve(UCHAR xdata *inbuf) //接收IP 数据;该子程序检测一个外来数据包,并对数据包作相应的处理。
3.3.3 TCP 协议的实现
1.使用TCP 状态机:TCP 协议是整个TCP/IP 协议的核心,也是传输层中最复杂的协议。TCP 协议在两个端点之间建立了等效于物理连接的逻辑连接。数据沿着这个连接双向传输。连接的双方必须对发送和接收的数据保持跟踪,以便能够检测出数据流中的遗漏和重复。
2.使用简单的确认机制:序列号和确认号这两个字段用于协同完成TCP 协议中的确认工作。对于每个接收到的数据包进行确认号的计算,需要从接收到的数据包中提取TCP 报文的数据部分长度,并进行计算,这增加了处理器的运算量。但如果每次只对单个TCP 报文进行确认的话,并没有太大的难度。TCP 协议主要包含的程序如下:
(1) init_tcp(void) //初始化TCP 协议
(1) Tcp_send(UINT flags, DINT hdr_len, UCHAR nr) //发送TCP
(2) Tcp_retransmit(void) //重发TCP 数据
(3) Tcp_inactivity(void) //停止TCP
(4) Tcp_rcve(UCHAR xdata * inbuf, UINT len) //接收TCP 数据
3.3.4 HTTP 协议简介
HTTP 协议是TCP 协议的高层协议,HTTP 的请求和应答都是一行或多行文本,它的结束标志是一个换行符[5].如果请求成功,数据就沿着该连接发送,直到发送完为止。HTTP的端口号为80.HTTP 中的命令称呼为方法(method),其中GET 语句用来获取文档,POST语句用来粘贴文档。通过判断GET 和POST 语句后面的文件名来判断所需要传递的文件的位置。
请求:
GET / HTTP/1.1
响应:
HTTP/1.1 200 OK
Content-type: text/html
……
……
4.应用部分
本 WEB 服务器系统几乎可以应用于所有对实时性要求不是很高的场合,只要对本系统的相关部分做些修改或改进,例如:客户端的访问权限、IP 地址的过滤等,就可应用于诸如远程抄表、信息家电的远程控制等场合。下面图7 为ping 命令测试网络不通到通的连接状态,图8 实现了局域网内任意主机通过ip 地址形式访问单片机内部存诸的网页,从而实现对单片机系统的远程监控。
图7 网络连接测试
图8 远程监控温度
5.结束语
实现了基于单片机的 TCP/IP 协议栈,使单片机控制的系统具有了WebServer 的功能,这样可以使用PC 机通过因特网远程访问单片机系统,也可以使用单片机系统将有用的信息通过因特网发送到远端的PC 或其它终端上。为嵌入式设备实现远程数据采集、远程监控、远程诊断、远程帮助、远程升级、远程重构等功能提供了可能,这是嵌入式系统发展的趋势。
- openwebmailV1.60安装教学(11-12)
- Linux中WebLogic的安装和配置(04-14)
- Web服务在TM1300上的实现(07-04)
- 基于Linux NFS的Web数码相框设计 (08-27)
- 嵌入式Web服务器移植与测试(03-03)
- 实时内核μC/OS-II下的网络监控系统的设计(04-13)