完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
请教下,请教下,关于lwip 轮询函数发送数据 ?
tcp_poll(tPCB,tcp_echoclient_poll,1); //每秒中轮询2次,lwip最大一次只能够发送 1500-40 个字节, 那么我如果一共有20MB字节的数据需要发送,该如何处理啊 ??? /* 轮询函数, */ static err_t tcp_echoclient_poll(void *arg, struct tcp_pcb *tpcb) { err_t ret_err; struct tcp_client_struct *es; es = (struct tcp_client_struct*)arg; if(es != NULL) //连接处于空闲可以发送数据 { if(ReadDataTxStatus()) //判断是否有数据要发送 { es->p=pbuf_alloc(PBUF_TRANSPORT, strlen((char*)tcp_client_sendbuf),PBUF_POOL); //申请内存 pbuf_take(es->p,(char*)tcp_client_sendbuf,strlen((char*)tcp_client_sendbuf)); //将tcp_client_sentbuf[]中的数据拷贝到es->p_tx中 tcp_echoclient_send(tpcb,es);//将tcp_client_sentbuf[]里面复制给pbuf的数据发送出去 CLIENT_DATA_SEND_CLEAR_FLAG; //清除数据发送标志 if(es->p)pbuf_free(es->p); //释放内存 } else if(es->state == ES_TCPCLIENT_CLOSING) { tcp_echoclient_connection_close(tpcb,es);//关闭TCP连接 } ret_err=ERR_OK; } else { tcp_abort(tpcb);//终止连接,删除pcb控制块 ret_err=ERR_ABRT; } return ret_err; } |
|
相关推荐
8个回答
|
|
楼主现在的产品中是如何使用发送的?可能理解上有些不同,我认为需要发送信息的时候,可以写一个死循环就直接等待发送完毕,同时也要给其他的任务进行调度的时间。
|
|
|
|
分包投吧,普通的单片机也不能有那么大的内存给用。
|
|
|
|
本帖最后由 hpdell 于 2017-11-20 16:23 编辑 你好,现在的问题是: 比如我有 一个1MB的数据量需要上传,每次发送 1024 Byte,刚好10次发完,但是这个 轮询函数是每秒钟系统只调用 2次,那么我这个1MB 的数据量,大概需要 5s 左右才能够发送完啊,感觉太慢了啊,有没有其他的什么好方法啊 ?? |
|
|
|
提高系统的调用率,但是也要考虑实际发送需要的时间。我不知道楼主用的是什么外设进行的数据传输。如果是以太网应该还能快。
|
|
|
|
你好,使用的 就是以太网啊,以太网的芯片是 LAN8742 , 如何调快系统的调用率啊 ?? |
|
|
|
为什么不用udp_send去发送数据呢?
|
|
|
|
如果你的发送进程优先级比较低,可以不考虑“同时也要给其他的任务进行调度的时间”,这个问题,高优先级任务时间到了,自然会运行的,死循环自然变为了非死循环。
有个配置文件,可以把1500改为1600,你可以试一下。 |
|
|
|
如何判断这包数据是否发送完了啊?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
316 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
834 浏览 2 评论
1996 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1099 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1525 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 03:32 , Processed in 0.967428 second(s), Total 57, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号