Browse Source

1、整理EFT 20 70 所有设备

z8359531l 3 months ago
parent
commit
9952fa882e

+ 3 - 9
user_inc/soft_device.h

@@ -11,14 +11,6 @@
 #define NEED_SET 1
 #define NO_NEED_SET 2
 
-enum Drone_type
-{
-    Drone_Z20 = 0,
-    Drone_Z70 = 1,
-    Drone_Z100 = 2,
-};
-extern uint8_t drone_type;
-
 struct weight_init_step
 {
     uint8_t read_k_flag:1;
@@ -55,12 +47,14 @@ enum FACID
 {
     FAC_VK = 0,        // 默认VK
     FAC_EFT = 1,       // EFT
+    FAC_LIFTWEIGHT = 2, //吊运称重
     FAC_QIFEI = 3,     // 启飞播撒
     FAC_VK_ALLINONE = 4,  //VK一体化
     FAC_MIMO_SIG = 5,  // 恩曌单管
     FAC_MIMO_DOU = 6,  // 恩曌双管
     FAC_QIFEI_SIG = 7, // 启飞单管流量计
     FAC_QIFEI_DOU = 8, // 启飞双管流量计
+    FAC_LPUMP = 9, //线性水泵
 
     FAC_VK_BMS = 10,   // vk电池
     FAC_TATTU = 11,    // 格式电池
@@ -319,7 +313,7 @@ typedef struct
     Part_FBradar Part_radarB;
     Connect_check Part_Bradar_Link;
 
-    Connect_check Eft_CanDev_Link[6]; //普通双水泵 四离心  获取版本信息使用
+    Connect_check Eft_CanDev_Link[6]; //柔性双水泵 四离心  获取版本信息使用
 } Device_type;
 extern Device_type Dev;
 

+ 17 - 0
user_inc/soft_seed_weight.h

@@ -3,6 +3,23 @@
 #include "common.h"
 
 
+typedef enum{
+    WEIGHT_DEFAULT = 0,
+    WEIGHT_NORMAL = 1, //普通称重
+    WEIGHT_LIFT = 2, //吊运称重
+    WEIGHT_FPLATE = 3, //前板
+    WEIGHT_TRANFER = 4, //转接板
+}WEIGHT;
+extern uint8_t weight_type;
+
+typedef enum{
+    SPREAD_DEFAULT = 0,
+    SPREAD_NORMAL = 1, //普通播撒
+    SPREAD_JIAOLONG = 2, //搅笼播撒
+}SPREAD;
+extern uint8_t spread_type;
+
+
 //EFT前板
 #define CAN_EFT_FPLATE (0x8876)
 #define CAN_EFT_FPLATE_ACK (0x8877)

+ 16 - 0
user_inc/soft_water.h

@@ -2,6 +2,22 @@
 #define __SOFT_WATER_H
 #include "common.h"
 
+
+typedef enum{
+    SPARY_DEFAULT = 0,
+    SPARY_GEMO = 1, //隔膜泵 需要带流量计
+    SPARY_ROUXING = 2, //柔性泵 
+    SPARY_TRANSFER = 3, //转接板集成喷洒 
+}SPARY;
+extern uint8_t spary_type;
+
+typedef enum{
+    NOZZLE_DEFAULT = 0,
+    NOZZLE_NORMAL = 1,
+    NOZZLE_TRANSFER = 2, //转接板集成喷
+}NOZZLE;
+extern uint8_t nozzle_type;
+
 #pragma pack(1)
 typedef struct{ 
     short liquid_percent;

+ 16 - 6
user_src/soft_device.c

@@ -13,10 +13,10 @@
 #include "soft_update.h"
 #include "config.h"
 
-uint8_t drone_type = Drone_Z20;
 Device_type Dev = { .Flow.facid = 0xff};
 Weight_cal weight_order;
 uint8_t weight_init_count;
+
 bool recv_fmu_seed_info;
 Dev_seed_init seed_init;
 /**
@@ -94,7 +94,7 @@ void update_device_type_data(void)
                 Dev.Seed.speed = eft_info.speed_rpm * 10;
                 Dev.Seed.caplow = eft_info.warn_status & 0x1;
                 Dev.Seed.warn = eft_info.warn_status >> 1;
-                if(drone_type == Drone_Z70)
+                if(spread_type == SPREAD_JIAOLONG)
                 {
                     Dev.Seed.speed = turntable.rpm;
                     Dev.Seed.churn_rpm = churn.rpm;
@@ -138,7 +138,7 @@ void update_device_type_data(void)
                 Dev.Weight.k3 = eft_info.seed_k[2];
                 Dev.Weight.k4 = 0;
                 Dev.Weight.warn = 0;
-                if(drone_type == Drone_Z70)
+                if(weight_type == WEIGHT_TRANFER)
                 {
                     Dev.Weight.kg = fplate.weight;//20单位g  70单位10g
                     Dev.Weight.k1 = z70weight.info.k1;
@@ -149,6 +149,16 @@ void update_device_type_data(void)
                         Dev.Weight.warn = (LiftingWeight_warning << 8) & 0xffff;
                 }
                 break;
+            case FAC_LIFTWEIGHT:
+                Dev.Weight.mode = 0;
+                Dev.Weight.kg = eft_info.weight;
+                Dev.Weight.rate = 0;
+                Dev.Weight.k1 = eft_info.seed_k[0];
+                Dev.Weight.k2 = eft_info.seed_k[1];
+                Dev.Weight.k3 = eft_info.seed_k[2];
+                Dev.Weight.k4 = 0;
+                Dev.Weight.warn = (LiftingWeight_warning << 8) & 0xff00;  
+                break;
             case FAC_QIFEI:
                 Dev.Weight.mode = weight_vkinfo.mode;
                 Dev.Weight.kg = weight_vkinfo.weight / 10;
@@ -224,7 +234,7 @@ void update_device_type_data(void)
                 Dev.Nozzle.rpm2 = nozzle2.rpm;
                 Dev.Nozzle.rpm3 = nozzle3.rpm;
                 Dev.Nozzle.rpm4 = nozzle4.rpm;
-                if(drone_type == Drone_Z20)
+                if(nozzle_type == NOZZLE_NORMAL)
                 {
                     if( (eft_info.watering_warn_status & 0xc) != 0)
                     {
@@ -412,11 +422,11 @@ void update_device_type_data(void)
             switch (Dev.Checklow.facid)
             {
             case FAC_VK:
-                if(drone_type == Drone_Z70)
+                if(spary_type == SPARY_TRANSFER)
                 {
                     Dev.Checklow.L1_status = !mimo_lackloss.status;
                 }
-                else if(drone_type == Drone_Z20)
+                else if(spary_type == SPARY_GEMO || spary_type == SPARY_ROUXING)
                 {
                     Dev.Checklow.L1_status = (uint16_t)L3_status;
                 }

+ 33 - 18
user_src/soft_seed_weight.c

@@ -12,6 +12,8 @@
 
 Spread_par spread_par;
 weight weight_vkinfo;
+uint8_t weight_type = 0;
+uint8_t spread_type = 0;
 /**
   * @file    Eft_Spread_And_Mimolack_recieved_hookfuction
   * @brief   eft播撒器带恩曌断料记
@@ -27,12 +29,14 @@ void Eft_Spread_And_Mimolack_recieved_hookfuction(uint32_t CanID, uint8_t data[]
     {
     //播撒器
     case CAN_EFT_SPREAD:
+        if(spread_type == SPREAD_DEFAULT)
+            spread_type = SPREAD_NORMAL;
         //eft是大端 
         eft_info.valve_angel = data[0];
         eft_info.warn_status = data[1];
         eft_info.can_enable = data[2];
         eft_info.speed_rpm = data[5];
-
+        
         Dev.Seed_Link.connect_status = COMP_NORMAL;
         Dev.Seed.facid = FAC_EFT;
         Dev.Seed_Link.recv_time = HAL_GetTick();
@@ -108,7 +112,10 @@ void can_recv_eft_front_plate(uint32_t CanID, uint8_t data[], uint8_t len)
     switch (CanID)
     {
     case CAN_EFT_FPLATE:
-        if(drone_type == Drone_Z20) //20 70称重协议冲突
+        if(weight_type == WEIGHT_DEFAULT)
+            weight_type = WEIGHT_FPLATE;
+        
+        if(weight_type == WEIGHT_FPLATE)
         {
             memcpy(&fplate,&data[0],sizeof(eft_fplate));
 
@@ -116,12 +123,6 @@ void can_recv_eft_front_plate(uint32_t CanID, uint8_t data[], uint8_t len)
             Dev.Weight.facid = FAC_EFT;
             Dev.Weight_Link.recv_time = HAL_GetTick();
         }
-        else if(drone_type == Drone_Z70)
-        {
-            memcpy(&fplate,&data[0],1);
-            memcpy(&fplate.Rled_tempture,&data[3],4);
-        }
-
         
         Dev.Arm_Link.connect_status = COMP_NORMAL;
         Dev.Arm.facid = FAC_EFT;
@@ -288,7 +289,7 @@ void seed_init_send_info(uint8_t device_type,char *factory)
     }   
     else if (strcmp(factory,"EFT") == 0)
     {     
-        vk_can_id = 0x8877;
+        
         switch (device_type)
         {
         case WEIGHT_DEVICE:
@@ -296,11 +297,25 @@ void seed_init_send_info(uint8_t device_type,char *factory)
             {
                 if(weight_init_eft.step.read_k_flag != 0)
                 {
-                    vk_canbuf[0] = 0xFD;
-                    vk_canbuf[5] = 0xf1;
-                    vk_canbuf[6] = 0xf3;
+                    if(weight_type == WEIGHT_NORMAL || weight_type == WEIGHT_FPLATE)
+                    {
+                        vk_can_id = 0x8877;
+                        vk_canbuf[0] = 0xFD;
+                        vk_canbuf[5] = 0xf1;
+                        vk_canbuf[6] = 0xf3;
+                        Can_Send_Msg_Func(CANID1, vk_canbuf, 8, vk_can_id, CAN_ID_EXT); 
+                    }
+                    else if(weight_type == WEIGHT_TRANFER)
+                    {
+                        vk_can_id = 0x7011;
+                        vk_canbuf[0] = 0xE4;
+                        vk_canbuf[5] = 0xf1;
+                        vk_canbuf[6] = 0xf3;
+                        Can_Send_Msg_Func(CANID2, vk_canbuf, 8, 0x7011, CAN_ID_EXT);
+                    }
+                    
                 }
-                Can_Send_Msg_Func(CANID1, vk_canbuf, 8, vk_can_id, CAN_ID_EXT); 
+                
             }
             break;
         case SEED_DEVICE:
@@ -440,7 +455,7 @@ void Set_Seed_Weight_Par(uint8_t device_type,char *factory)
         case WEIGHT_DEVICE:
             if(weight_order.type != 0)   
             {
-                if(drone_type == Drone_Z20)
+                if(weight_type == WEIGHT_NORMAL || weight_type == WEIGHT_FPLATE)
                 {
                     can_id = 0x8877;
                     can_buf[1] = 0x00;
@@ -497,9 +512,9 @@ void Set_Seed_Weight_Par(uint8_t device_type,char *factory)
                     }
                     Can_Send_Msg_Func(CANID1, can_buf, 8, can_id, CAN_ID_EXT);
                 }
-                else if(drone_type == Drone_Z70)
+                else if(weight_type == WEIGHT_TRANFER || weight_type == WEIGHT_LIFT)
                 {   
-                    if(Z70_LiftingWeight_exist == true)
+                    if(weight_type == WEIGHT_LIFT)
                         can_id = 0x88BB;
                     else
                         can_id = 0x7011;
@@ -584,7 +599,7 @@ void can_sendmsg_eft(void)
     static int eft_count = 0;
     uint8_t eft_canbuf[8] = {0};
 
-    if(Dev.Seed_Link.connect_status == COMP_NORMAL && Dev.Seed.facid == FAC_EFT && drone_type != Drone_Z70)
+    if(Dev.Seed_Link.connect_status == COMP_NORMAL && spread_type == SPREAD_NORMAL)
     {
         seed_init_send_info(SEED_DEVICE,"EFT");
         Set_Seed_Weight_Par(SEED_DEVICE,"EFT");
@@ -615,7 +630,7 @@ void can_sendmsg_eft(void)
             }
         }
     }
-    if((Dev.Weight_Link.connect_status == COMP_NORMAL && Dev.Weight.facid == FAC_EFT)) 
+    if(Dev.Weight_Link.connect_status == COMP_NORMAL) 
     {   
         seed_init_send_info(WEIGHT_DEVICE,"EFT");
         Set_Seed_Weight_Par(WEIGHT_DEVICE,"EFT");

+ 1 - 1
user_src/soft_update.c

@@ -756,7 +756,7 @@ void eft_dev_update_func(void)
     else if(eft_update.dev_id == GROUP_ID_EFTPUMP1_UPDATE || eft_update.dev_id == GROUP_ID_EFTPUMP2_UPDATE ||
          eft_update.dev_id == GROUP_ID_EFTNOZZLE1_UPDATE || eft_update.dev_id == GROUP_ID_EFTNOZZLE2_UPDATE ||
          eft_update.dev_id == GROUP_ID_EFTNOZZLE3_UPDATE || eft_update.dev_id == GROUP_ID_EFTNOZZLE4_UPDATE ||
-        eft_update.dev_id == GROUP_ID_EFTSEED_UPDATE || eft_update.dev_id == GROUP_ID_Z70FB_UPDATE)
+        eft_update.dev_id == GROUP_ID_EFTSEED_UPDATE || eft_update.dev_id == GROUP_ID_Z70FB_UPDATE || GROUP_ID_Z70FBLIFTING_UPDATE)
     {
         canN = CANID2;
     }

+ 464 - 64
user_src/soft_version.c

@@ -778,66 +778,66 @@ bool p1_runing_time = false,p2_runing_time = false,n1_runing_time = false,n2_run
  **/
 void get_eftZ70_version_and_sn(void)
 {
-    uint8_t can_buf[8] = {0};
+    // uint8_t can_buf[8] = {0};
 
-    if(drone_type == Drone_Z70)
-    {
-        if((dev_pump1.regist.sn == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
-           (dev_pump2.regist.sn == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
-           (dev_nozzle1.regist.sn == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
-           (dev_nozzle2.regist.sn == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
-           (dev_nozzle3.regist.sn == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
-           (dev_nozzle4.regist.sn == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL) )
-        {
-            put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
-            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
-        }
-        else if((dev_pump1.regist.soft == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
-                (dev_pump2.regist.soft == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
-                (dev_nozzle1.regist.soft == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
-                (dev_nozzle2.regist.soft == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
-                (dev_nozzle3.regist.soft == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
-                (dev_nozzle4.regist.soft == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL) )
-        {
-            put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
-            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
-        }
-        else if((p1_runing_time == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
-                (p2_runing_time == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
-                (n1_runing_time == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
-                (n2_runing_time == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
-                (n3_runing_time == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
-                (n4_runing_time == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL))
-        {
-            put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
-            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
-        }
-        //称重单独处理
-        else if( dev_weight.regist.sn == false &&Dev.Weight_Link.connect_status == COMP_NORMAL)
-        {
-            put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
-            if(Z70_LiftingWeight_exist == false)
-                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
-            else
-                Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
-        }
-        else if(dev_weight.regist.soft == false && Dev.Weight_Link.connect_status == COMP_NORMAL)
-        {
-            put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
-            if(Z70_LiftingWeight_exist == false)
-                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
-            else
-                Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
-        }
-        else if(weight_runing_time == false && Dev.Weight_Link.connect_status == COMP_NORMAL)
-        {
-            put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
-            if(Z70_LiftingWeight_exist == false)
-                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
-            else
-                Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
-        }
-    }
+    // if(drone_type == Drone_Z70)
+    // {
+    //     if((dev_pump1.regist.sn == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
+    //        (dev_pump2.regist.sn == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
+    //        (dev_nozzle1.regist.sn == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
+    //        (dev_nozzle2.regist.sn == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
+    //        (dev_nozzle3.regist.sn == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
+    //        (dev_nozzle4.regist.sn == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL) )
+    //     {
+    //         put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+    //         Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+    //     }
+    //     else if((dev_pump1.regist.soft == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
+    //             (dev_pump2.regist.soft == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
+    //             (dev_nozzle1.regist.soft == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
+    //             (dev_nozzle2.regist.soft == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
+    //             (dev_nozzle3.regist.soft == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
+    //             (dev_nozzle4.regist.soft == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL) )
+    //     {
+    //         put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+    //         Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+    //     }
+    //     else if((p1_runing_time == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
+    //             (p2_runing_time == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
+    //             (n1_runing_time == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
+    //             (n2_runing_time == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
+    //             (n3_runing_time == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
+    //             (n4_runing_time == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL))
+    //     {
+    //         put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+    //         Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+    //     }
+    //     //称重单独处理
+    //     else if( dev_weight.regist.sn == false &&Dev.Weight_Link.connect_status == COMP_NORMAL)
+    //     {
+    //         put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+    //         if(Z70_LiftingWeight_exist == false)
+    //             Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+    //         else
+    //             Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
+    //     }
+    //     else if(dev_weight.regist.soft == false && Dev.Weight_Link.connect_status == COMP_NORMAL)
+    //     {
+    //         put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+    //         if(Z70_LiftingWeight_exist == false)
+    //             Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+    //         else
+    //             Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
+    //     }
+    //     else if(weight_runing_time == false && Dev.Weight_Link.connect_status == COMP_NORMAL)
+    //     {
+    //         put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+    //         if(Z70_LiftingWeight_exist == false)
+    //             Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+    //         else
+    //             Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
+    //     }
+    // }
 }
 void get_eftdev_version_and_sn(void)
 {
@@ -1020,15 +1020,415 @@ void get_device_version_and_sn(void)
         //获取流量计版本和SN号
         get_flowmeter_version_and_sn();
 
-        //获取EFT设备版本信息
-        if(drone_type == Drone_Z70)
-            get_eftZ70_version_and_sn();
-        else if(drone_type == Drone_Z20)
-            get_eftdev_version_and_sn();
+        get_spread_version_and_sn();
+        get_spary_version_and_sn();
+        get_nozzle_version_and_sn();
+        get_weight_version_and_sn();
+        // //获取EFT设备版本信息
+        // if(drone_type == Drone_Z70)
+        //     get_eftZ70_version_and_sn();
+        // else if(drone_type == Drone_Z20)
+        //     get_eftdev_version_and_sn();
+    }
+}
+
+/**
+  * @file    get_spread_version_and_sn
+  * @brief   获取播撒版本号
+  * @param   none
+  * @details 
+  * @author  Zhang Sir 
+ **/
+void get_spread_version_and_sn( void )
+{
+    uint8_t can_buf[8] = {0};
+
+    if(HAL_GetTick() < 3000)  //有同样的设备同时存在情况
+        return;
+
+    switch (spread_type)
+    {
+    case SPREAD_NORMAL:
+        if(dev_spreader.regist.sn == false)
+        {
+            put_date_to_can(can_buf,0xF8,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
+        }
+        else if(dev_spreader.regist.soft == false)
+        {
+            put_date_to_can(can_buf,0xf9,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
+        }
+        else if(spreader_runing_time == false)
+        {
+            put_date_to_can(can_buf,0xFB,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
+        }
+        break;
+    case SPREAD_JIAOLONG:
+        break;
+    
+    default:
+        break;
+    }
+}
+
+/**
+  * @file    get_spary_version_and_sn
+  * @brief   获取喷洒版本号
+  * @param   none
+  * @details 
+  * @author  Zhang Sir 
+ **/
+void get_spary_version_and_sn( void )
+{
+    uint8_t can_buf[8] = {0};
+
+    if(HAL_GetTick() < 3000)  //有同样的设备同时存在情况
+        return;
+
+    switch (spary_type)
+    {
+    case SPARY_GEMO:
+        break;
+    case SPARY_ROUXING:
+        //水泵1
+        if(Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL)
+        {
+            if(dev_pump1.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
+            }
+            else if(dev_pump1.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
+            }
+            else if(p1_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
+            }
+        }
+        //水泵2
+        if(Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL)
+        {
+            if(dev_pump2.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
+            }
+            else if(dev_pump2.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
+            }
+            else if(p2_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
+            }
+        }
+        break;
+    case SPARY_TRANSFER:
+        //水泵1
+        if(Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL)
+        {
+            if(dev_pump1.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(dev_pump1.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(p1_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            
+        }
+        //水泵2
+        if(Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL)
+        {
+            if(dev_pump2.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(dev_pump2.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(p2_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+        }
+        break;
+    
+    default:
+        break;
+    }
+}
+
+/**
+  * @file    get_nozzle_version_and_sn
+  * @brief   获取离心喷头版本号
+  * @param   none
+  * @details 
+  * @author  Zhang Sir 
+ **/
+void get_nozzle_version_and_sn( void )
+{
+    uint8_t can_buf[8] = {0};
+
+    if(HAL_GetTick() < 3000)  //有同样的设备同时存在情况
+        return;
+
+    switch (nozzle_type)
+    {
+    case NOZZLE_NORMAL:
+        //离心1
+        if(Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL)
+        {
+            if(dev_nozzle1.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
+            }
+            else if(dev_nozzle1.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
+            }
+            else if(n1_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
+            }
+        }
+        //离心2
+        if(Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL)
+        {
+            if(dev_nozzle2.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
+            }
+            else if(dev_nozzle2.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
+            }
+            else if(n2_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
+            }
+        }
+        //离心3
+        if(Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL)
+        {
+            if(dev_nozzle3.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
+            }
+            else if(dev_nozzle3.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
+            }
+            else if(n3_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
+            }
+        }
+        //离心4
+        if(Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL)
+        {
+            if(dev_nozzle4.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
+            }
+            else if(dev_nozzle4.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
+            }
+            else if(n4_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
+            }
+        }
+        break;
+    case NOZZLE_TRANSFER:
+        //离心1
+        if(Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL)
+        {
+            if(dev_nozzle1.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(dev_nozzle1.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(n1_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+        }
+        //离心2
+        if(Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL)
+        {
+            if(dev_nozzle2.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(dev_nozzle2.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(n2_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+        }
+        //离心3
+        if(Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL)
+        {
+            if(dev_nozzle3.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(dev_nozzle3.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(n3_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+        }
+        //离心4
+        if(Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL)
+        {
+            if(dev_nozzle4.regist.sn == false)
+            {
+                put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(dev_nozzle4.regist.soft == false)
+            {
+                put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+            else if(n4_runing_time == false)
+            {
+                put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+                Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+            }
+        }
+        break;
+    default:
+        break;
     }
 }
 
 
+/**
+  * @file    get_weight_version_and_sn
+  * @brief   获取称重版本号
+  * @param   none
+  * @details 
+  * @author  Zhang Sir 
+ **/
+void get_weight_version_and_sn( void )
+{
+    uint8_t can_buf[8] = {0};
+
+    if(HAL_GetTick() < 3000)  //有同样的设备同时存在情况
+        return;
+
+    switch (weight_type)
+    {
+    case WEIGHT_NORMAL:
+        break;
+    case WEIGHT_LIFT:
+        if(dev_weight.regist.sn == false)
+        {
+            put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
+        }
+        else if(dev_weight.regist.soft == false)
+        {
+            put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
+        }
+        else if(weight_runing_time == false)
+        {
+           put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
+        }
+        break;
+    case WEIGHT_FPLATE:
+        if(dev_weight.regist.sn == false)
+        {
+            put_date_to_can(can_buf,0xE3,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
+        }
+        else if(dev_weight.regist.soft == false)
+        {
+            put_date_to_can(can_buf,0xE2,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
+        }
+        else if(weight_runing_time == false)
+        {
+            put_date_to_can(can_buf,0xE4,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
+        }
+        break;
+    case WEIGHT_TRANFER:
+        if(dev_weight.regist.sn == false)
+        {
+            put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+        }
+        else if(dev_weight.regist.soft == false)
+        {
+            put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+        }
+        else if(weight_runing_time == false)
+        {
+            put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
+            Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+        }
+        break;
+    default:
+        break;
+    }       
+}
 
 /**
   * @file    regist_dev_info

+ 115 - 65
user_src/soft_water.c

@@ -23,6 +23,8 @@ short liquid_aver_value[20] = {0};
 uint8_t liquid_aver_i = 0;
 bool liquid_opening = false; //初始化
 int  liquid_aver_time = 0;
+uint8_t spary_type;
+uint8_t nozzle_type;
 void liquid_recieved_hookfuction(uint32_t cellCanID,uint8_t data[], uint8_t len)
 {   
     Dev.Checklow_Link.connect_status = COMP_NORMAL;
@@ -163,6 +165,9 @@ void Eft_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
     switch (CanID)
     {
     case 0x9527:
+        if(spary_type == SPARY_DEFAULT)
+            spary_type = SPARY_GEMO;    
+
         pump1.rpm = data[0] + data[1] *256;
         pump2.rpm = data[2] + data[3] *256;
         
@@ -171,6 +176,9 @@ void Eft_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
         Dev.Pump_Link.recv_time = HAL_GetTick();
         break;
     case Pump1:
+        if(spary_type == SPARY_DEFAULT || spary_type == SPARY_GEMO)
+            spary_type = SPARY_ROUXING;
+
         memcpy(&pump1,&data[0],sizeof(water_dev));
 
         Dev.Eft_CanDev_Link[0].connect_status = COMP_NORMAL;
@@ -178,11 +186,15 @@ void Eft_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
         Dev.L_pump1_Link.connect_status = COMP_NORMAL;
         Dev.L_pump1.facid = FAC_EFT;
         Dev.L_pump1_Link.recv_time = HAL_GetTick();
+        Dev.Flow.facid = FAC_LPUMP;
 
         if(set_eftdev_canid_flag == true)
             set_eftdev_canid_status = set_eftdev_canid_status | 1;
         break;
     case Pump2:
+        if(spary_type == SPARY_DEFAULT || spary_type == SPARY_GEMO)
+            spary_type = SPARY_ROUXING;
+
         memcpy(&pump2,&data[0],sizeof(water_dev));
 
         Dev.Eft_CanDev_Link[1].connect_status = COMP_NORMAL;
@@ -190,12 +202,14 @@ void Eft_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
         Dev.L_pump2_Link.connect_status = COMP_NORMAL;
         Dev.L_pump2.facid = FAC_EFT;
         Dev.L_pump2_Link.recv_time = HAL_GetTick();
-        
+        Dev.Flow.facid = FAC_LPUMP;
 
         if(set_eftdev_canid_flag == true)
             set_eftdev_canid_status = set_eftdev_canid_status | (1 << 1);
         break;
     case Nozzle1:
+        if(nozzle_type == NOZZLE_DEFAULT)
+            nozzle_type = NOZZLE_NORMAL;
 
         Dev.Nozzle_Link.connect_status = COMP_NORMAL;
         Dev.Nozzle.facid = FAC_EFT;
@@ -210,6 +224,9 @@ void Eft_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             set_eftdev_canid_status = set_eftdev_canid_status | (1 << 4);
         break;
     case Nozzle2:
+        if(nozzle_type == NOZZLE_DEFAULT)
+            nozzle_type = NOZZLE_NORMAL;
+        
         Dev.Nozzle_Link.connect_status = COMP_NORMAL;
         Dev.Nozzle.facid = FAC_EFT;
         Dev.Nozzle_Link.recv_time = HAL_GetTick();
@@ -222,6 +239,9 @@ void Eft_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             set_eftdev_canid_status = set_eftdev_canid_status | (1 << 5);
         break;
     case Nozzle3:
+        if(nozzle_type == NOZZLE_DEFAULT)
+            nozzle_type = NOZZLE_NORMAL;
+
         Dev.Nozzle_Link.connect_status = COMP_NORMAL;
         Dev.Nozzle.facid = FAC_EFT;
         Dev.Nozzle_Link.recv_time = HAL_GetTick();
@@ -234,6 +254,9 @@ void Eft_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             set_eftdev_canid_status = set_eftdev_canid_status | (1 << 6);
         break;
     case Nozzle4:
+        if(nozzle_type == NOZZLE_DEFAULT)
+            nozzle_type = NOZZLE_NORMAL;
+        
         Dev.Nozzle_Link.connect_status = COMP_NORMAL;
         Dev.Nozzle.facid = FAC_EFT;
         Dev.Nozzle_Link.recv_time = HAL_GetTick();
@@ -545,14 +568,18 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
     //70吊运板称重
     if(CanID == CAN_EFT70_WEIGHT)
     {
-        if(drone_type != Drone_Z70)
-            drone_type = Drone_Z70;
-        Z70_LiftingWeight_exist = true;
-        fplate.weight = (data[0] + data[1] * 256);
-        LiftingWeight_warning = data[2];
-        Dev.Weight_Link.connect_status = COMP_NORMAL;
-        Dev.Weight.facid = FAC_EFT;
-        Dev.Weight_Link.recv_time = HAL_GetTick();
+        if(weight_type == WEIGHT_DEFAULT || weight_type == WEIGHT_FPLATE || weight_type == WEIGHT_TRANFER)
+            weight_type = WEIGHT_LIFT;
+
+        if(weight_type == WEIGHT_LIFT)
+        {
+            fplate.weight = (data[0] + data[1] * 256);
+            LiftingWeight_warning = data[2];
+            Dev.Weight_Link.connect_status = COMP_NORMAL;
+            Dev.Weight.facid = FAC_LIFTWEIGHT;
+            Dev.Weight_Link.recv_time = HAL_GetTick();
+        }
+        
     }
     else if(CanID == CAN_EFT70_WEIGHT_ACK)
     {
@@ -628,22 +655,27 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
     {
         memcpy(&z70_info, &data[0], len);
 
-        if(drone_type != Drone_Z70)
-            drone_type = Drone_Z70;
-
         switch (z70_info.dev_type)
         {
         case Z70_Public:
-            if(Z70_LiftingWeight_exist == false)
-                memcpy(&fplate.weight,&data[4],2); 
-            mimo_lackloss.status = data[6];
-
-            Dev.Weight_Link.connect_status = COMP_NORMAL;
-            Dev.Weight.facid = FAC_EFT;
-            Dev.Weight_Link.recv_time = HAL_GetTick();
+            if(weight_type == WEIGHT_DEFAULT || weight_type == WEIGHT_FPLATE)
+                weight_type = WEIGHT_TRANFER;
             
+            if(weight_type == WEIGHT_TRANFER)
+            {
+                memcpy(&fplate.weight,&data[4],2);
+                mimo_lackloss.status = data[6];
+
+                Dev.Weight_Link.connect_status = COMP_NORMAL;
+                Dev.Weight.facid = FAC_EFT;
+                Dev.Weight_Link.recv_time = HAL_GetTick();
+            }
+
             break;
         case Z70_Pump1:
+            if(spary_type == SPARY_DEFAULT || spary_type == SPARY_GEMO || spary_type == SPARY_ROUXING)
+                spary_type = SPARY_TRANSFER;
+
             pump1.rpm = z70_info.rpm;
             pump1.error_status = z70_info.warning;
 
@@ -654,6 +686,9 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             Dev.Eft_CanDev_Link[0].recv_time = HAL_GetTick();
             break;
         case Z70_Pump2:
+            if(spary_type == SPARY_DEFAULT || spary_type == SPARY_GEMO || spary_type == SPARY_ROUXING)
+                spary_type = SPARY_TRANSFER;
+
             pump2.rpm = z70_info.rpm;
             pump2.error_status = z70_info.warning;
 
@@ -664,6 +699,9 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             Dev.Eft_CanDev_Link[1].recv_time = HAL_GetTick();
             break;
         case Z70_Nozzle1:
+            if(nozzle_type == NOZZLE_DEFAULT || nozzle_type == NOZZLE_NORMAL)
+                nozzle_type = NOZZLE_TRANSFER;
+
             nozzle1.rpm = z70_info.rpm;
             nozzle1.error_status = z70_info.warning;
 
@@ -674,6 +712,9 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             Dev.Eft_CanDev_Link[2].recv_time = HAL_GetTick();
             break;
         case Z70_Nozzle2:
+            if(nozzle_type == NOZZLE_DEFAULT || nozzle_type == NOZZLE_NORMAL)
+                nozzle_type = NOZZLE_TRANSFER;
+
             nozzle2.rpm = z70_info.rpm;
             nozzle2.error_status = z70_info.warning;
 
@@ -684,6 +725,9 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             Dev.Eft_CanDev_Link[3].recv_time = HAL_GetTick();
             break;
         case Z70_Nozzle3:
+            if(nozzle_type == NOZZLE_DEFAULT || nozzle_type == NOZZLE_NORMAL)
+                nozzle_type = NOZZLE_TRANSFER;
+
             nozzle3.rpm = z70_info.rpm;
             nozzle3.error_status = z70_info.warning;
 
@@ -694,6 +738,9 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             Dev.Eft_CanDev_Link[4].recv_time = HAL_GetTick();
             break;
         case Z70_Nozzle4:
+            if(nozzle_type == NOZZLE_DEFAULT || nozzle_type == NOZZLE_NORMAL)
+                nozzle_type = NOZZLE_TRANSFER;
+
             nozzle4.rpm = z70_info.rpm;
             nozzle4.error_status = z70_info.warning;
 
@@ -704,6 +751,9 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             Dev.Eft_CanDev_Link[5].recv_time = HAL_GetTick();
             break;
         case Z70_Churn:
+            if(spread_type == SPREAD_DEFAULT || spread_type == SPREAD_NORMAL)
+                spread_type = SPREAD_JIAOLONG;
+
             churn.rpm = z70_info.rpm;
             churn.error_status = z70_info.warning;
 
@@ -744,6 +794,7 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             z70weight.info.k2 = (data[2] >> 6) + (data[3] << 2) + ((data[4] & 0xf) << 10);
             z70weight.info.k3 = (data[4] >> 4) + (data[5] << 4)  + ((data[6] & 0x3) << 12);
             z70weight.info.k4 = (data[6] >> 2) + (data[7] << 6);
+            weight_init_eft.step.read_k_flag = 0;
             break;
         default:
             break;
@@ -1100,67 +1151,66 @@ water70_dev water70_info;
 void can_sendmsg_eft_water(void)
 {
     uint8_t can_buf[8] = {0};
-    if(drone_type == Drone_Z20)
+
+    if((spary_type == SPARY_ROUXING || nozzle_type == NOZZLE_NORMAL) )
     {
-        if(Dev.L_pump1_Link.connect_status == COMP_NORMAL || Dev.L_pump2_Link.connect_status == COMP_NORMAL )
-        {
-            
-            static uint8_t life[6] = {0};
+        
+        static uint8_t life[6] = {0};
 
-            can_buf[0] = 0xF1;
-            can_buf[5] = 0xF1; 
-            can_buf[6] = 0xF3; 
+        can_buf[0] = 0xF1;
+        can_buf[5] = 0xF1; 
+        can_buf[6] = 0xF3; 
 
-            //pmup1
-            can_buf[1]= (pmu_pin.pump1 >> 8) & 0xff;
-            can_buf[2]= pmu_pin.pump1 & 0xff;
-            can_buf[7]= life[0];
+        //pmup1
+        can_buf[1]= (pmu_pin.pump1 >> 8) & 0xff;
+        can_buf[2]= pmu_pin.pump1 & 0xff;
+        can_buf[7]= life[0];
 
-            life[0]++;
-            Can_Send_Msg_Func(CANID2, can_buf, 8, Pump1 + 1 , CAN_ID_EXT); 
+        life[0]++;
+        Can_Send_Msg_Func(CANID2, can_buf, 8, Pump1 + 1 , CAN_ID_EXT); 
 
-            //pump2
-            can_buf[1]= (pmu_pin.pump2 >> 8) & 0xff;
-            can_buf[2]= pmu_pin.pump2 & 0xff;
-            can_buf[7]= life[1];
+        //pump2
+        can_buf[1]= (pmu_pin.pump2 >> 8) & 0xff;
+        can_buf[2]= pmu_pin.pump2 & 0xff;
+        can_buf[7]= life[1];
 
-            life[1]++;
-            Can_Send_Msg_Func(CANID2, can_buf, 8, Pump2 + 1 , CAN_ID_EXT); 
+        life[1]++;
+        Can_Send_Msg_Func(CANID2, can_buf, 8, Pump2 + 1 , CAN_ID_EXT); 
 
-            //nozzle1
-            can_buf[1]= (pmu_pin.nozz1_fm >> 8) & 0xff;
-            can_buf[2]= pmu_pin.nozz1_fm & 0xff;
-            can_buf[7]= life[2];
+        //nozzle1
+        can_buf[1]= (pmu_pin.nozz1_fm >> 8) & 0xff;
+        can_buf[2]= pmu_pin.nozz1_fm & 0xff;
+        can_buf[7]= life[2];
 
-            life[2]++;
-            Can_Send_Msg_Func(CANID2, can_buf, 8, Nozzle1 + 1 , CAN_ID_EXT); 
+        life[2]++;
+        Can_Send_Msg_Func(CANID2, can_buf, 8, Nozzle1 + 1 , CAN_ID_EXT); 
 
-            //nozzle2
-            can_buf[1]= (pmu_pin.nozz1_fm >> 8) & 0xff;
-            can_buf[2]= pmu_pin.nozz1_fm & 0xff;
-            can_buf[7]= life[3];
+        //nozzle2
+        can_buf[1]= (pmu_pin.nozz1_fm >> 8) & 0xff;
+        can_buf[2]= pmu_pin.nozz1_fm & 0xff;
+        can_buf[7]= life[3];
 
-            life[3]++;
-            Can_Send_Msg_Func(CANID2, can_buf, 8, Nozzle2 + 1 , CAN_ID_EXT);
+        life[3]++;
+        Can_Send_Msg_Func(CANID2, can_buf, 8, Nozzle2 + 1 , CAN_ID_EXT);
 
-            //nozzle3
-            can_buf[1]= (pmu_pin.nozz2_zp >> 8) & 0xff;
-            can_buf[2]= pmu_pin.nozz2_zp & 0xff;
-            can_buf[7]= life[4];
+        //nozzle3
+        can_buf[1]= (pmu_pin.nozz2_zp >> 8) & 0xff;
+        can_buf[2]= pmu_pin.nozz2_zp & 0xff;
+        can_buf[7]= life[4];
 
-            life[4]++;
-            Can_Send_Msg_Func(CANID2, can_buf, 8, Nozzle3 + 1 , CAN_ID_EXT);
+        life[4]++;
+        Can_Send_Msg_Func(CANID2, can_buf, 8, Nozzle3 + 1 , CAN_ID_EXT);
 
-            //nozzle4
-            can_buf[1]= (pmu_pin.nozz2_zp >> 8) & 0xff;
-            can_buf[2]= pmu_pin.nozz2_zp & 0xff;
-            can_buf[7]= life[5];
+        //nozzle4
+        can_buf[1]= (pmu_pin.nozz2_zp >> 8) & 0xff;
+        can_buf[2]= pmu_pin.nozz2_zp & 0xff;
+        can_buf[7]= life[5];
 
-            life[5]++;
-            Can_Send_Msg_Func(CANID2, can_buf, 8, Nozzle4 + 1 , CAN_ID_EXT);
-        }
+        life[5]++;
+        Can_Send_Msg_Func(CANID2, can_buf, 8, Nozzle4 + 1 , CAN_ID_EXT);
+        
     }
-    else if(drone_type == Drone_Z70)
+    else if(spary_type == SPARY_TRANSFER || spread_type == SPREAD_JIAOLONG)
     {
         water70_info.dev_water70.flag = planep.lock_status == STA_LOCK ? 0x5 : 0xA;
         if(Dev.Seed_Link.connect_status != COMP_NOEXIST)

+ 1 - 1
user_src/usart_data_handle.c

@@ -79,7 +79,7 @@ void check_uart_data(void)
         case RX_GROUPID:
             if(c == GROUP_ID_FCU || c == GROUP_ID_PMU_UPDATE || c == GROUP_ID_F_UPDATE ||
             c == GROUP_ID_B_UPDATE || c == GROUP_ID_T_UPDATE|| c == GROUP_ID_WEIGHT_UPDATE ||
-            (c >= GROUP_ID_EFTPUMP1_UPDATE && c <= GROUP_ID_EFTSEED_UPDATE))
+            (c >= GROUP_ID_EFTPUMP1_UPDATE && c <= GROUP_ID_Z70FBLIFTING_UPDATE))
             {
                 vk_data.group_id = c;
                 recv_step = RX_MSGID;