gpt4 book ai didi

tcp - Arduino Ethernet Shield 不接受连接

转载 作者:可可西里 更新时间:2023-11-01 02:44:08 27 4
gpt4 key购买 nike

我一直在玩 arduino 以太网防护罩,试图让基本示例正常工作,但无济于事。这是我的设置:

Arduino Mega 2560 通过 USB 连接到计算机,以太网屏蔽堆叠在其上。我已经尝试了 arduino 软件附带的示例的许多变体,但似乎没有一个能正常工作。在使用 wireshark 进行大量调试之后,我认为:

  • 我无法使用 DHCP,因为它只是在调用 Ethernet.begin(mac) 时挂起。

  • 当我尝试使用静态 ip 时,Ethernet.localIP() 函数返回 0.0.0.0。但是,我可以使用我设置的 ip 从我的计算机 ping 我的设备,并且该设备似乎可以正确地接收和发送数据包。现在的问题是由于某种原因它会断开 tcp 连接。例如,这是我运行的代码离工作最近的:

    #include <SPI.h>
    #include <Ethernet.h>


    byte mac[] = {
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress ip(192,168,2,27);

    IPAddress server(192,168,2,52);

    EthernetClient client;

    void setup() {
    // start the Ethernet connection:
    Ethernet.begin(mac, ip);
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
    }
    Serial.println("a");



    delay(1000);
    Serial.println("connecting...");


    if (client.connect(server, 23)) {
    Serial.println("connected");
    }
    else {

    Serial.println("connection failed");
    }
    Serial.println(Ethernet.localIP());
    }

    void loop()
    {
    // if there are incoming bytes available
    // from the server, read them and print them:
    if (client.available()) {
    char c = client.read();
    Serial.print(c);
    }

    // as long as there are bytes in the serial queue,
    // read them and send them out the socket if it's open:
    while (Serial.available() > 0) {
    char inChar = Serial.read();
    if (client.connected()) {
    client.print(inChar);
    }
    }

    // if the server's disconnected, stop the client:
    if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    // do nothing:
    while(true);
    }
    }

它基本上是以太网/TelnetClient 示例。我在我的电脑上设置了一个远程登录服务器。现在这是 arduino/计算机交换: screenshot

arduino 发送了一个 RST 数据包,但我的服务器继续向它发送问候语和登录提示。我在 arduino uno 上尝试过同样的方法,也尝试过断开 USB 连接并使用另一个电源。那么,可能是什么问题?

最佳答案

问题出在与屏蔽层的连接上,有时这个屏蔽层如果是中文版的,可能会有小的短路。

我试过断开屏蔽层并用电线连接 arduino website indicate for arduino uno (与arduino mega的连接不正确,所以你需要像arduino uno一样连接)

如果不行,试试换个arduino shield。我对同一个盾牌也有类似的问题,通常问题出在与 arduino 的连接上。如果正确连接了 arduino,该示例应该可以工作

关于tcp - Arduino Ethernet Shield 不接受连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176207/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com