2.10 rt-thread实操 W5500 Wiznet + webserver(webnet)

1.menuconfig 使用能webserver功能,我是W5500以太网模块、spiflash w25q128挂载的littlefs、板子上支持tftp功能,tftp客户端功能好使。webnet使用的2.0.3,rt使用的5.1.0,wiznet使用的最新的版本

image

 

image

 

image

 webnet软件使用的是2.0.3版本

2、使用tftp客户端功能获取3个官方例程用的文件,以及创建出对应的目录,建软件包中的docs下的示例文档即可。

image

 

烧录程序后,使用官方的例程先进行测试下。

命令行输入webnet_test,提示正常

image

 

使用官方提供的例程,webnet_test运行后。

网页访问设备ip地址后,页面总是一直刷新不出来,后来进行分析代码,代码执行逻辑大致是,webnet_test命令运行后,会调用web_init函数,进行webnet_thread线程的创建和调用

image

 

webnet_thread线程,调用webnet_module_handle_event(RT_NULL, WEBNET_EVENT_INIT);进行状态。

之后webnet_thread线程进行死循环,监听等待客户端连接,有连接后,调用

webnet_sessions_handle_fds(&tempfds, &writeset);

  session->session_ops->session_handle(session, WEBNET_EVENT_READ);

    _default_session_ops

      _webnet_session_handle

        _webnet_session_handle_read(session);

          webnet_module_handle_uri(session);

            result = webnet_module_handle_event(session, WEBNET_EVENT_URI_PHYSICAL);

           return webnet_module_handle_event(session, WEBNET_EVENT_URI_POST);

            result = webnet_module_system_dofile(session);

 

 

在webnet_module_system_dofile函数中,到最后都是正常的,但是赋值_dofile_ops后,_dofile_ops中有读文件内容,将内容发送给客户端,但是方法没有调用。

 

image

 不知道为什么,始终是卡在select上下不去了,但是writeset的值确实也是有写事件的

image

 

image

 之后分析代码了解到,执行完这个函数,也就是webnet_module_system_dofile这个函数最后出来后的位置,还会往下执行

 

image

 

固在wn_session.c文件中后面加上了几行代码后,让其调用能_dofile_ops的函数中的读文件内容发送的方法后,解决

image

 

image

 

posted @ 2025-08-13 13:36  _小溢  阅读(50)  评论(0)    收藏  举报