Я пытаюсь выполнить AT-команды из Nordic NRF52. Я использую Nordic Модуль UART со встроенной функцией app_uart_put(uint8_t byte)
для передачи AT-команд на UART. Узел, который получает AT-команды, представляет собой EE-NBIoT. модуль и срабатывает по постфиксу \r\n
. Когда я запускаю следующий код, я получаю ОК.
while (app_uart_put('A') != NRF_SUCCESS);
while (app_uart_put('T') != NRF_SUCCESS);
while (app_uart_put('+') != NRF_SUCCESS);
while (app_uart_put('C') != NRF_SUCCESS);
while (app_uart_put('F') != NRF_SUCCESS);
while (app_uart_put('U') != NRF_SUCCESS);
while (app_uart_put('N') != NRF_SUCCESS);
while (app_uart_put('=') != NRF_SUCCESS);
while (app_uart_put('1') != NRF_SUCCESS);
while (app_uart_put('\r') != NRF_SUCCESS);
while (app_uart_put('\n') != NRF_SUCCESS);
Но я хочу сделать код более пригодным для повторного использования, поэтому я написал следующую функцию writeCommand.
void writeCommand(char cmd[])
{
while (app_uart_put('A') != NRF_SUCCESS);
while (app_uart_put('T') != NRF_SUCCESS);
while (app_uart_put('+') != NRF_SUCCESS);
uint8_t i;
for(i = 0; cmd[i] != '\0'; i++){
while (app_uart_put(cmd[i]) != NRF_SUCCESS);
}
while (app_uart_put('\r') != NRF_SUCCESS);
while (app_uart_put('\n') != NRF_SUCCESS);
nrf_delay_ms(100);
}
Когда я запускаю эту функцию, как показано ниже, я получаю сообщение об ОШИБКЕ.
char cmd[] = "CFUN=1";
nrf_delay_ms(1000);
writeCommand(cmd);
Почему это не работает? Когда я смотрю на исходящие команды, они равны.
uint8_t i;
наsize_t i
. - person KamilCuk   schedule 05.07.2018AT+CFUN=1
, а второй —AT+CGATT=1
? - person mch   schedule 05.07.2018\r\n
перед отправкой своей команды. - person Ctx   schedule 05.07.2018\r\n
перед командой, вызвавшей проблему - person Lars Erik Tiset Skraastad   schedule 05.07.2018