|
|
@@ -294,8 +294,8 @@ void USART2_IRQHandler(void)
|
|
|
HAL_UART_DMAStop(&huart2); // 停止 DMA
|
|
|
|
|
|
|
|
|
- if (strncmp((char *)rx_buf_uart2, "AT", 2) == 0) {
|
|
|
- char *ptr = strstr((char *)rx_buf_uart2, "SRC_ADDR=0x");
|
|
|
+ if (strncmp((char *)rx_buf_uart2_DMA, "AT", 2) == 0) {
|
|
|
+ char *ptr = strstr((char *)rx_buf_uart2_DMA, "SRC_ADDR=0x");
|
|
|
if (ptr != NULL) {
|
|
|
// 移动指针到十六进制数值部分(跳过"SRC_ADDR=0x")
|
|
|
ptr += strlen("SRC_ADDR=0x");
|
|
|
@@ -311,20 +311,23 @@ void USART2_IRQHandler(void)
|
|
|
deviceInfo.loraDeviceAddress_H = (addr >> 8) & 0xFF; // 0xe1
|
|
|
deviceInfo.loraDeviceAddress_L = addr & 0xFF; // 0x16
|
|
|
}
|
|
|
- memset(rx_buf_uart2, 0, sizeof(rx_buf_uart2));
|
|
|
+ memset(rx_buf_uart2_DMA, 0, sizeof(rx_buf_uart2_DMA));
|
|
|
// // 清空缓冲区并重新开启DMA接收
|
|
|
// memset(rx_buf_uart2, 0, sizeof(rx_buf_uart2));
|
|
|
// HAL_UART_Receive_DMA(&huart2, rx_buf_uart2, sizeof(rx_buf_uart2));
|
|
|
- }if (strncmp((char *)rx_buf_uart2, "SUCCESS", 7) == 0) {
|
|
|
+ }if (strncmp((char *)rx_buf_uart2_DMA, "SUCCESS", 7) == 0) {
|
|
|
deviceInfo.loraSendSuccessFlag = 0;
|
|
|
- memset(rx_buf_uart2, 0, sizeof(rx_buf_uart2));
|
|
|
- }else if (rx_buf_uart2[3] == deviceInfo.loraDeviceAddress_H && rx_buf_uart2[4] == deviceInfo.loraDeviceAddress_L){
|
|
|
- deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_VERIFY); //初始化 命令和步骤。说明有新数据过来
|
|
|
+ memset(rx_buf_uart2_DMA, 0, sizeof(rx_buf_uart2_DMA));
|
|
|
+ }else if (rx_buf_uart2_DMA[3] == deviceInfo.loraDeviceAddress_H && rx_buf_uart2_DMA[4] == deviceInfo.loraDeviceAddress_L){
|
|
|
+ if (GET_CMD(deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_INIT ) {
|
|
|
+ memcpy(rx_buf_uart2 ,rx_buf_uart2_DMA, sizeof(rx_buf_uart2_DMA));
|
|
|
+ deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_VERIFY); //初始化 命令和步骤。说明有新数据过来
|
|
|
+ }
|
|
|
}else {
|
|
|
- memset(rx_buf_uart2, 0, sizeof(rx_buf_uart2));
|
|
|
+ memset(rx_buf_uart2_DMA, 0, sizeof(rx_buf_uart2_DMA));
|
|
|
}
|
|
|
// 重新开启 DMA 接收
|
|
|
- HAL_UART_Receive_DMA(&huart2, rx_buf_uart2, sizeof(rx_buf_uart2));
|
|
|
+ HAL_UART_Receive_DMA(&huart2, rx_buf_uart2_DMA, sizeof(rx_buf_uart2_DMA));
|
|
|
}
|
|
|
|
|
|
/* USER CODE END USART2_IRQn 1 */
|