LWIP und NETCONN API + Freertos Frage

OP #5106474
Hi

sieht jnd auf Anhieb was ich hier falsch mache?
Ich benutze auf ein STM32 LWIP + free rtos. Ich will auf dem selben port 
UDP empfangen und senden.
So wie der Code jetzt ist, funktioniert es nicht. Beim ersten Start des 
UDP script gehts, beim 2ten mal nicht mehr.

Wenn ich Zeilen X1-X3 uncommente dann geht alles gut.

Wenn ich den Osdelay(1), was ich selber dazu erfunden hab, rausnehme, 
kriege ich einen statistischen bug. -> hard fault. Den kann ich aber 
nicht debuggen weil die board einzementiert sind :-(

Was wäre die korrekte rangehensweise?
Wäre für jeden Tip dankbar!!!!!!!!
uint8_t MyData[700];

/*---------------------------------------------------------------------- 
-------------*/
static void udpecho_thread(void *arg)
{
  err_t err, recv_err;

  LWIP_UNUSED_ARG(arg);
  uint8_t send_buffer[32]={0xff};
  uint16_t len = 0;


  conn = netconn_new(NETCONN_UDP);
  if (conn!= NULL)
  {
    err = netconn_bind(conn, IP_ADDR_ANY, ARTNET_PORT);

    if (err == ERR_OK)
    {
      while (1)
      {

        recv_err = netconn_recv(conn, &buf);

        if (recv_err == ERR_OK)
        {
          addr = netbuf_fromaddr(buf);
          port = netbuf_fromport(buf);
          len = netbuf_len(buf);
          Incr_debug(TLC_OUT);
          if (len < 700)
            netbuf_copy(buf, &MyData, len);
          if (len > 32)
            netbuf_ref ( buf,send_buffer , 32);
          netconn_connect(conn, addr, port);
          buf->addr.addr = 0;
          netconn_send(conn,buf);
          // ohne dieses delay kriege ich
          osDelay(1);
          netbuf_delete(buf);

          //wenn ich diese 3 zeilen uncommente geht alles ok.
          //X1 netconn_delete(conn);
          //X2 conn = netconn_new(NETCONN_UDP);
          //X3 err = netconn_bind(conn, IP_ADDR_ANY, ARTNET_PORT);
      }
      else
      {
        netconn_delete(conn);
      }
     }
  }
 }
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.