Может кто-нибудь предложить мне, как написать свой собственный заголовочный файл AT-команд для BLE в модуле Quectel MC60, просто для справки?

Я новичок в разработке встроенных прошивок и впервые работаю с MC60. Я должен написать свои собственные файлы заголовков и библиотеки для всех функций, которые я буду использовать в MC60, будь то UART, BLE, GSM, GPS и т. Д. Я хочу знать, как я могу написать файл заголовка в C, который может отправьте команду AT на MC60 из MCU и просто получите ответ. Однако использовать MCU до сих пор не решено. Для справки я хочу сценарий на C, который может просто настраивать AT-команды MC60, как у нас для Arduino LCD-команд, с помощью библиотеки LiquidCrystal.h. Если кто-нибудь может сказать мне, как писать одна или две команды модуля BLE в заголовочном файле, которые могут служить для меня ссылкой, чтобы я сам мог написать другие команды.

Я слежу за этим PDF-документом AT-команд для BLE, и он состоит из всех команд, которые я хочу настроить в своем заголовочном файле. https://github.com/nkolban/esp32-snippets/files/2105752/Quectel_MC60_BLE_AT_Commands_Manual_V1.1.pdf

1 ответ

Решение

Я хочу знать, как я могу написать файл заголовка в C, который может отправить команду AT

Из заголовочного файла simplewikipedia:

В компьютерном программировании заголовочный файл можно рассматривать как словарь, который использует компилятор, если он встречает слово, которое он не понимает.

Из исходного кода Википедии:

Исходный код программы специально разработан для облегчения работы программистов.

Вы не можете написать файл заголовка, который будет выполнять действие. Исходный код выполняет "работу" компьютера, заголовочный файл служит словарем.

Я хочу знать, как я могу написать файл заголовка в C

Есть много учебников о том, как писать заголовочные файлы на C по сети. Учебник по tutorialspoint является одним из них.

если кто-нибудь может сказать мне, как написать одну или две команды модуля BLE

Мнение: эмпирическое правило - Google "Github я хочу это", и вы получите примеры кода.

библиотеки для всех функций, которые я буду использовать в MC60, будь то UART, BLE, GSM, GPS

Stackru не является сервисом кодирования.

Начните свой путь вверх или вниз. Создать абстракцию. Создавайте API и пишите библиотеки, которые поддерживают вашу абстракцию. Пройдите вверх (или вниз) и создайте все соответствующие исходные файлы.

Arduino имеет много библиотек, которые вы можете использовать. AT-команды - это простые данные, которые вы отправляете через канал связи - в основном через универсальный асинхронный прием-передача (UART), но не только. Документация, которую вы связали, является точной - в ней перечислены все доступные AT-команды, которые вы можете использовать с вашим устройством. Прочитайте это.

может отправить AT-команду на MC60 из MCU и просто получить ответ.

Все последовательные коммуникации на Arduino описаны в Serial. Вы можете получить много примеров последовательной связи на 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);
Другие вопросы по тегам