123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515 |
- #include "soft_version.h"
- #include "soft_obstacle.h"
- #include "soft_terrain.h"
- #include "stm32f1xx_hal.h"
- #include "soft_flow.h"
- #include "soft_can.h"
- #include "soft_p_2_c.h"
- #include "config.h"
- #include "soft_eft.h"
- #include "string.h"
- #include "soft_bms.h"
- #include "soft_seed_device.h"
- #include "soft_water_device.h"
- dev_version_content dev_pmu;
- dev_version_content dev_ter;
- dev_version_content dev_obsf;
- dev_version_content dev_obsb;
- dev_version_content dev_bms1;
- dev_version_content dev_bms2;
- dev_version_content dev_spreader;
- dev_version_content dev_weight;
- dev_version_content dev_flowmeter;
- dev_version_content dev_pump;
- dev_version_content dev_arm;
- dev_version_content dev_lack;
- dev_version_content dev_centri;
- dev_version_content dev_current;
- dev_version_content dev_pump1,dev_pump2;
- dev_version_content dev_nozzle1,dev_nozzle2,dev_nozzle3,dev_nozzle4;
- dev_version_content dev_part_tradar;
- dev_version_content dev_tradar_f;
- dev_version_content dev_tradar_b;
- dev_version_content dev_h_bmsA;
- dev_version_content dev_h_bmsB;
- dev_version_content dev_remoteid;
- dev_version_content dev_null;
- // void *dev_ptr[10] = {&temp,
-
- // &dev_pmu,
- // &dev_ter,
- // &dev_obsf,
- // &dev_obsb,
- // &dev_bms1,
- // &dev_bms2,
- // &dev_spreader,
- // &dev_weight,
- // &dev_flowmeter,
- // &dev_arm,
- // };
- void *dev_ptr[] = {&dev_null,
- &dev_null,
- &dev_null,
- &dev_pmu,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_ter,
- &dev_obsf,
- &dev_obsb,
- &dev_bms1,
- &dev_bms2,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_null,
- &dev_spreader,
- &dev_weight,
- &dev_pump,
- &dev_centri,
- &dev_flowmeter,
- &dev_arm,
- &dev_lack,
- &dev_null,
- &dev_current,
- &dev_null,
- &dev_pump1,
- &dev_pump2,
- &dev_null,
- &dev_null,
- &dev_nozzle1,
- &dev_nozzle2,
- &dev_nozzle3,
- &dev_nozzle4,
- &dev_part_tradar,
- &dev_tradar_f,
- &dev_tradar_b,
- &dev_h_bmsA,
- &dev_h_bmsB,
- &dev_remoteid,
- };
- short dev_num = sizeof( dev_ptr )/sizeof( void * );
- /**
- * @file get_radar_version_and_sn
- * @brief 获取雷达版本和SN号
- * @param none
- * @details
- * @author Zhang Sir
- **/
- void get_radar_version_and_sn(void)
- {
- uint8_t radar_can_buf[8] = {0};
- static uint8_t mimo_area_40flag = 10;
- //版本信息识别 mocib mimo
- //新加同时获取SN号
- if(uavr11_info.Link.connect_status == COMP_NORMAL && uavr11_info.get_radar_ver_flag == false)
- {
- radar_can_buf[0] = 0x11;
- can_send_msg_normal(radar_can_buf, 1, 0x00eeff11);
- }
- else if(uavr11_info.Link.connect_status == COMP_NORMAL && uavr11_info.get_radar_sn_flag == false)
- {
- radar_can_buf[0] = 0x85;
- can_send_msg_normal(radar_can_buf, 1, 0x210);
- }
- if(uavr12_info.Link.connect_status == COMP_NORMAL && uavr12_info.get_radar_ver_flag == false)
- {
- radar_can_buf[0] = 0x12;
- can_send_msg_normal(radar_can_buf, 1, 0x00eeff12);
- }
- else if(uavr12_info.Link.connect_status == COMP_NORMAL && uavr12_info.get_radar_sn_flag == false)
- {
- radar_can_buf[0] = 0x85;
- can_send_msg_normal(radar_can_buf, 1, 0x220);
- }
- if(uavr56_info.Link.connect_status == COMP_NORMAL && uavr56_info.get_radar_ver_flag == false)
- {
- radar_can_buf[0] = 0x0b;
- can_send_msg_normal(radar_can_buf, 1, 0x00eeff0b);
- }
- else if(uavr56_info.Link.connect_status == COMP_NORMAL && uavr56_info.get_radar_sn_flag == false)
- {
- radar_can_buf[0] = 0x85;
- can_send_msg_normal(radar_can_buf, 1, 0x230);
- }
- if(mimo_f_info.Link.connect_status == COMP_NORMAL && mimo_f_info.get_radar_ver_flag == false)
- {
- radar_can_buf[0] = 0x55;
- radar_can_buf[1] = 0xAA;
- radar_can_buf[2] = 0x03;
- radar_can_buf[3] = 0x70;
- radar_can_buf[4] = 0x03;
- radar_can_buf[5] = 0x01;
- radar_can_buf[6] = 0x74;
- can_send_msg_normalstd(radar_can_buf, 7, 0xFA);
- }
- else if(mimo_b_info.Link.connect_status == COMP_NORMAL && mimo_b_info.get_radar_ver_flag == false)
- {
- radar_can_buf[0] = 0x55;
- radar_can_buf[1] = 0xAA;
- radar_can_buf[2] = 0x03;
- radar_can_buf[3] = 0x70;
- radar_can_buf[4] = 0x04;
- radar_can_buf[5] = 0x01;
- radar_can_buf[6] = 0x75;
- can_send_msg_normalstd(radar_can_buf, 7, 0xFA);
- }
- else if(mimo_ter_info.Link.connect_status == COMP_NORMAL && mimo_ter_info.get_radar_ver_flag == false)
- {
- radar_can_buf[0] = 0x55;
- radar_can_buf[1] = 0xAA;
- radar_can_buf[2] = 0x03;
- radar_can_buf[3] = 0x70;
- radar_can_buf[4] = 0x00;
- radar_can_buf[5] = 0x01;
- radar_can_buf[6] = 0x71;
- can_send_msg_normalstd(radar_can_buf, 7, 0xFA);
- }
- if(DM_ter_info.Link.connect_status == COMP_NORMAL && DM_ter_info.get_radar_ver_flag == false)
- {
- radar_can_buf[0] = 1;
- radar_can_buf[7] = 7;
- can_send_msg_normal(radar_can_buf, 8, 0x981300);
- }
- else if(DM_f_info.Link.connect_status == COMP_NORMAL && DM_f_info.get_radar_ver_flag == false)
- {
- radar_can_buf[0] = 1;
- radar_can_buf[7] = 7;
- can_send_msg_normal(radar_can_buf, 8, 0XA81300);
- }
- // else if(DM_B_info.Link.connect_status == COMP_NORMAL && DM_B_info.get_radar_ver_flag == false)
- // {
- // radar_can_buf[0] = 1;
- // radar_can_buf[7] = 7;
- // can_send_msg_normal(radar_can_buf, 8, 0XB81300);
- // }
- //恩曌一批雷达盲区20cm有问题,盲区需要改成40CM
- if(mimo_ter_info.Link.connect_status == COMP_NORMAL
- && memcmp(mimo_ter_info.version,"EB00190110",10) == 0 && mimo_area_40flag > 0)
- {
- radar_can_buf[0] = 0x4D;
- radar_can_buf[1] = 0x69;
- radar_can_buf[2] = 0x6E;
- radar_can_buf[3] = 0x44;
- radar_can_buf[4] = 0x69;
- radar_can_buf[5] = 0x73;
- radar_can_buf[6] = 0x28;
- radar_can_buf[7] = 0x34;
- can_send_msg_normalstd(radar_can_buf, 8, 0x500);
- radar_can_buf[0] = 0x30;
- radar_can_buf[1] = 0x29;
- radar_can_buf[2] = 0x0D;
- radar_can_buf[3] = 0x0A;;
- can_send_msg_normalstd(radar_can_buf, 4, 0x500);
- mimo_area_40flag--;
- }
- }
- /**
- * @file get_flowmeter_version_and_sn
- * @brief 获取流量计版本、SN号、K值
- * @param none
- * @details
- * @author Zhang Sir
- **/
- void get_flowmeter_version_and_sn(void)
- {
- if((Dev.Flow_Link1.connect_status == COMP_NORMAL || Dev.Flow_Link2.connect_status == COMP_NORMAL) &&
- (Dev.Flow.facid == FAC_MIMO_SIG || Dev.Flow.facid == FAC_MIMO_DOU))
- {
- uint8_t can_buf[8] = {0};
- //读取K值 和序列号
- if(flow_mimo1.get_k_count < 10 && Dev.Flow_Link1.connect_status == COMP_NORMAL )
- {
- //K值
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x00;
- can_buf[3] = 0xB1;
- can_buf[4] = 0xD1;
- can_buf[5] = 0x00;
- can_buf[6] = 0x00;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- can_buf[7] = 0;
-
- HAL_Delay(50);
- //序列号
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x00;
- can_buf[3] = 0xB2;
- can_buf[4] = 0xEB;
- can_buf[5] = 0x00;
- can_buf[6] = 0x00;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- can_buf[7] = 0;
- HAL_Delay(50);
- //软件版本
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x00;
- can_buf[3] = 0xB2;
- can_buf[4] = 0xEC;
- can_buf[5] = 0x00;
- can_buf[6] = 0x00;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- can_buf[7] = 0;
- flow_mimo1.get_k_count++;
- }
- else if(flow_mimo2.get_k_count < 10 && Dev.Flow_Link2.connect_status == COMP_NORMAL)
- {
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x01;
- can_buf[3] = 0xB1;
- can_buf[4] = 0xD1;
- can_buf[5] = 0x00;
- can_buf[6] = 0x00;
-
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- can_buf[7] = 0;
- //序列号
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x00;
- can_buf[3] = 0xB2;
- can_buf[4] = 0xEB;
- can_buf[5] = 0x00;
- can_buf[6] = 0x00;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- can_buf[7] = 0;
- //软件版本
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x00;
- can_buf[3] = 0xB2;
- can_buf[4] = 0xEC;
- can_buf[5] = 0x00;
- can_buf[6] = 0x00;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- can_buf[7] = 0;
- flow_mimo2.get_k_count++;
- }
-
- //设置流量计K
- if(flow_mimo1.send_k_count > 0 && Dev.Flow_Link1.connect_status == COMP_NORMAL )
- {
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x00;
- can_buf[3] = 0xB1;
- can_buf[4] = 0xC1;
- can_buf[5] = flow_mimo1.flow_calk >> 8;
- can_buf[6] = flow_mimo1.flow_calk;
- can_buf[7] = 0;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- flow_mimo1.send_k_count--;
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- HAL_Delay(50);
- }
- if(flow_mimo2.send_k_count > 0 && Dev.Flow_Link2.connect_status == COMP_NORMAL)
- {
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x01;
- can_buf[3] = 0xB1;
- can_buf[4] = 0xC1;
- can_buf[5] = flow_mimo2.flow_calk >> 8;
- can_buf[6] = flow_mimo2.flow_calk;
- can_buf[7] = 0;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- flow_mimo2.send_k_count--;
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- }
- if(flow_inf.ch1.clear_background == true)
- {
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x00;
- can_buf[3] = 0xB2;
- can_buf[4] = 0xE2;
- can_buf[5] = 0;
- can_buf[6] = 0;
- can_buf[7] = 0;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- }
- else if(flow_inf.ch2.clear_background == true)
- {
- can_buf[0] = 0xfa;
- can_buf[1] = 0x10;
- can_buf[2] = 0x01;
- can_buf[3] = 0xB2;
- can_buf[4] = 0xE2;
- can_buf[5] = 0;
- can_buf[6] = 0;
- can_buf[7] = 0;
- for(uint8_t i = 1; i < 7; i++)
- {
- can_buf[7] += can_buf[i];
- }
- can_send_msg_normalstd(can_buf, 8, 0xFA);
- }
-
- }
- }
- /**
- * @file get_seed_version_and_sn
- * @brief 获取播撒器版本和SN号
- * @param none
- * @details
- * @author Zhang Sir
- **/
- void get_seed_version_and_sn(void)
- {
- }
- /**
- * @file get_device_version_and_sn
- * @brief 版本号
- * @param none
- * @details
- * @author Zhang Sir
- **/
- void get_device_version_and_sn(void)
- {
- static uint32_t circu_time = 0;
- if(Check_Timer_Ready(&circu_time,_1_HZ_))
- {
- //获取雷达版本和SN号
- get_radar_version_and_sn();
- //获取流量计版本和SN号
- get_flowmeter_version_and_sn();
- //获取播撒器版本和SN号
- get_seed_version_and_sn();
- }
- }
- /**
- * @file regist_dev_info
- * @brief 注册设备信息
- * @param none
- * @details
- * @author Zhang Sir
- **/
- void regist_dev_info(dev_version_content *dev,uint8_t num,bool verify_flag,char *sn,uint8_t size1,
- char *soft_serial,uint8_t size2,char *hard_serial,uint8_t size3,char *manu,uint8_t size4)
- {
- dev->num = num;
- dev->verify = verify_flag;
- if(dev->regist.dev == false)
- {
- dev->regist.dev = true;
- dev->send_times++;
- }
- if(sn != NULL && size1 <= 32 && dev->regist.sn == false)
- {
- memcpy(dev->sn,sn,size1);
- dev->regist.sn = true;
- dev->send_times++;
- }
- if(soft_serial != NULL && size2 <= 16 && dev->regist.soft == false)
- {
- memcpy(dev->soft_serial,soft_serial,size2);
- dev->regist.soft = true;
- dev->send_times++;
- }
- if(hard_serial != NULL && size3 <= 16 && dev->regist.hard == false)
- {
- memcpy(dev->hard_serial,hard_serial,size3);
- dev->regist.hard = true;
- dev->send_times++;
- }
- if(manu != NULL && size4 <= 16 && dev->regist.manu == false)
- {
- memcpy(dev->manu,manu,size4);
- dev->regist.manu = true;
- dev->send_times++;
- }
- };
|