lwip接收文件 stm32_接收数据
参考火哥的lwip教程,还有 https://www.hexcode.cn/article/show/stm32-ethernet8
啊啊
增加了对lwip的初始化, LwIP_Init函数用于初始化 LwIP协议栈,一般在 main 函数中调用。首先是内存相关初 始化,mem_init函数是动态内存堆初始化,memp_init函数是存储池初始化,LwIP是实现 内存的高效利用,内部需要不同形式的内存管理模式。 还有就是对静态ip地址,mac地址,掩码,网关的设置。如下:
然后就是添加了ETH_CheckFrameReceived,检测接收到数据包的函数。然后对数据包进行相应的处理。
LwIP_Pkt_Handle 函数用于从以太网存储器读取一个以太网帧并将其发送给 LwIP,它 在接收到以太网帧时被调用,它是直接调用 ethernetif_input 函数实现的,该函数定义在 ethernetif.c文件中。
接着是一个被无限循环调用的函数:LwIP_Periodic_Handle
LwIP_Periodic_Handle 函数是一个必须被无限循环调用的 LwIP支持函数,一般在 main函数的无限循环中调用,主要功能是为 LwIP各个模块提供时间并查询链路状态,该 函数有一个形参,用于指示当前时间,单位为 ms。 对于 TCP功能,每 250ms执行一次 tcp_tmr函数;对于 ARP(地址解析协议),每 5s 执 行一次 etharp_tmr函数;对于链路状态检测,每 1s 执行一次 ETH_CheckLinkStatus 函数; 对于 DHCP功能,每 500ms执行一次 dhcp_fine_tmr函数,如果 DHCP处于DHCP_START 或 DHCP_WAIT_ADDRESS 状态就执行 LwIP_DHCP_Process_Handle 函数,对于 DHCP功 能,还有每 60s 执行一次 dhcp_coarse_tmr函数。
然后用wireshark抓包的时候,比较奇怪。如下:
奇怪的地方就是,我初始化的时候只发送了上面的第二个数据包,也就是192.168.2.240的(使用DP83848Send(mydata, 60); 发送的),第一个数据包是192.168.1.122发的,这个我并没有发送,按逻辑推算,这应该是 在 LwIP_Init(); 初始化ip,mac的时候发送的。而且两个数据包都是请求包,也就是opcode=1。找了一下没找到程序是在什么时候发送出去的。。
最后串口助手输出如下:
也就是收到数据包了,可是并不知道收到了啥。
显然,我这个程序设计得不合理,本来以为ping一下会触发LwIP_Periodic_Handle 里的字符串打印函数的,结果想太多了。 没错,接着再设计一个程序,要把收到的数据包打印出来。
在局域网中ping 单片机ip的报文:
注意,这里ping是一个icmp报文,data里面基本就是26个字母。
然后
lwip接收文件 stm32_接收数据相关推荐
- win7 解决飞秋无法接收文件(准备接收)问题
http://zhaolongchn.blog.163.com/blog/static/190658504201242011849320/ 很长一段时间我的飞秋能发送文件但无法接收文件,总是提示准备接 ...
- Android 蓝牙开发(五)OPP接收文件
原址 1 创建rfcomm层sever 要想通过蓝牙接收文件,首先要打开蓝牙.所以先从打开蓝牙进行分析. BluetoothOppReceiver在AndroidManifest.xml文件中进行了 ...
- Django模板、配置文件、静态文件及案例实现(创建模板、设置模板查找路径、模板接收视图传入的数据、模板处理数据、BASE_DIR、DEBUG、本地语言与时区、App应用配置)
1.Django模板 网站如何向客户端返回一个漂亮的页面呢? 漂亮的页面需要html.css.js. 可以把这一堆字段串全都写到视图中, 作为HttpResponse()的参数,响应给客户端. 存在的 ...
- java接收流文件并返回数据
java接收流文件并返回数据 @RequestMapping(value="/updateStatus") public Object updateStatus(HttpServl ...
- Spring MVC--自定义HttpMessageConverter接收JSON格式的数据
替换默认的Jackson,使用fastjson来处理json格式的数据. index.jsp <%@ page language="java" contentType=&qu ...
- Android官方开发文档Training系列课程中文版:通过NFC共享文件之从其它设备接收文件
原文地址:http://android.xsoftlab.net/training/beam-files/receive-files.html Android Beam文件传输系统会将文件拷贝到接收设 ...
- form表单、控制器中接收表单提交数据的4种方式
Form表单 这篇文章主要讲的是form表单的提交 之前我们接触过的form表单元素是在Bootstrap框架里面,这次也将用到Bootstrap框架去布局(见图表1)通过Bootstrap框架布局呈 ...
- php接收不到post数据_PHP解决Vue发起POST请求,接收不到数据
刚开始使用vue对接后端接口时,PHP后端一直接受不到前端传的参数.找了很久,发现vue请求接口传参的形式是流的方式,因此后端要在接受数据的方面做一些改变.这里我用的是PHP原生方法file_get_ ...
- 如何让CDC类USB设备批量接收64字节以上数据
很多STM32开发者在实现CDC类虚拟串口与PC主机通信过程中,有时会遇到点麻烦而不得其解.那就是当主机端单次发送的数据不超过64字节时,接收正常.一旦发送数据量大于64字节时就接收失败,总是出现丢包 ...
最新文章
- 菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty
- Python:glob模块
- SQL server 2012 如何取上个月的最后一天
- OllyDbg的一些快捷键
- spring roo_使用Spring Roo进行快速云开发–第1部分:Google App Engine(GAE)
- java 实现excel样式设置(居中、字体、大小、换行、合并行,列宽、指定特定字符串样式等)
- C++11 并发指南七(C++11 内存模型一:介绍)
- Python知识点之Python面向对象
- 内核aio_linux内核aio功能
- javascript如何用户的判断操作系统
- 【简单思考】noip模拟赛 NTR酋长
- 3个开源TTS(一)—安装使用
- node.js(五)项目创建管理
- 持久化存储与HTTP缓存
- 萌新小白,求大神解答
- PHP更换网页背景,更换网页的背景图
- 戴尔服务器r620引导盘,戴尔R620服务器WINDOWS的操作系统无引导盘安装方法.ppt
- Mr. Kitayuta vs. Bamboos[二分+贪心][图像分析]
- PMI-ACP练习题(7)
- 引擎入门 | Unity UI简介–第1部分(1)
热门文章
- 深入java抽象类和接口
- 3.1.4 操作系统之内存的分配与回收
- python素数判断代码_Python 判断101-200之间有多少个素数,并输出所有素数
- 51单片机之串口通讯应用实例(逻辑分析仪调试)
- 制作一个状态栏中跑马灯效果_snapseed制作“照片中的照片”画中画效果的方法...
- 请在请求中携带deviceid参数_日常工作中最容易犯的几个并发错误,你中了几个?...
- python配置日志的几种方式
- Flask开发微电影网站(二)
- Android之BroadcastReceiver的使用
- Js中for循环的阻塞机制