AT-команды в цикле for - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь выполнить 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);

Почему это не работает? Когда я смотрю на исходящие команды, они равны.

1 Ответ

0 голосов
/ 05 июля 2018

Начните с приобретения большого листа бумаги формата А3, найдите красную ручку и напишите 1000 раз

Я никогда не буду использовать nrf_delay_ms вместо чтения и анализа ответов от модема.

Я никогда не буду использовать nrf_delay_ms вместо чтения и анализа ответов от модема.

Я никогда не буду использовать nrf_delay_ms вместо чтения и анализа ответов от модема.

Я никогда не буду использовать nrf_delay_ms вместо чтения и анализа ответов от модема.

Я никогда не буду использовать nrf_delay_ms вместо чтения и анализа ответов от модема.

...

Я кратко ознакомился с документацией AT-команды для U-Blox Sara N210 , и она кажется приличной, хотя и с краткой вводной частью. Я предлагаю сначала прочитать спецификацию V.250, потому что это гораздо более тщательно. Поэтому после написания 1000 предложений прочитайте этот ответ , сначала следуя инструкциям, касающимся V.250, а затем реализуйте что-то в соответствии с заданной структурой кода, как правильно обрабатывать текст команды / ответа AT-команды.


Конечно, первая часть должна была быть забавной, но я очень серьезно отношусь к остальным; у вас есть огромные пробелы в знаниях AT-команд, которые вы должны заполнить. Вы не сможете иметь надежную связь, пока вы не сделаете. Это не должно быть очень сложно, но это потребует некоторых усилий.

...