OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7118|回复: 10

关于lwip的http输出函数问题

[复制链接]

21

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-1-10
在线时间
10 小时
发表于 2015-1-5 17:15:32 | 显示全部楼层 |阅读模式
5金钱
最近在调试http的应用,打算让网页输出一个表格,表格应该有250行
但实际上输出只有22行,
 static char http_buf[512]={0};
/*-----------------------------------------------------------------------------------*/
static err_t
http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)//处理输入数据

 struct http_state *hs;
 data = p->payload;//把接收到的数据指针交给data

  for(i=0;i<250;i++)
  {
      
// Alarm_Record_Read(&Alarm_record,i);//刷新数据
Alarm_Record_Read(&Alarm_record,(i)%ALARM_RECORD_PAGE_AMOUNT);//刷新数据

//i=i%ALARM_RECORD_PAGE_AMOUNT;

      ret=sprintf(http_buf, "<tr>");
ret+=sprintf(http_buf+ret, "<th>%04d</th><th>%03d</th><th>%03d</th>",Alarm_record.AlarmEvent.Zone,Alarm_record.AlarmEvent.EventCode,Alarm_record.AlarmEvent.EventType);
ret+=sprintf(http_buf+ret,"<th>%04d-%2d-%2d ",Alarm_record.AlarmEvent.Time.tm_year,Alarm_record.AlarmEvent.Time.tm_mon,Alarm_record.AlarmEvent.Time.tm_mday); 
ret+=sprintf(http_buf+ret,"%2d:%02d:%02d</th>",Alarm_record.AlarmEvent.Time.tm_hour,Alarm_record.AlarmEvent.Time.tm_min,Alarm_record.AlarmEvent.Time.tm_sec); 
ret+=sprintf(http_buf+ret,"<th>%d</th><th>%d</th>",Alarm_record.AlarmFlag[2],Alarm_record.AlarmFlag[3]);
ret+=sprintf(http_buf+ret, "</tr>");

  
 

//i=i%ALARM_RECORD_PAGE_AMOUNT;

// for(j=0;j++;j<ret)
{
       hs->file =(char*)&http_buf;//
hs->left = ret;
   send_data(pcb, hs);
tcp_output(pcb);
    tcp_sent(pcb, http_sent);
tcp_output(pcb);
}
//tcp_write(pcb,http_buf,sizeof(http_buf),0);
    memset(http_buf,0,sizeof(http_buf));//清空数据  
}


个人博客www.xiaovdiy.cn
https://shop100764513.taobao.com/
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-1-5 22:54:23 | 显示全部楼层
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2015-1-6 13:10:33 | 显示全部楼层
static char http_buf[512]={0};  <--------- buffer 太小了, http 隨便一個文件都幾k起
回复

使用道具 举报

21

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-1-10
在线时间
10 小时
 楼主| 发表于 2015-1-6 15:49:22 | 显示全部楼层
回复【3楼】溫柔一刀:
---------------------------------
我是分次数发的 
一次发的数据只占buffer的80个值,也就是ret的值,我要发250次,前20次可以正常发出来,后边的就杳无音信了
个人博客www.xiaovdiy.cn
https://shop100764513.taobao.com/
回复

使用道具 举报

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1843
金钱
1843
注册时间
2012-9-16
在线时间
285 小时
发表于 2015-1-6 16:08:25 | 显示全部楼层
回复【4楼】雨山:
---------------------------------
这几天在做Lwip TCP服务器时,遇到了一些问题,和你的情况有点雷同,希望对你有帮助。
数据量是16K,每次1.2K左右,连续发15次,每5s发送一次,但是在调试过程中每次发11次就发不出去了
改变了#define __LWIPOPTS_H__文件里
#define TCP_SND_BUF             (120*TCP_MSS)
#define TCP_SND_QUEUELEN    ((120 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS))
后,就没问题。
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复

使用道具 举报

21

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-1-10
在线时间
10 小时
 楼主| 发表于 2015-1-6 16:13:26 | 显示全部楼层
回复【5楼】象牙塔:
---------------------------------
#define TCP_MSS                 (1500 - 40)   /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */

/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF            (4*TCP_MSS)

/* TCP sender buffer space (pbufs). This must be at least = 2 *
   TCP_SND_BUF/TCP_MSS for things to work. */
#define TCP_SND_QUEUELEN        (6* TCP_SND_BUF)/TCP_MSS

我的是这样的 我试试
个人博客www.xiaovdiy.cn
https://shop100764513.taobao.com/
回复

使用道具 举报

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1843
金钱
1843
注册时间
2012-9-16
在线时间
285 小时
发表于 2015-1-6 16:23:12 | 显示全部楼层
回复【6楼】雨山:
---------------------------------
数据量大的话,把#define __LWIPOPTS_H__里的参数往大里调调,但是操作不当,容易出现问题。比如
#define MEM_SIZE                (200*1024)
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
   sends a lot of data out of ROM (or other static memory), this
   should be set high. */
#define MEMP_NUM_PBUF           100
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
   per active UDP "connection". */
#define MEMP_NUM_UDP_PCB        5
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
   connections. */
#define MEMP_NUM_TCP_PCB        30
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
   connections. */
#define MEMP_NUM_TCP_PCB_LISTEN 30
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
   segments. */
#define MEMP_NUM_TCP_SEG        200
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
   timeouts. */
#define MEMP_NUM_SYS_TIMEOUT    3
/* ---------- Pbuf options ---------- */
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
#define PBUF_POOL_SIZE          200

看你自己的内存使用情况!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复

使用道具 举报

21

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-1-10
在线时间
10 小时
 楼主| 发表于 2015-1-6 19:20:00 | 显示全部楼层
回复【7楼】象牙塔:
---------------------------------
开大了不行
..\OutPut\TS1106-GTA.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_cpu_c.o(.data).
..\OutPut\TS1106-GTA.axf: Error: L6406E: No space in execution regions with .ANY selector matching lanmanager.o(.data).
..\OutPut\TS1106-GTA.axf: Error: L6406E: No space in execution regions with .ANY selector matching wdg.o(.data).
..\OutPut\TS1106-GTA.axf: Error: L6406E: No space in execution regions with .ANY selector matching sample_http.o(.data).
..\OutPut\TS1106-GTA.axf: Error: L6406E: No space in execution regions with .ANY selector matching mobl_op.o(.data).
..\OutPut\TS1106-GTA.axf: Error: L6406E: No space in execution regions with .ANY selector matching mobl_op.o(.data).
..\OutPut\TS1106-GTA.axf: Error: L6406E: No space in execution regions with .ANY selector matching mobl_op.o(.data).
..\OutPut\TS1106-GTA.axf: Error: L6406E: No space in execution regions with .ANY selector matching etharp.o(.data).
..\OutPut\TS1106-GTA.axf: Error: L6407E: Sections of aggregate size 0xd4c bytes could not fit into .ANY selector(s).
个人博客www.xiaovdiy.cn
https://shop100764513.taobao.com/
回复

使用道具 举报

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1843
金钱
1843
注册时间
2012-9-16
在线时间
285 小时
发表于 2015-1-6 20:15:07 | 显示全部楼层
回复【8楼】雨山:
---------------------------------
是啊,所以要配置合适呢么,根据自己的内存使用情况!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-5-22
在线时间
7 小时
发表于 2015-6-4 14:53:12 | 显示全部楼层
回复【8楼】雨山:
---------------------------------
请问大哥!这个是由板子的主控芯片通过http协议对PC机发数据吗?
回复

使用道具 举报

21

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-1-10
在线时间
10 小时
 楼主| 发表于 2015-7-11 11:04:31 | 显示全部楼层
回复【10楼】浩浩平白:
---------------------------------
个人博客www.xiaovdiy.cn
https://shop100764513.taobao.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 19:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表