Esp32开发板 - VsCode - Ethernet以太网连接报错 - 不允许使用抽象类类型解决

Esp32开发板 - Ethernet以太网连接报错 - 不允许使用抽象类类型解决

使用VsCode ipo ide编程

使用Ethernet库报错 - 不允许使用抽象类类型

main.cop sic
® expected constructor. destructor, or type conversion before rtoken 所 31. 列刀
® 不允许使用抽象类类型-Ethernetserver~的对象 C/C++1322)31. 列@
main.cppt厅 31,列15:纯点拟 西数"Server-begin,没有强制替代项

在这里插入图片描述
修改Server.h文件 - 官方库

文件
Server.h
修改:
virtual void begin(uint16_t port=0) =0;
替换:
virtual void begin() = 0;

并配置好io引脚,在w5100.cpp

在这里插入图片描述
修改w5100.cpp文件 - Ethernet库

文件
w5100.cpp
修改:
SPI.begin();
替换:
SPI.begin(int8_t(14), int8_t(12), int8_t(13), int8_t(15));
插入对应io引脚,根据实际情况选择

使用Ethernet.init(15);设置cs输出,使用spi2引脚方法,QUADWP不连,esp32 - D4引脚连接w5500 - RST引脚,其他照常连接

在这里插入图片描述

在这里插入图片描述
相关测试代码

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 0, 177);
EthernetServer server(80);
void setup()
{
    Serial.begin(115200);
    Ethernet.init(15);
    Ethernet.begin(mac, ip);
    // 查找以太网屏蔽器类型
    if (Ethernet.hardwareStatus() == EthernetNoHardware)
    {
        Serial.println("未找到以太网屏蔽器");
        while (true)
        {
            delay(1);
        }
    }
    if (Ethernet.linkStatus() == LinkOFF)
    {
        Serial.println("以太网线未连接");
    }
    server.begin();
    Serial.print("IP: ");
    Serial.println(Ethernet.localIP());
}
void loop()
{
    // listen for incoming clients
    EthernetClient client = server.available();
    if (client)
    {
        Serial.println("客户进入");
        bool currentLineIsBlank = true; // 以空数据结束
        while (client.connected())
        {
            if (client.available())
            {
                char c = client.read();
                Serial.write(c);
                if (c == '\n' && currentLineIsBlank)
                {
                    // send a standard HTTP response header
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println("Connection: close");
                    client.println("Refresh: 5");
                    client.println();
                    client.println("<!DOCTYPE HTML>");
                    client.println("<html>");
                    // 输出每个模拟输入引脚的值
                    for (int analogChannel = 0; analogChannel < 6; analogChannel++)
                    {
                        int sensorReading = analogRead(analogChannel);
                        client.print("analog input ");
                        client.print(analogChannel);
                        client.print(" is ");
                        client.print(sensorReading);
                        client.println("<br />");
                    }
                    client.println("</html>");
                    break;
                }
                if (c == '\n')
                {
                    // 读下一数据
                    currentLineIsBlank = true;
                }
                else if (c != '\r')
                {
                    // 没有数据
                    currentLineIsBlank = false;
                }
            }
        }
        delay(1);
        client.stop();
        Serial.println("客户离开");
    }
}

最终测试结果

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值