我正在使用 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 */
}