Может кто-нибудь предложить мне, как написать свой собственный заголовочный файл 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);