首页 > 解决方案 > AT+CIPSENDEX 返回链接无效

问题描述

我正在使用 ESP8266 和 STM32F4。我的问题是;当我尝试发送 AT+CIPSEND 命令时,我看到一个错误:链接无效。我没有发布huart2初始化,因为其他命令正常工作。

我发送 AT 然后代码转到 USART2_IRQHandler这是我的尝试:

uint8_t rx_data;
 char veri[100];
 uint8_t rx_index=0;
 char ok[3]= "OK";
 char command[]="GET /update?api_key=A0AISRD6SB8SKH4J&field1=20.4\r\n";
 int senddt=5;
 char connected[9]="CONNECTED";
 char send_data[60];
 char transmitdata[100];
 char str[100];
char connectrn[9] = "CONNECT\r\n";
 int length;
 int byrk=0;
 char transmitconf[100];
 char bigger[1]=">";

void USART2_IRQHandler(void)
{
  /* USER CODE BEGIN USART2_IRQn 0 */

  /* USER CODE END USART2_IRQn 0 */
  HAL_UART_IRQHandler(&huart2);
  /* USER CODE BEGIN USART2_IRQn 1 */
  HAL_UART_Receive_IT(&huart2,&rx_data,1);
  veri[rx_index]=rx_data;
  rx_index++;
  if (memmem(veri,40,ok,2)!= NULL && byrk==0)
   {
    HAL_UART_Transmit(&huart2,(uint8_t*)"AT+CWMODE=1\r\n",sizeof("AT+CWMODE=1\r\n")-1,100);
    delay_ms(1000);
    HAL_UART_Transmit(&huart2,(uint8_t*)"AT+CWJAP=\"mike\",\"mike123\"\r\n",
                            sizeof("AT+CWJAP=\"mike\",\"mike123\"\r\n")-1,100);
    delay_ms(2000);
    byrk=1;
   }

   if(memmem(veri,40,connected,9)!= NULL && byrk==1 )
   {
    delay_ms(2000);
    HAL_UART_Transmit(&huart2,(uint8_t*)"AT+CIPSTART=\"TCP\",\"184.106.153.149\",80\r\n",
    sizeof("AT+CIPSTART=\"TCP\",\"184.106.153.149\",80\r\n")-1,100);
    byrk=2;
    delay_ms(2000);
    delay_ms(1000);
    length = strlen(command);
    length=length+2;
    sprintf(str,"AT+CIPSENDEX=%d\r\n",length);
    HAL_UART_Transmit(&huart2, (uint8_t *)str,strlen(str), 500);
   }

   if(memmem(veri,60,bigger,1)!= NULL) // **wait for > before sending data** 
    {
    sprintf(send_data,"GET /update?api_key=A0AISRD6SB8SKH4J&field1=%f\r\n",20.4);
    HAL_UART_Transmit(&huart2, (uint8_t *)send_data,strlen(send_data), 500);
    }

  /* USER CODE END USART2_IRQn 1 */
}

标签: esp8266uartstm32f4discoveryesp8266wifi

解决方案


推荐阅读