/********************************************************************/
本程序仅供学习参考,未经作者允许,不得用于任何商业用途
FuIP专为单片机而定制的TCP/IP协议栈,适用于任何8,16,32位单片机
FuIP可用于,客户端,服务端,亦可接入fuhome.net 平台进行远程控制
版本:v2.3 正式版 2015年4月7日
龙剑奋斗
定期更新,敬请关注——开放,交流,深入,进步
Copyright fuhome.net 未来之家 实验室,让科技融入生活
/********************************************************************/
键人是从51学习过来的,充分考虑了8位 16位 32位单片机平台特性,采用最易移植写法,因此特别适合任何有单片机基础的网友轻松控制家用电器等,其他扩展fuhome.net 平台会逐步完善。
V1.2版本支持与特性:
1,支持ARP请求、应答(获取目的IP的MAC)
2,支持ICMP_Ping请求,应答(ping命令)
3,支持TCP主动连接,断开,被动连接,断开,数据发送
4,支持UDP发送,接收数据
V1.3 改写了命令识别写法,使用更加简单,效率提高了。(网友yht7891984提出 )
v2.0 更新提示
1、由于单片机RAM完全够用,为了用来方便接入互联网,接收缓冲不再与发送缓冲公用
2、修复TCP连接过程的一些问题,更加兼容不同主机的数据格式。
3、增加了访问外网主机的功能,完善了TCP连接协议,这一点是重大改变。
4、命令识别,发送采用特殊函数,提升了执行效率。
(本demo直接下载到单片机,默认访问百度首页,可以从串口看到数据。
v2.1 更新日志
1、修复了ARP回应bug(网友林海雪原提出)
2、对于TCP/UDP数据不再限制于偶数长度了,奇数偶数均可。
v2.2 更新日志
1、修复了TCP发送检验bug,数据传输bug
2、结合实用,及网友建议,特此做了调整。TCP仅支持被动连接,若需要单片机主动连接(见2.1版本可以访问百度网页)
3、增加了web服务功能,可以实现用网页发送消息给单片机
4、UDP仍然支持主动,被动模式。
5、合并发送接收缓冲区,统一DATA[ ]数组。默认长度为255字节。
v2.3 更新日志(20150112)
1、增加DHCP协议,可以自动获取IP,以补充固定IP的不足之处(如不需要请用 v2.2版本其采用固定IP,视个人情况而定)。
2、改善数据报长度只能在255以内的限制,可以扩大到TCP/IP规定的最大数据报。
PS.利用fuhome.net网站平台,互联网(电脑,手机)控制单片机,详情fuhome.net/bbs/演示视频教程)
灰常简单,目前实现了远程控制(手机APP和web网页控制,并且带返回信息),传感器数据上传显示,众多爱好者一起在努力开发更多好玩的有趣的扩展
2.2及以版本下IP采用固定IP:
本机IP:192.168.1.150
默认网关是家庭常用的:192.168.1.1
如果家里的路由器网关是其他如:192.168.0.1,
请自行修改网关IP为192.168.0.1、本机IP为192.168.0.150
2.3版本采用自动获取IP
内存分配机制:
以太网首部: EN_Head[14]
IP首部: IP_Head[20]
UDP伪首部: UDP_False[12]
UDP首部: UDP_Head[8]
TCP伪首部: TCP_False[12]
TCP首部: TCP_Head[20]
ARP数据: ARP_Data[28]
ICMP数据: ICMP[40]
发送数据缓冲,DATA数据: DATA[255](键人默认长度255,可改,不同版本不同,v2.3为了适应需要改善了数据报长度的限制)
接收包缓冲同上公用(包含ETHERNET头,IP头,TCP/UDP首部)
DATA[255](默认长度255,可改,但是为了接收,长度至少TCP>=54,UDP>=42)
(本demo占用RAM大约500Byte,还是要看缓冲你的设定值)
例程采用STC12单片机,因此用了STC文件替换keil4的包了。大家可用到这里下载替换包,用于其他单片机就不用了,自己移植即可。
FuIP协议栈例程标配硬件原理图链接:http://fuhome.net/bbs/forum.php?mod=viewthread&tid=2034
本人用的是miniv3+enc28j60模块,移植的fuipv2.3,通过udp协议与龙剑奋斗的服务器通信,实现远程控制,为保护隐私,所以将程序中的密码修改了,如果移植了请自行修改!!
|