12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #ifndef _EC800_H_
- #define _EC800_H_
- //----------------------包含
- #include "usart.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdbool.h>
- #include <ctype.h>
- #include "cJSON.h"
- #include "cmsis_os2.h"
- #include "nmea.h"
- #include "main.h"
- #include "turnDetection.h"
- //----------------------宏
- //--------参数定义
- #define TIMEOUT_MS 2 // 接收响应的等待时间,单位为100毫秒
- #define TURN_INTERVAL_TIME_MS 10 // 发布消息的间隔时间单位为100毫秒 转弯过程中的上传时间间隔
- #define PUBLISH_TIME_MS 300 // 发布消息的间隔时间单位为100毫秒 行车过程中的上传时间间隔
- #define CTR_CODE_JUDETIME 106
- #define CTR_CODE_REALDATE 202
- //--------AT指令基础配置
- #define AT_CMD_TEST "AT\r\n" // 检查模组状态 模块返回:OK
- #define AT_CMD_ATE0 "ATE0\r\n" // 取消模块回显 模块返回:OK
- #define AT_CMD_CPIN "AT+CPIN?\r\n" // 检查SIM是否正常 模块返回:+CPIN: READY
- #define AT_CMD_CSQ "AT+CSQ\r\n" // 检查信号 模块返回:+CSQ: 25,99 注:主要25这个字段小于31就行
- #define AT_CMD_CREG "AT+CREG?\r\n" // 查询模组是否注册上GSM网络 模块返回:+CREG: 0,1 注:1或者5为正常
- #define AT_CMD_QIDEACT "AT+QIDEACT=1\r\n" // 关闭移动场景 模块返回:OK
- #define AT_CMD_QIACT "AT+QIACT=1\r\n" // 打开移动场景 模块返回:OK
- #define AT_CIMI "AT+CIMI\r\n" // 查询 IMSI 模块返回: <IMSI> OK
- //--------连接mqtt服务器
- #define AT_CMD_QMTCFG \
- do { \
- "AT+QMTCFG=\"qmtping\",0,30\r\n" \
- } while (0) // 设置MQTT心跳 模块返回:OK
- #define AT_CMD_QMTCFG_SET_DATA_MODE "AT+QMTCFG=\"recv/mode\",0,0,1\r\n" // 设置接收数据的模式 模块返回:OK
- #define AT_CMD_QMTOPEN "AT+QMTOPEN=0,\"39.98.37.180\",32449\r\n" // 为模块打开一个网络 模块返回:+QMTOPEN: 0,0
- #define AT_CMD_QMTCONN "AT+QMTCONN=0,\"NULL\",\"hechun\",\"admin123\"\r\n" // 连接到mqtt服务器 模块返回:+QMTCONN: 0,0,0
- //--------订阅主题以及发布
- #define TOPIC1 "" // 订阅主题1
- #define TOPIC2 "" // 订阅主题2
- #define AT_CMD_QMTSUB(TOPIC1, TOPIC2) \
- do { \
- "AT+QMTSUB=0,1,\"TOPIC1\",0,\"TOPIC2\",0\r\n" \
- } while (0) // 连接到mqtt服务器 模块返回:+QMTCONN: 0,0,0
- #define STR_TOPIC "" // 访问的主题
- #define AT_CMD_QMTPUBEX(STR_TOPIC, len) \
- do { \
- " AT+QMTPUBEX=0,0,0,0,\"STR_TOPIC\",len\r\n" \
- } while (0) // 连接到mqtt服务器 模块返回:+QMTCONN: 0,0,0
- //--------AT指令的响应
- #define AT_RESP_OK "OK\r\n"
- #define AT_RESP_ERROR "ERROR\r\n"
- #define AT_RESP_CPIN_READY "+CPIN: READY\r\n\r\nOK\r\n"
- #define AT_RESP_CSQ "+CSQ: \r\n"
- #define AT_RESP_QMTOPEN "+QMTOPEN: 0,0"
- #define AT_RESP_QMTCONN "+QMTCONN: 0,0,0"
- #define AT_RESP_QMTSUB "+QMTSUB: 0,1,0,0"
- #define AT_RESP_QMTPUBEX_RE "> \r\n"
- #define AT_RESP_QMTPUBEX "+QMTPUBEX: 0,0,0"
- //--------GNSS的配置
- #define AT_QGPS_1 "AT+QGPS=1\r\n" // 打开 GNSS 模块返回:OK
- #define AT_QGPS_0 "AT+QGPS=0\r\n" // 关闭 GNSS 模块返回:OK
- #define AT_QGPSCFG_out_port "AT+QGPSCFG=\"outport\",\"uartdebug\"\r\n" // 通过调试串口输出NMEA语句 模块返回:OK
- #define AT_QGPSCFG_nmeasrc "AT+QGPSCFG=\"nmeasrc\",1\r\n" // 启用/禁用通过 AT+QGPSGNMEA 获取 NMEA 语句。
- // 使能后,执行AT+QGPSGNMEA, NMEA 语句将以命令返回值的形式通过 AT 口输出。 模块返回:OK
- #define AT_QGPSCFG_gpsnmeatype "AT+QGPSCFG=\"gpsnmeatype\",63\r\n" // 配置 NMEA 语句的输出类型 为 所有 格式 模块返回:OK
- #define AT_QGPSCFG_gnssconfig "AT+QGPSCFG=\"gnssconfig\",1\r\n" // 配置支持的 GNSS 卫星导航系统为 GPS + BeiDou 模块返回:OK
- #define AT_QGPSCFG_autogps "AT+QGPSCFG=\"autogps\",0\r\n" // 禁用 GNSS 自启动 模块返回:OK
- #define AT_QGPSCFG_apflash "AT+QGPSCFG=\"apflash\",0\r\n" // 禁用 AP-Flash 快速热启动功能。 模块返回:OK
- #define AT_QGPSLOC "AT+QGPSLOC=0\r\n" // 获取定位信息 纬度和经度显示格式<latitude>,<longitude>格式: ddmm.mmmmN/S,dddmm.mmmmE/W
- #define AT_QGPSGNMEA_GGA "AT+QGPSGNMEA=\"GGA\"\r\n" // 查询 GGA 语句
- #define AT_QGPSGNMEA_GSA "AT+QGPSGNMEA=\"GSA\"\r\n" // 查询 GSA 语句
- #define AT_QGPSGNMEA_RMC "AT+QGPSGNMEA=\"RMC\"\r\n" // 查询 RMC 语句
- //---------------------函数声明
- void EC800M_SendCommand(const char* command);
- char* EC800M_RecRespond(char *haystack, const char *needle );
- void EC800_recEnable(void);
- extern void EC800_stateTransition_use(void);
- #endif
|