原始工程:https://zh.arslanbar.net/post.php?t=24584
【最终效果】
1.能够在PC端通过设定的计算机名ping通网卡。
2.能在PC端通过“http://计算机名”访问单片机上的Web服务器。
【注意】
路由器DHCP页面显示的设备名不属于计算机名,而是发送请求时hostname字段的名称。两者可以不相同。
目前共有7篇帖子。
![]() |
原始工程:https://zh.arslanbar.net/post.php?t=24584 【最终效果】 1.能够在PC端通过设定的计算机名ping通网卡。 2.能在PC端通过“http://计算机名”访问单片机上的Web服务器。 【注意】 路由器DHCP页面显示的设备名不属于计算机名,而是发送请求时hostname字段的名称。两者可以不相同。 |
![]() |
【步骤】 注意,原工程中下面这句话设置的是路由器中显示的设备名,跟这里的计算机名没有关系。这个名称是在申请DHCP动态IP地址时发送给路由器的。 |
![]() |
4. 允许网卡接收所有的广播数据包。 设置后,网卡就能接收到PC端的ping命令发送的NetBIOS请求数据包。 |
![]() |
5. 最后我们需要解决Keil MDK编译器本身的问题。 这样一来我们就可以得到正确的输出: |
![]() |
为了给所有的lwip结构体添加__packed关键字,打开之前创建的空白的cc.h文件,添加下面一句话:
#define PACK_STRUCT_BEGIN __packed 然后打开lwipopts.h文件,把之前定义的LWIP_SKIP_PACKING_CHECK宏删掉,也就是删除下面三句话: // 这个必须要定义, 否则在执行lwip_init函数时会在串口中提示: // Assertion "Struct packing not implemented correctly. Check your lwIP port." failed at line 345 in Library\lwip\core\init.c #define LWIP_SKIP_PACKING_CHECK |
![]() |
6. 编译并下载程序。
然后打开浏览器,在地址栏输入“http://enc28j60”,看是否能打开网页。 |
![]() |
![]() |