最近一直在搞以太网项目,有一个WEB网页控制单片机的IO口功能,一直没有什么思路,于是请教了很多前辈,有说通过数据流传输,有说通过LWIP实现的,但是用LWIP在硬件就需要采用EN28J60,还要修改传输协议,觉得有点苦恼,所以继续寻找思路,偶然的机会,看到前端的朋友写的代码,突发灵感,于是我就想,我能不能用这个方法呢,于是,便开始撸代码,好,闲话不多说,直接上代码。
JS+AJAX代码如下:
"function $(id)
{ return document.getElementById(id);
};\r"\
"function oorc(id,val,value)
{var ajax = new XMLHttpRequest();
ajax.open('post','key.cgi?'+val);
ajax.send();
ajax.onreadystatechange = function ()
{if (ajax.readyState==4)
{$(id).value=value;
}
}
}\r"\
"function settingsCallback(o)//前端部分,可以选择采用AJAX+原生JS
"<form id='frmSetting' method='POST' action='key.cgi'>"\
C语言代码:(C语言代码是基于TCP/IP)
case METHOD_POST: /*POST???ó*/
mid(http_request->URI, "/", " ", req_name);
if(strcmp(req_name,"config.cgi")==0)
{
cgi_ipconfig(http_request); make_cgi_response(8,(int8*)ConfigMsg.lip,tx_buf);
sprintf((char *)http_response,"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length:%d\r\n\r\n%s",strlen(tx_buf),tx_buf);
send(s, (u_char *)http_response, strlen((char *)http_response));
disconnect(s);
reboot_flag=1;
return;
}
else if(strcmp(req_name,"key.cgi?A")==0)
{
cgi_ipconfig(http_request);
send(s, (u_char *)http_response, strlen((char *)http_response));
GPIO_ResetBits(GPIOB, GPIO_Pin_2);
}
else if(strcmp(req_name,"key.cgi?B")==0)
{
cgi_ipconfig(http_request);
send(s, (u_char *)http_response, strlen((char *)http_response));
GPIO_SetBits(GPIOB, GPIO_Pin_2);
}
else if(strcmp(req_name,"key.cgi?C")==0)
{
cgi_ipconfig(http_request);
send(s, (u_char *)http_response, strlen((char *)http_response));
GPIO_ResetBits(GPIOB, GPIO_Pin_3);
}
else if(strcmp(req_name,"key.cgi?D")==0)
{
cgi_ipconfig(http_request);
send(s, (u_char *)http_response, strlen((char *)http_response));
GPIO_SetBits(GPIOB, GPIO_Pin_3);
}
【拆解】小米AI音箱,看看小爱同学内部究竟有什么
【拆解】斐讯AI智能音箱R1,内部究竟采用了什么?
【视频】老外教你学电子系列第13期-第15期,我就不信还有不懂的!
【最强干货】618个3D封装免费分享
Google Home拆解,看看这个神秘的设备里面到底有什么?
阿里巴巴人工智能实验室2018春季发布会完整版视频
MPS软件帮您搞定DC-DC电源设计!
天呐!身为电子工程师的你,竟然还在用百度找资料?
茸茸大神带你玩跨界,“泛读”“精读”两大神器助你阅读datasheet

