专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
【求助】如何实现tcp/ip协议的分包传输?
2019-07-20 23:49
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
11501
8
1527
本帖最后由 yzhh007 于 2016-1-5 14:33 编辑
我现在是将板子和传感器通过网线传输,板子单包数据量接受上限是1500字节左右,但由于现在程序精度要求,传感器发出的每包数据量会超过上限要求,我想把传感器发出的一包数据拆为两包接受,之后再由芯片处理为一包。不知道stm32f4xx这个系列的板子是否支持这样的传输方式呢?希望有高手可以指点一下!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
enan
2019-07-21 09:06
下面转载一个lwip分包发送
我用的stm32f103 +enc28j260+ lwip1.3.2 ,一开始参照例子写了一个web服务器也就是些点led灯的玩意,没什么意思,后来项目需要做个配置网页,由于有多个网页标签,导致网页数组很大,超过了1500,实际上等于1400就发送不出去了。因此我很纠结,如果网页数组限制在1400个字节以内,那么随便写个网页也会超出1400个字节,这样就限制了web服务器的使用。
后来,我查找了很多帖子,都只有提问,回答的都不清楚,经过多次的测试发现了解决办法,也不用修改lwipopts.h文件,web数组可以分多次发送,即自己手动分包,将web数组分割成多个小于1400的数组,多次调用tcp_write(),就可以了,如下:
tcp_write(pcb,http_html_hdr,sizeof(http_html_hdr),1); /* 发送http协议头部信息 */
tcp_write(pcb,login,1300,1); //发送数据
tcp_write(pcb,login+1300,1300,1); //发送数据
tcp_write(pcb,login+2600,sizeof(login)-2600,1); //发送数据
另外, lwip我没用过,我用的是W5500,手动分段后疯狂的往网卡写就行了
加载中...
查看其它8个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
我用的stm32f103 +enc28j260+ lwip1.3.2 ,一开始参照例子写了一个web服务器也就是些点led灯的玩意,没什么意思,后来项目需要做个配置网页,由于有多个网页标签,导致网页数组很大,超过了1500,实际上等于1400就发送不出去了。因此我很纠结,如果网页数组限制在1400个字节以内,那么随便写个网页也会超出1400个字节,这样就限制了web服务器的使用。
后来,我查找了很多帖子,都只有提问,回答的都不清楚,经过多次的测试发现了解决办法,也不用修改lwipopts.h文件,web数组可以分多次发送,即自己手动分包,将web数组分割成多个小于1400的数组,多次调用tcp_write(),就可以了,如下:
tcp_write(pcb,http_html_hdr,sizeof(http_html_hdr),1); /* 发送http协议头部信息 */
tcp_write(pcb,login,1300,1); //发送数据
tcp_write(pcb,login+1300,1300,1); //发送数据
tcp_write(pcb,login+2600,sizeof(login)-2600,1); //发送数据
另外, lwip我没用过,我用的是W5500,手动分段后疯狂的往网卡写就行了
一周热门 更多>