From cb9f8345145f29d7d2437953b5647955c4530080 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期四, 13 三月 2025 09:12:02 +0800
Subject: [PATCH] 增加打印串口逻辑方便app端调试

---
 keil/include/drivers/serial_at_cmd_app.c |   72 +++++++++++++++++++++++++++---------
 1 files changed, 54 insertions(+), 18 deletions(-)

diff --git a/keil/include/drivers/serial_at_cmd_app.c b/keil/include/drivers/serial_at_cmd_app.c
index 2b14f64..fde070c 100644
--- a/keil/include/drivers/serial_at_cmd_app.c
+++ b/keil/include/drivers/serial_at_cmd_app.c
@@ -20,6 +20,7 @@
 
 uint8_t mUsartReceivePack[100] = {0};
 uint8_t mUsart2ReceivePack[150] = {0};
+uint8_t mUsart0ReceivePack[150] = {0};
 double jd,wd;
 int analysis_num,pos_state;
 uint8_t state5V_prase_flag=1,gps_prase_flag=1;
@@ -27,7 +28,7 @@
 extern void IO_control_init(void);
 extern void blink_led(uint8_t*state);
 extern void updata_led_power_state(void);
-extern uint8_t gps_success_state;
+extern uint8_t gps_success_state,gps_power_state;
 extern uint8_t gps_success_state,gps_enable_flag,gps_need_data_flag,gps_timeout_flag;
 extern uint16_t gps_wait_count;
 typedef enum
@@ -38,6 +39,7 @@
     //BLE_RECV_STATE_LF,
 } E_BLERecvState;
 static char gps_header[20];
+static char ble_header[20];
 typedef struct
 {
     char m_pData[100];
@@ -55,6 +57,7 @@
 
 
 uint8_t  mUsart2ReceivePack_before , mUsart2ReceivePack_now;
+uint8_t  mUsart0ReceivePack_before , mUsart0ReceivePack_now;
 uint8_t j_ct=0,CT_satrt_temp=0,CT_satrt=0,numb_base=0	;
 
 uint8_t id_cmpare[12]= {0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x30, 0x30, 0x30, 0x31}; //123456780001//测试//RC2202A:
@@ -135,7 +138,7 @@
     }
 
 }
-double d_value;
+double d_value,d_value1;
 void UsartParseDataHandler(uint8_t data)
 {
     if(state5V_prase_flag&&!g_com_map[MODBUS_MODE])
@@ -245,28 +248,26 @@
            
             analysis_num=sscanf((char*)mUsart2ReceivePack,"$%[^,],%*[^,],%[^,],%*[^,],%[^,],%*[^,],%[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*s",gps_header,wdrecv.m_pData,jdrecv.m_pData,Posstate.m_pData);
             if(!memcmp(gps_header,"GNGGA",5))
-            { 
-                if(g_com_map[MODBUS_MODE])
-                    LOG_INFO(TRACE_MODULE_APP,"%s", mUsart2ReceivePack);
-                    d_value = strtod(wdrecv.m_pData,NULL);
-                if(d_value>1)
-                {
-                     blink_led(&gps_success_state);
+            { d_value=strtod(wdrecv.m_pData,NULL);
+							d_value1=strtod(jdrecv.m_pData,NULL);
+							if(d_value>0&&d_value1>0)
+							{
+                    blink_led(&gps_success_state);
                     wd=strtod(wdrecv.m_pData,NULL);
                     jd=strtod(jdrecv.m_pData,NULL);
                     pos_state=atoi(Posstate.m_pData);
-                }
-            } 
-            index = 0;
-            if(pos_state!=0)
-            {
-                //4g.jd=jd;
-                //4g.wd=wd;
+							}
+								if(pos_state!=0)
+								{
                 gps_timeout_flag=0;//不超时接收状态
                 gps_need_data_flag=0;//接收数据完成
                 gps_wait_count=0;//清0接收状态
-//		gps_enable_flag=0;//收到有效数据关闭GPS
-            }
+								gps_power_state=0;//立即关闭gps避免紧接着进入搜索导致未及时关闭//注释为了防止GPS获得数据过快导致DMA缓存区数据重新涌入
+								update_led_power_state();
+								pos_state=0;
+								}
+            } 
+      
             memset(mUsart2ReceivePack,0,sizeof(mUsart2ReceivePack));
             memset(wdrecv.m_pData,0,sizeof(wdrecv.m_pData));
             memset(jdrecv.m_pData,0,sizeof(jdrecv.m_pData));
@@ -278,3 +279,38 @@
     }
 }
 
+void Usart0ParseDataHandler(uint8_t data)
+{
+   
+				static uint16_t warning_distance,temp_id,temp_bind_id;
+        static uint8_t index = 0; 
+        
+        //接收数据开始分析
+        mUsart0ReceivePack[index]  =  data; //char数组传进来参数data
+        mUsart0ReceivePack_before  =  mUsart0ReceivePack_now;
+        mUsart0ReceivePack_now=data;
+        index++;
+        if( mUsart0ReceivePack_before == 0x0D && mUsart0ReceivePack_now==0x0A )//接收数据到“0x0D 0x0A”结束
+        {
+					LOG_INFO(TRACE_MODULE_APP,"收的到蓝牙报文%s\r\n",mUsart0ReceivePack);
+            //解析该条GPS报文
+            analysis_num=sscanf((char*)mUsart0ReceivePack,"$%[^,],%[^,],%[^,],%[^,]\r\n",ble_header,temp_id,temp_bind_id,warning_distance);
+						
+						if(!memcmp(ble_header,"BLE",3)&&temp_id==g_com_map[DEV_ID])
+            { 
+							LOG_INFO(TRACE_MODULE_APP,"成功解析,数据为%x,%x,%d,%d\r\n",temp_id,temp_bind_id,warning_distance,analysis_num);
+							g_com_map[BIND_DEV_ID]=temp_bind_id;
+							g_com_map[ALARM_DISTANCE1]=warning_distance;
+							//save_com_map_to_flash();
+            } 
+      
+            memset(mUsart0ReceivePack,0,sizeof(mUsart0ReceivePack));
+//            memset(wdrecv.m_pData,0,sizeof(wdrecv.m_pData));
+//            memset(jdrecv.m_pData,0,sizeof(jdrecv.m_pData));
+//            memset(Posstate.m_pData,0,sizeof(Posstate.m_pData));
+            index=0;
+            mUsart0ReceivePack_before=0;
+            mUsart0ReceivePack_now=0;
+        }
+}
+

--
Gitblit v1.9.3