谁能建议我如何在Quectel MC60模块中为BLE编写自己的AT命令的头文件,以供参考?

时间:2018-12-20 06:54:06

标签: c embedded header-files quectel

我是嵌入式固件开发的新手,也是第一次使用MC60。 我必须为要在MC60中使用的所有功能编写自己的头文件和库,无论是UART,BLE,GSM,GPS等。我想知道如何在C中编写头文件,从MCU发送AT命令到MC60,然后获取响应。但是,仍未确定要使用的MCU,仅供参考,我想用C语言编写一个脚本,该脚本可以像使用Arduino LCD命令一样自定义MC60的AT命令,方法是使用LiquidCrystal.h库,如果有人可以告诉我如何编写头文件中的BLE模块的一个或两个命令,然后可以作为我自己编写其他命令的参考。

我正在关注BLE的AT命令的此PDF文档,它包含我要在头文件中自定义的所有命令。 https://github.com/nkolban/esp32-snippets/files/2105752/Quectel_MC60_BLE_AT_Commands_Manual_V1.1.pdf

1 个答案:

答案 0 :(得分:1)

  

我想知道如何用C编写可以发送AT命令的头文件

来自simplewikipedia header file

  

在计算机编程中,如果头文件遇到无法理解的词,则可以将其视为编译器使用的字典。

来自wikipedia source code

  

程序的源代码是专门为方便计算机程序员的工作而设计的。

您不能编写将执行操作的头文件。源代码完成计算机的工作,头文件充当字典。

  

我想知道如何用C编写头文件

关于如何通过C用C编写头文件有很多教程。 tutorialspoint上的教程就是其中之一。

  

如果有人可以告诉我如何编写BLE模块的一两个命令

意见:经验法则-谷歌“ github,我想要这个”,您将获得代码示例。

  

我将在MC60中使用的所有功能的库,包括UART,BLE,GSM,GPS

Stackoverflow不是编码服务。

开始上下移动。创建一个抽象。创建API并编写支持抽象的库。向上(或向下)工作并创建所有相关的源文件。

Arduino有许多可以使用的库。 AT命令是您通过通信链接发送的纯数据-主要是通过通用异步收发器(UART)发送的,但不仅如此。您链接的文档是准确的-它列出了可以与设备一起使用的所有可用AT命令。阅读。

  

可以从MCU发送AT命令到MC60,然后获取响应。

Serial中描述了arduino上的所有串行通信。您可以在线在arduino上获得许多串行通信示例。请注意,arduino库使用C ++,而不是C。您可以为uart通信编写自己的抽象(或完全没有抽象)。下载设备的数据表/参考手册,阅读并开始在程序中实现所需的功能。

  

我想要用C语言编写的脚本,该脚本只能自定义AT命令

// abstract API to send the data pointed to by pointer with ptrsize bytes through UART
void uart_send(void *ptr, size_t ptrsize);
// abstract API to read the data from uart and place it at memory pointed to by ptr
// reads as much as ptrsize bytes or until timeout_ms miliseconds timeout
void uart_read(void *ptr, size_t ptrsize, int timeout_ms);

// buffer
char buf[256];

// "customize" buf to the "Power on/off BT" at command that powers up the device
snprintf(buf, sizeof(buf), "AT+QBTPWR=1\r\n");
// power up the device
uart_send(buf, strlen(buf));

// read the response from the device with 1 second timeout
uart_read(buf, sizeof(buf), 1000);
// check the response
if (strcmp(buf, "OK\r\n") != 0) { 
    fprintf(stderr, "Device didn't repond with OK!\n");
    abort();
}


// "customize" buf to have the "Power on/off BT" at command that powers down the device
snprintf(buf, sizeof(buf), "AT+QBTPWR=0\r\n");
// power down the device
uart_send(buf, strlen(buf));

uart_read(buf, sizeof(buf), 1000);
if (strcmp(buf, "OK\r\n") != 0) { 
    fprintf(stderr, "Device didn't repond with OK!\n");
    abort();
}

以上,我已经自定义了用于打开或关闭设备电源的命令。通过简单的snprintf,您可以使用所有系列的printf格式修饰符,包括"%d"

int state = 1;
snprintf(buf, sizeof(buf), "AT+QBTPWR=%d\r\n", state);