#include "EC801E.h" #include "stdio.h" #include "usart.h" #include "string.h" #include "cJSON.h" #include "uart_dev.h" //控制上电并开机 void EC801E_Power_ON() { // PWR_KEY_4G_Pin低电平,上电自动开机 HAL_GPIO_WritePin(GPIO_4G_PWR_KEY_GPIO_Port, GPIO_4G_PWR_KEY_Pin, GPIO_PIN_SET); //上电 HAL_GPIO_WritePin(GPIO_4G_PWR_CTRL_GPIO_Port, GPIO_4G_PWR_CTRL_Pin, GPIO_PIN_SET); } //开机状态检测 //HAL_OK:正常开机 uint8_t Read_Status() { uint8_t temp_status = HAL_ERROR; temp_status = HAL_GPIO_ReadPin(GPIO_4G_STATUS_GPIO_Port, GPIO_4G_STATUS_Pin) == GPIO_PIN_SET ? HAL_OK : HAL_ERROR; return temp_status; } //串口重定向打印 size_t __write(int handle, const unsigned char * buffer, size_t size) { if(HAL_OK == HAL_UART_Transmit(&huart1,(uint8_t *)buffer,size,100000)) { return size; } else { return -1; } } // MQTT打开客户端网络.连接MQTT服务器.订阅 void MQTT_Config() { // 确保4G模块完全开机 osDelay(5000); // 打开客户端网络 uart_sendstr(g_ec801_uart_handle, "AT+QMTOPEN=0,199.7.140.10,1883\r\n"); // HAL_UART_Transmit(&huart5, (uint8_t *)"AT+QMTOPEN=0,199.7.140.10,1883\r\n", 30, 0xFFFF); // 确保打开网络完成 osDelay(5000); // 连接服务器 uart_sendstr(g_ec801_uart_handle, "AT+QMTCONN=0,Test_SUB\r\n"); // HAL_UART_Transmit(&huart5, (uint8_t *)"AT+QMTCONN=0,Test_SUB\r\n", sizeof("AT+QMTCONN=0,Test_SUB\r\n"), 0xFFFF); // 确保服务器连接完毕 osDelay(5000); // 订阅主题 uart_sendstr(g_ec801_uart_handle, "AT+QMTSUB=0,0,Test_Topic,0\r\n"); // HAL_UART_Transmit(&huart5, (uint8_t *)"AT+QMTSUB=0,0,Test_Topic,0\r\n", sizeof("AT+QMTSUB=0,0,Test_Topic,0\r\n"), 0xFFFF); } void MQTT_Trans_Json() { char *cjson_str = NULL; cJSON * JsonRoot = cJSON_CreateObject(); cJSON_AddStringToObject(JsonRoot, "deviId", "占位"); cJSON_AddStringToObject(JsonRoot, "frameType", "占位"); cJSON_AddNumberToObject(JsonRoot, "timeStamp", 1722844604); cJSON_AddNumberToObject(JsonRoot, "Version", 10); cjson_str = cJSON_Print(JsonRoot); HAL_UART_Transmit(&huart1, cjson_str, sizeof(cjson_str), 0xFFFF); // printf("%s", cjson_str); free(cjson_str); cJSON_Delete(JsonRoot); }