Всем привет.
У меня модуль SIM800 отправляет SMS при работе с ним через терминал и USB/UART-преобразователь. При работе с STM32 он вообще отвечает на АТ-команды, но SMS отказывается отсылать. Баланс в норме, связь присутствует. В чем дело? Привожу код, отвечающий за отправку SMS, и лог, присылаемый STMкой в отладчик. Судя по логу, программа проходится по коду, отправляющему SMS и идёт дальше, высылая в лог "SMS is sent". На деле сообщение не отправляется. Почему, если на всё остальное модем реагирует адекватно?
strcpy((char *)TxData, "AT+CMGF=1\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),100);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 3000);
printf("AT+CMGF is \r\n");
printf(RxData);
printf("\r\n");
osDelay(10000);
flag=1;
while(flag==1){
uint8_t RxData[64] = {0};
osDelay(2000);
strcpy((char *)TxData, "AT+CMGS=\"+799999999\"\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),100);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 5000);
printf("Poluchen simvol \r\n");
printf(RxData);
printf("\r\n");
if(strstr((char *)RxData,">")){
printf("Phone number valid\r");
flag=0;
}
else{printf("Phone number invalid\r");}
osDelay(1000);
}
strcpy((char *)TxData, "SMS from SIM800");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),100);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
osDelay(10000);
strcpy((char *)TxData, end_sms_cmd);
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),100);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 5000);
printf("SMS is sent\r\n");
printf(RxData);
printf("\r\n");