for循环中的AT命令

时间:2018-07-05 09:55:37

标签: c iot uart at-command nrf52

我正在尝试从Nordic NRF52执行AT命令。我正在将Nordic UART module与内置函数app_uart_put(uint8_t byte)配合使用,以将AT命令放置在UART上。接收AT命令的节点是EE-NBIoT module,它在后缀\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 :(得分:0)

首先获取一张A3大纸,找到一支红笔,然后书写1000次

  

我将永远不会使用nrf_delay_ms来替代调制解调器的读取解析响应。

     

我将永远不会使用nrf_delay_ms来替代调制解调器的读取解析响应。

     

我将永远不会使用nrf_delay_ms来替代调制解调器的读取解析响应。

     

我将永远不会使用nrf_delay_ms来替代调制解调器的读取解析响应。

     

我将永远不会使用nrf_delay_ms来代替调制解调器的读取解析响应。

     

...

我对AT command documentation for U-Blox Sara N210进行了简要介绍,尽管简介部分有些简短,但看起来还是不错的。我建议先阅读V.250规范,因为这要更加详尽。因此,在写完1000个句子后,请阅读this answer,首先按照有关V.250的说明进行操作,然后按照给定的代码结构实现如何正确处理AT命令命令/响应文本的操作。


当然,第一部分本来是很有趣的,但是我对其余部分一无所知。您必须填补一些巨大的AT指令知识“漏洞”。除非您这样做,否则您将无法获得可靠的通信。这应该不是很困难,但是需要一些努力。