Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Odczytanoie tablicy na Arduino po LAN>>

robo1973 23 Jun 2022 16:17 90 4
  • #1
    robo1973
    Level 15  
    itam !!

    Wysyłam FTP (soced) bytes2send = bytes(str(E_Value) + '\0', 'ascii')

    Teraz po Lan chcę to odczytać w Arduino+ W5100



    Łącze się z serwerem, serwer odczytuje liczby zamiast wysłanego ciągu

    Code:

    void loop() {
      // check for any new client connecting, and say hello (before any incoming data)
      EthernetClient newClient = server.accept();
      if (newClient) {
        for (byte i=0; i < 8; i++) {
          if (!clients[i]) {
            Serial.print("We have a new client #");
            Serial.println(i);
            newClient.print("Robo_FTP, client number: ");
            newClient.println(i);
            // Once we "accept", the client is no longer tracked by EthernetServer
            // so we must store it into our list of clients
            clients[i] = newClient;
            break;
          }
        }
      }

      // check for incoming data from all clients
      for (byte i=0; i < 8; i++) {
        if (clients[i] && clients[i].available() > 0) {
          // Odczyt !! read bytes from a client
          byte buffer[1024];
           
         
          //int count = clients[i].read(buffer,1024);
          int count = clients[i].read() == '\n';
           Serial.println(count);
           //delay(1000);
         
          // write the bytes to all other connected clients
          for (byte j=0; j < 8; j++) {
            if (j != i && clients[j].connected()) {
              clients[j].write(buffer, count);
             
            }
          }
        }
      }



    Jak zmodyfikować program żeby poprawnie odczytać ciąg wysyłany ?

    Coś słyszałem o reinterpret_cast ale nie wiem jak użyć
    Dziękuję za pomoc[/i][/i][/i][/i][/i][/i]
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • #2
    gps79
    Level 31  
    Problem w tym, że w podanym kodzie nic nie odczytujesz do tablicy buffer, a wysyłasz jej zawartość do klientów. Drugim problemem może być to, że przed wysyłką nie sprawdzasz czy klient istnieje.

    Dodano po 4 [minuty]:

    Druga sprawa, to to, czy mamy się domyślać, jak zadeklarowałeś tablicę clients, itd., oraz z jakich bibliotek i z jakiej platformy korzystasz?
  • #3
    robo1973
    Level 15  
    oj wyłączyłem
    linie int count = clients.read(buffer,1024); tak odczytuję tylko przychodzi liczba

    a ja potrzebuję bytes2send = bytes(str(E_Value) + '\0', 'ascii') czyli Sending: b'1\x00'

    platforma Arduino IDE >> Arduino uno + sheld w5100
  • #4
    gps79
    Level 31  
    Zakładam, że korzystasz z wbudowanej w Arduino biblioteki Ethernet.
    Nie mam, jak tego przetestować, ale wydaje mi się, że najprostszy odczyt możesz zrealizować tak:
    Code: c
    Log in, to see the code
  • #5
    robo1973
    Level 15  
    coś takiego znalazłem i działa
    Code:
    clients[i].readBytesUntil('\0' ,status,sizeof(status));
    
    [/i]