logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Odczytywanie wysłanego ciągu przez Arduino+W5100 z serwera FTP

robo1973 23 Cze 2022 16:17 312 4
REKLAMA
  • #1 20072929
    robo1973
    Poziom 15  
    Posty: 679
    Pomógł: 2
    Ocena: 59
    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

    
    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]
  • REKLAMA
  • #2 20073096
    gps79
    Poziom 37  
    Posty: 2180
    Pomógł: 494
    Ocena: 782
    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?
  • REKLAMA
  • #3 20073126
    robo1973
    Poziom 15  
    Posty: 679
    Pomógł: 2
    Ocena: 59
    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
  • REKLAMA
  • #4 20073419
    gps79
    Poziom 37  
    Posty: 2180
    Pomógł: 494
    Ocena: 782
    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:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA