diff --git a/V1.4-Chinese/STM32F103_App1/HardWare/CAR/air780e.c b/V1.4-Chinese/STM32F103_App1/HardWare/CAR/air780e.c index b088f6d..c9fd416 100644 --- a/V1.4-Chinese/STM32F103_App1/HardWare/CAR/air780e.c +++ b/V1.4-Chinese/STM32F103_App1/HardWare/CAR/air780e.c @@ -60,8 +60,10 @@ volatile uint8_t g_air780e_first_publish_ok = 0; static MqttConfig mqtt_cfg; +#if PRODUCT_WITH_GPS /* GNSS 能力标志:cat_connect_network 里 AT+CGNSPWR 成功才置 1(Air780EG 才有) */ static uint8_t s_gnss_present = 0; +#endif /*==== 外部 Flash 校验:读取固件头 8 字节判断合法性 ==== * 非 static:WiFi OTA(net_wifi_ota.c) 复用 */ @@ -303,6 +305,7 @@ static int cat_connect_network(void) { if (catSendCmd("AT+SAPBR=3,1,\"APN\",\"\"", "OK", 1, 20) != 0) return -1; if (catSendCmd("AT+SAPBR=1,1", "OK", 3, 150) != 0) return -1; +#if PRODUCT_WITH_GPS /* GNSS 上电 + 辅助定位(Air780EG 内置北斗/GPS,需 PDP 激活后才能开辅助定位)。 * 非 GNSS 版本模组(纯 Air780E)会回 ERROR:仅告警不阻断联网, * 同时置 s_gnss_present=0 关闭后续定位轮询 */ @@ -315,6 +318,7 @@ static int cat_connect_network(void) { s_gnss_present = 1; log_info("> 4G: GNSS 已开启"); } +#endif log_info("> 4G: 网络 OK"); return 0; } @@ -766,6 +770,7 @@ void air780e_init(void) { } } +#if PRODUCT_WITH_GPS /*==== GNSS (北斗/GPS) 定位周期上报:仅 4G 通道(Air780EG 内置GNSS) ==== * 参考工程《air780EG-V1.1加入北斗GPS数据》的实现: * AT+CGNSINF → +CGNSINF: run,fix,UTC,lat,lon,...(经纬度为十进制度字符串) @@ -886,6 +891,7 @@ static void air780e_gps_poll(void) CAT1_printf("AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22GPS\\22:\\22%s,%s\\22}}\"", MqttInfoStr.ClientID, lon, lat); } +#endif /* PRODUCT_WITH_GPS */ /*==== Process ====*/ void air780e_process(void){ @@ -894,6 +900,8 @@ void air780e_process(void){ U2_CopyFlag = 0; dispatch_one_mqtt_msg(); } +#if PRODUCT_WITH_GPS air780e_gps_poll(); +#endif } diff --git a/V1.4-Chinese/STM32F103_App1/HardWare/SYSINIT/app_loop.c b/V1.4-Chinese/STM32F103_App1/HardWare/SYSINIT/app_loop.c index 086358c..f80112b 100644 --- a/V1.4-Chinese/STM32F103_App1/HardWare/SYSINIT/app_loop.c +++ b/V1.4-Chinese/STM32F103_App1/HardWare/SYSINIT/app_loop.c @@ -68,7 +68,7 @@ void app_init(void) log_info("> 服务器: %s:%d", MqttInfoStr.ServerIP, MqttInfoStr.ServerPort); log_info("> 客户端ID: %s", MqttInfoStr.ClientID); log_info("> 用户名: %s", MqttInfoStr.Username); - log_info("> 固件版本: %u", MqttInfoStr.Ver); + log_info("> 版本序号: %u", MqttInfoStr.Ver); /* W25Q64 外部 Flash,用于 OTA 固件暂存 */ W25Q64_Init(); diff --git a/V1.4-Chinese/STM32F103_App1/Inc/main.h b/V1.4-Chinese/STM32F103_App1/Inc/main.h index e544b8c..e4cbfca 100644 --- a/V1.4-Chinese/STM32F103_App1/Inc/main.h +++ b/V1.4-Chinese/STM32F103_App1/Inc/main.h @@ -32,6 +32,13 @@ extern UART_HandleTypeDef huart3; */ #define PRODUCT_WITH_FEED_SCALE 0 +/*===== GPS 定位配置 ===== + * 同一套固件适配是否带 GNSS 的模组,编译前在这里二选一: + * 1 = 启用北斗/GPS 定位周期上报(仅 4G 通道,需 Air780EG 模组) + * 0 = 不获取不上传(纯 Air780E 无 GNSS 时用,不产生任何 GPS 相关 AT 交互) + */ +#define PRODUCT_WITH_GPS 1 + /*===== MQTT 默认配置 =====*/ ////锦鲤塘增氧投料机-02 //#define MQTT_CLIENT_ID "3eb3d1e51846f296" diff --git a/V1.4-Chinese/STM32F103_App1/README.md b/V1.4-Chinese/STM32F103_App1/README.md index ca53e09..665c201 100644 --- a/V1.4-Chinese/STM32F103_App1/README.md +++ b/V1.4-Chinese/STM32F103_App1/README.md @@ -136,6 +136,8 @@ WiFi 运行:15s MQTT PINGREQ 心跳;TCP 断开(CLOSED)/心跳超时 → 打 ## GPS 定位上报(仅 4G 通道,Air780EG) +**开关**:`Inc/main.h` 的 `#define PRODUCT_WITH_GPS`——`1` 启用定位上报(需 Air780EG 模组);`0` 完全不获取不上报(纯 Air780E 用,不产生任何 GPS 相关 AT 交互,GNSS 初始化/轮询/坐标转换全部编译期剔除)。 + 参考工程《air780EG-V1.1加入北斗GPS数据》移植实现(`air780e.c` 的 `air780e_gps_poll()`)。 ### 工作流程