2019-07-20 23:49发布
yklstudent 发表于 2016-1-5 15:38 你没定义通信协议?
yklstudent 发表于 2016-1-5 16:53 你可以先去了解下ModbusTCP,它和TCPIP不是一回事情
enan 发表于 2016-1-6 14:51 下面转载一个lwip分包发送 我用的stm32f103 +enc28j260+ lwip1.3.2 ,一开始参照例子写了一个web服务器 ...
最多设置5个标签!
通讯协议应该已经定义好了,就是基于板子的tcpip协议,程序都已经设计好可以使用了。
想问一下,使用ModbusTCP需要在板子上增加新的模块吗?我是想基于现有模块看能否实现,暂时不考虑引入新的模块。
我用的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,手动分段后疯狂的往网卡写就行了
多谢回复!我好好研究一下,另外还有个问题就是,这样手动分包发送的过程中,如果传感器不间断发送数据,那么网口新采集的数据,会将未发送到单片机芯片的数据覆盖掉吗?我担心是不是存在这样一种风险。
一周热门 更多>