打印

用野火的LWIP web,想加一点显示的功数据采集结果,改不出

[复制链接]
6087|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 can123dao 于 2013-7-10 09:08 编辑

/* * 函数名:http_recv * 描述  :http接收到数据后的回调函数 * 输入  :tcp_arg设置的参数、tcp_pcb、pcb、err * 输出  :err * 调用  :内部调用  */

static err_t http_recv(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)        
        {  
          char * data = NULL;
        char *UserName =NULL;
        char *PassWord =NULL;
        char *LED_CMD  =NULL;
        char *ch =NULL;
        char *k;
        char *temp;
        int t;
        data = p->payload;        //把接收到的数据指针交给data

         if (err == ERR_OK && p != NULL)        //判断是否非空
         {        
                                                     
                if(strncmp(data,"GET",3)==0)
                        {        
                                                
                                /*第一次与服务器连接,打开登录页面,未输入登录信息*/
                                          tcp_write(pcb,http_html_hdr,sizeof(http_html_hdr),0);      /* 发送http协议头部信息 */
                                          tcp_write(pcb,login,sizeof(login),0);                                      /* 发送登录网页信息 */
                        }
                                                            
                else if(strncmp(data,"POST",4)==0)               
                  {
                                LED_CMD        = strstr(data,"LED_CTRL=");                                       
                                UserName = strstr(data,"UserName=");                 //截取UserName=
                                PassWord = strstr(UserName,"PassWord=");        //截取PassWord=                                                

                                        if(UserName!=NULL && PassWord!=NULL)         /*输入了用户名和密码*/
                                        {        
                                                ch = strchr(UserName,'&');                                 //把&替换为‘\0’
                                                *ch = '\0';
               
                                                UserName +=sizeof("UserName=")-1;                 //提取用户名。sizeof字符串包括终止符‘\0’
                                                PassWord += sizeof("PassWord=")-1;                //提取密码
                                                
                                                if(strcmp(UserName,"wildfire")==0 && strncmp(PassWord,"123456",6)==0)        /*输入的用户名和密码正确*/
                                                {        
                                                        LED1(ON);
                                                //        printf("\r\n提取出的用户名 =%s\r\n提取出的密码 =%s",UserName,PassWord);
/*自己试图这样修改        */                        k=strstr(led_ctrl_on,"℃");
/*自己试图这样修改        */                        t=get_temperature();        
/*自己试图这样修改        */                         sprintf(temp,"%d.%d",t/10,t%10);
/*自己试图这样修改        */                         strncpy(k-4,temp,4);                        
                                                         tcp_write(pcb,http_html_hdr,sizeof(http_html_hdr),0);      /* 发送http协议头部信息 */
                                                        tcp_write(pcb,led_ctrl_on,sizeof(led_ctrl_on),0);          /* 发送led控制网页信息 */
                                                               
                                                 }
后面的大同小异。

const static uint8_t http_html_hdr[] =  HTTP_HEAD;           //http文件头
const static uint8_t login[]= LOGIN;                         //要显示的网页
const static uint8_t led_ctrl_on[] =LED_CTRL_ON;
const static uint8_t led_ctrl_off[] =LED_CTRL_OFF;

/*网页,以数组形式存储。LED控制页面*/
#define LED_CTRL_ON "\
<html>\
<head>\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\
<title>LWIP移植实验 </title>\
</head>\
</body>\
<br><center><h2>STM32开发平台</h2>\
<br><center><b>***********STM32开发板STM32F103-ENC28J60-移植LWIP,web服务器测试***********</b>\
<br><br><br><center><b>***********!!!登录成功!!!***********</b>\
<br><br><br>LED状态:  <input type=\"button\" id=\"b1\" style=\"background:#0000FF\" value=\"亮\" > \
<form name=\"input\" action=\"/html/html_form_action.asp\" method=\"post\">\
<br>点亮LED1<input type=\"radio\" name=\"LED_CTRL\" value=\"ON\" checked=\"checked\">\
<br/>\
<br>关闭LED1<input type=\"radio\" name=\"LED_CTRL\" value=\"OFF\">\
<br><br><center><input type =\"submit\" value =\"控制\">\
<br><br><strong>CPU(STM32)温度:<span style="color:red;">30.5℃ </span> /********想这样改*******/
</body> \
</html>\
原来的移植过来是能行的,就是改了一直改不出来,不知道该怎么弄了,想找个人帮忙看一下。谢谢
沙发
logokfu| | 2013-7-10 15:28 | 只看该作者
楼主能把问题说明白点啊

使用特权

评论回复
板凳
can123dao|  楼主 | 2013-7-10 15:53 | 只看该作者
**kfu 发表于 2013-7-10 15:28
楼主能把问题说明白点啊

有一个lwip web 的例程,是通过web页面控制LED,现在想在上面加一个显示AD采集温度的功能,改不出来。http接收到数据后的回调函数处理有些问题。
两个相关的文件.zip (2.93 KB)

使用特权

评论回复
地板
logokfu| | 2013-7-10 16:17 | 只看该作者
具体的出错现象呢,用红色标注下代码吧

使用特权

评论回复
5
can123dao|  楼主 | 2013-7-10 17:11 | 只看该作者
**kfu 发表于 2013-7-10 16:17
具体的出错现象呢,用红色标注下代码吧

没有错误提示,就是再用原来的IP无法访问WEB页面了。我的想法是做第一处红色标记那样的修改找到网页数组(第二处红色)里的℃,然后将采集到的数据更新进去。不知道这种处理方式是否正确

f.png (55.46 KB )

f.png

使用特权

评论回复
6
logokfu| | 2013-7-10 17:37 | 只看该作者

你先不要采集温度,手动给temp赋一个值debug试试。


使用特权

评论回复
7
logokfu| | 2013-7-10 17:38 | 只看该作者
本帖最后由 **kfu 于 2013-7-10 17:40 编辑

你这个还牵扯到一个确定数据在数组中的位置问题。害怕你的这个位置都没有找对。导致更新数据时候更新的地址不对,会打乱的html的格式。那网页就乱了。

使用特权

评论回复
8
can123dao|  楼主 | 2013-7-10 19:06 | 只看该作者
**kfu 发表于 2013-7-10 17:38
你这个还牵扯到一个确定数据在数组中的位置问题。害怕你的这个位置都没有找对。导致更新数据时候更新的地址 ...

应该是找地方找得不对,或者更新数据的方式不对。谢谢了,我自己再弄弄吧

使用特权

评论回复
9
firstzys| | 2014-10-24 15:03 | 只看该作者
我一直不理解http_recv是怎么被调用的?

使用特权

评论回复
10
can123dao|  楼主 | 2014-10-29 10:19 | 只看该作者
有请求就调用

使用特权

评论回复
11
song19881218| | 2014-10-29 10:48 | 只看该作者
现在都是用javascript,就算用ssi也比你这种模式强的多,把网页数据存到数组中,这要是网页多了,你内存还够用么?

使用特权

评论回复
12
can123dao|  楼主 | 2014-10-29 15:55 | 只看该作者
song19881218 发表于 2014-10-29 10:48
现在都是用javascript,就算用ssi也比你这种模式强的多,把网页数据存到数组中,这要是网页多了,你内存还 ...

这个。。。。
不懂javascript的硬件渣,泪

使用特权

评论回复
13
putron09| | 2014-11-28 15:42 | 只看该作者
顶一下,以后备用

使用特权

评论回复
14
等一个人咖啡| | 2014-11-28 16:15 | 只看该作者
楼主有没有关于LWIP 的资料呀,就是怎么移植联网,,,,现在在学这个,很是迷茫!

使用特权

评论回复
15
szlqb| | 2015-4-1 10:33 | 只看该作者
你好,这个问题解决了吗,我想要这方面的资料,谢谢,我的qq邮箱:630405657@qq.com

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

114

帖子

2

粉丝