This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3200:TCP IP 套接字问题

Guru**** 2487425 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1212489/cc3200-tcp-ip-socket-issue

器件型号:CC3200

我的要求是建立 WiFi 到 UART 桥接器。 我使用了 TCP IP 套接字 SDK 代码、并在两个不同的任务中使用 FreeRTOS 对其进行了修改、如下所示:

//主代码中添加的部分代码

OSI_TaskCreate (UART_TO_WiFi、"WiFi_Tx"、\
OSI_STACK_SIZE、NULL、3、NULL);

/*为从 WiFi 到 UART 的数据创建任务*/
OSI_TaskCreate (WiFi_to_uart、"WiFi_Rx"、\
OSI_STACK_SIZE、NULL、2、NULL);

/*启动调度程序*/
OSI_START();

//uart_to_WiFi 代码  

静态 void uart_to_WiFi (void *pvParameters)

  /*局部变量*/
  字符 TX_buffer [1024];
  INT 索引= 0;
  字符;

while (1)

   /*清除数据*/
   memset (TX_BUFFER、'\0'、sizeof (TX_BUFFER));

   /*从 UART 读取数据*/
   for (;;)
   {
     chr = UartGetChar();
     如果(CHR ='\n')
     {
       tx_buffer[index]= chr;
       索引= 0;
       中断;
      }
      方案
       {
        tx_buffer[index]= chr;
        索引++;
       }
    }

     如果(strlen (TX_BUFFER)> 0)
     {
      /*通过 WiFi 发送数据*/
      int err = sl_Send (sock、TX_buffer、strlen (TX_buffer)、0);

      if (err < 0)
      {
        uart_print ("发送数据时出错\n\r\n);
       }
    }

 /*任务延迟*/
 OSI_SLEEP (12);
  }
}

//WiFi_to_uart 代码

静态空 WiFi_to_uart (void * pvParameters)

  /*局部变量*/
  字符 rx_buffer [1024];
  INT 索引= 0;

  while (1)
  {
     /*清除数据*/
     memset (rx_Buffer、'\0'、sizeof (rx_Buffer));

     /*通过 WIFI 接收数据*/
     int err = sl_Recv (sock、Rx_buffer、sizeof (Rx_buffer)、0);

    if (err > 0)
    {
      /*将数据写入 UART */
      while (index < strlen (rx_buffer))
       {
         UartPutChar (rx_buffer[index]);
         索引++;
       }
       索引= 0;
    }

   /*任务延迟*/
   OSI_SLEEP (15);
  }
}

问题是数据通过 WiFi 传输,但第一次 recv()函数不工作。 因此、数据不匹配、即2个 Tx 数据是1Rx 数据、第3个 Tx 数据是2个 Rx 数据、以此类推。

能否说明问题出在哪里?

谢谢。

德瓦哈帕