soft_version.c 54 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540
  1. #include "soft_version.h"
  2. #include "soft_obstacle.h"
  3. #include "soft_terrain.h"
  4. #include "string.h"
  5. #include "main_task.h"
  6. #include "usart_data_handle.h"
  7. #include "soft_flow.h"
  8. #include "soft_device.h"
  9. #include "soft_can.h"
  10. #include "soft_seed_weight.h"
  11. #include "soft_water.h"
  12. #include "config.h"
  13. dev_version_content dev_pmu;
  14. dev_version_content dev_ter;
  15. dev_version_content dev_obsf;
  16. dev_version_content dev_obsb;
  17. dev_version_content dev_bms1;
  18. dev_version_content dev_bms2;
  19. dev_version_content dev_spreader;
  20. dev_version_content dev_weight;
  21. dev_version_content dev_flowmeter;
  22. dev_version_content dev_pump;
  23. dev_version_content dev_arm;
  24. dev_version_content dev_lack;
  25. dev_version_content dev_centri;
  26. dev_version_content dev_current;
  27. dev_version_content dev_pump1,dev_pump2;
  28. dev_version_content dev_nozzle1,dev_nozzle2,dev_nozzle3,dev_nozzle4;
  29. dev_version_content dev_null;
  30. // void *dev_ptr[10] = {&temp,
  31. // &dev_pmu,
  32. // &dev_ter,
  33. // &dev_obsf,
  34. // &dev_obsb,
  35. // &dev_bms1,
  36. // &dev_bms2,
  37. // &dev_spreader,
  38. // &dev_weight,
  39. // &dev_flowmeter,
  40. // &dev_arm,
  41. // };
  42. void *dev_ptr[] = {&dev_null,
  43. &dev_null,
  44. &dev_null,
  45. &dev_pmu,
  46. &dev_null,
  47. &dev_null,
  48. &dev_null,
  49. &dev_null,
  50. &dev_null,
  51. &dev_null,
  52. &dev_null,
  53. &dev_ter,
  54. &dev_obsf,
  55. &dev_obsb,
  56. &dev_bms1,
  57. &dev_bms2,
  58. &dev_null,
  59. &dev_null,
  60. &dev_null,
  61. &dev_null,
  62. &dev_null,
  63. &dev_null,
  64. &dev_null,
  65. &dev_null,
  66. &dev_null,
  67. &dev_null,
  68. &dev_spreader,
  69. &dev_weight,
  70. &dev_pump,
  71. &dev_centri,
  72. &dev_flowmeter,
  73. &dev_arm,
  74. &dev_lack,
  75. &dev_null,
  76. &dev_current,
  77. &dev_null,
  78. &dev_pump1,
  79. &dev_pump2,
  80. &dev_null,
  81. &dev_null,
  82. &dev_nozzle1,
  83. &dev_nozzle2,
  84. &dev_nozzle3,
  85. &dev_nozzle4,
  86. };
  87. short dev_num = sizeof( dev_ptr )/sizeof( void * );
  88. /**
  89. * @file can_recv_mocib_version_info
  90. * @brief 获取莫之比SN和版本号
  91. * @param none
  92. * @details
  93. * @author Zhang Sir
  94. **/
  95. void can_recv_mocib_version_info(uint32_t cellCanID, uint8_t data[], uint8_t len)
  96. {
  97. static uint8_t frame_fi = 0,frame_bi = 0,frame_ti = 0;
  98. switch (cellCanID)
  99. {
  100. //SN号
  101. case CAN_OBSTARCLE11_SN:
  102. if(frame_fi == 0)
  103. {
  104. memcpy(&uavr11_info.sn[0],&data[2],6);//要后六个字节
  105. frame_fi += 6;
  106. }
  107. else if(frame_fi == 6)
  108. {
  109. memcpy(&uavr11_info.sn[frame_fi],&data[1],7);//要后7个字节
  110. frame_fi += 7;
  111. }
  112. else if(frame_fi >= 13)
  113. {
  114. memcpy(&uavr11_info.sn[frame_fi],&data[1],3);
  115. frame_fi = 0;
  116. regist_dev_info(&dev_obsf,DEVICE_OBSF,false,uavr11_info.sn,20,NULL,0,NULL,0,"mocib",6);
  117. uavr11_info.get_radar_sn_flag = true;
  118. }
  119. break;
  120. case CAN_OBSTARCLE12_SN:
  121. if(frame_bi == 0)
  122. {
  123. memcpy(&uavr12_info.sn[0],&data[2],6);//要后六个字节
  124. frame_bi += 6;
  125. }
  126. else if(frame_bi == 6)
  127. {
  128. memcpy(&uavr12_info.sn[frame_bi],&data[1],7);//要后7个字节
  129. frame_bi += 7;
  130. }
  131. else if(frame_bi >= 13)
  132. {
  133. memcpy(&uavr12_info.sn[frame_bi],&data[1],3);
  134. frame_bi = 0;
  135. regist_dev_info(&dev_obsb,DEVICE_OBSB,false,uavr12_info.sn,20,NULL,0,NULL,0,"mocib",6);
  136. uavr12_info.get_radar_sn_flag = true;
  137. }
  138. break;
  139. case CAN_OBSTARCLE56_SN:
  140. if(frame_ti == 0)
  141. {
  142. memcpy(&uavr56_info.sn[0],&data[2],6);//要后六个字节
  143. frame_ti += 6;
  144. }
  145. else if(frame_ti == 6)
  146. {
  147. memcpy(&uavr56_info.sn[frame_ti],&data[1],7);//要后7个字节
  148. frame_ti += 7;
  149. }
  150. else if(frame_ti >= 13)
  151. {
  152. memcpy(&uavr56_info.sn[frame_ti],&data[1],3);
  153. frame_ti = 0;
  154. regist_dev_info(&dev_ter,DEVICE_TERRA,false,uavr56_info.sn,20,NULL,0,NULL,0,"mocib",6);
  155. uavr56_info.get_radar_sn_flag = true;
  156. }
  157. break;
  158. case CAN_OBSTARCLE57_SN:
  159. if(frame_ti == 0)
  160. {
  161. memcpy(&Mocib_radar_part.sn[0],&data[2],6);//要后六个字节
  162. frame_ti += 6;
  163. }
  164. else if(frame_ti == 6)
  165. {
  166. memcpy(&Mocib_radar_part.sn[frame_ti],&data[1],7);//要后7个字节
  167. frame_ti += 7;
  168. }
  169. else if(frame_ti >= 13)
  170. {
  171. memcpy(&Mocib_radar_part.sn[frame_ti],&data[1],3);
  172. frame_ti = 0;
  173. regist_dev_info(&dev_ter,DEVICE_TERRA,false,Mocib_radar_part.sn,20,NULL,0,NULL,0,"mocib",6);
  174. Mocib_radar_part.get_radar_sn_flag = true;
  175. }
  176. break;
  177. //版本信息
  178. case 0x00eeff11:
  179. uavr11_info.version[0] = 'M';
  180. uavr11_info.version[1] = '1';
  181. uavr11_info.version[2] = (data[1] + data[2]) + '0';
  182. uavr11_info.version[3] = (data[3] + data[4]) + '0';
  183. char_to_hex_string(&data[5], 3, &uavr11_info.version[4], 6, "00");
  184. uavr11_info.soft_verison = ((data[5] & 0xff) << 16) + ((data[6] & 0xff) << 8) + (data[7] & 0xff);
  185. uavr11_info.get_radar_ver_flag = true;
  186. regist_dev_info(&dev_obsf,DEVICE_OBSF,false,NULL,0,uavr11_info.version,10,NULL,0,"mocib",6);
  187. break;
  188. case 0x00eeff12:
  189. uavr12_info.version[0] = 'M';
  190. uavr12_info.version[1] = '2';
  191. uavr12_info.version[2] = (data[1] + data[2]) + '0';
  192. uavr12_info.version[3] = (data[3] + data[4]) + '0';
  193. char_to_hex_string(&data[5], 3, &uavr12_info.version[4], 6, "00");
  194. uavr12_info.soft_verison = ((data[5] & 0xff) << 16) + ((data[6] & 0xff) << 8) + (data[7] & 0xff);
  195. uavr12_info.get_radar_ver_flag = true;
  196. regist_dev_info(&dev_obsb,DEVICE_OBSB,false,NULL,0,uavr12_info.version,10,NULL,0,"mocib",6);
  197. break;
  198. case 0x00eeff0b:
  199. uavr56_info.version[0] = 'M';
  200. uavr56_info.version[1] = 'B';
  201. uavr56_info.version[2] = (data[1] + data[2]) + '0';
  202. uavr56_info.version[3] = (data[3] + data[4]) + '0';
  203. char_to_hex_string(&data[5], 3, &uavr56_info.version[4], 6, "00");
  204. uavr56_info.soft_verison = ((data[5] & 0xff) << 16) + ((data[6] & 0xff) << 8) + (data[7] & 0xff);
  205. uavr56_info.get_radar_ver_flag = true;
  206. regist_dev_info(&dev_ter,DEVICE_TERRA,false,NULL,0,uavr56_info.version,10,NULL,0,"mocib",6);
  207. break;
  208. case 0x00EEFF0C:
  209. Mocib_radar_part.version[0] = 'M';
  210. Mocib_radar_part.version[1] = '5';
  211. Mocib_radar_part.version[2] = (data[1] + data[2]) + '0';
  212. Mocib_radar_part.version[3] = (data[3] + data[4]) + '0';
  213. char_to_hex_string(&data[5], 3, &Mocib_radar_part.version[4], 6, "00");
  214. Mocib_radar_part.soft_verison = ((data[5] & 0xff) << 16) + ((data[6] & 0xff) << 8) + (data[7] & 0xff);
  215. Mocib_radar_part.get_radar_ver_flag = true;
  216. regist_dev_info(&dev_ter,DEVICE_TERRA,false,NULL,0,Mocib_radar_part.version,10,NULL,0,"mocib",6);
  217. break;
  218. default:
  219. break;
  220. }
  221. }
  222. /**
  223. * @file can_recv_mimo_dev_version
  224. * @brief 获取恩曌流量计雷达版本信息
  225. * @param none
  226. * @details
  227. * @author Zhang Sir
  228. **/
  229. void can_recv_mimo_dev_version(uint32_t cellCanID, uint8_t data[], uint8_t len)
  230. {
  231. static uint8_t mimo_version[28] = {0};
  232. static uint8_t frame_num = 0;
  233. static bool frame_head = false;
  234. uint8_t i = 0;
  235. uint32_t checksum = 0;
  236. uint32_t soft_ver = 0;
  237. switch (cellCanID)
  238. {
  239. case 0XFB:
  240. if(data[0] == 0XAA && data[1] == 0X55)
  241. {
  242. if(data[2] == 0X03 && data[3] == 0X61 && data[4] == 0X03 && data[5] == 0X01 && data[6] == 0X65)
  243. {
  244. pmu_set_ack(_MSGID_SET,MSGID_SET_RADAR_FB,0x11,0);
  245. }
  246. else if(data[2] == 0X03 && data[3] == 0X61 && data[4] == 0X03 && data[5] == 0X02 && data[6] == 0X66)
  247. {
  248. pmu_set_ack(_MSGID_SET,MSGID_SET_RADAR_FB,0x12,0);
  249. }
  250. else if(data[2] == 0X03 && data[3] == 0X61 && data[4] == 0X00 && data[5] == 0X03 && data[6] == 0X64)
  251. {
  252. pmu_set_ack(_MSGID_SET,MSGID_SET_RADAR_FB,0x100,0);
  253. }
  254. else
  255. {
  256. frame_num = 0;
  257. memcpy(&mimo_version[frame_num],&data[4],4);
  258. frame_num += 4;
  259. frame_head = true;
  260. }
  261. }
  262. //读取分区
  263. else if(data[0] == 0xBB && data[1] == 0x24 && data[2] == 0x03 )
  264. {
  265. if(data[3] == 0x02 && data[4] == 0x07 )
  266. {
  267. if((data[5] + (data[6] << 8)) != 12)
  268. {
  269. mimo360_status.set_TotalSect_flag = true;
  270. }
  271. mimo360_status.get_TotalSect_flag = false;
  272. }
  273. if(data[3] == 0x82 && data[4] == 0x07 && (data[5] + (data[6] << 8)) == 0 )
  274. {
  275. mimo360_status.set_TotalSect_flag = false;
  276. }
  277. }
  278. //断料记
  279. else if(data[0] == 0xFB && data[1] == 0x03 && data[2] == 0)
  280. {
  281. //设置距离最大值反馈
  282. if(data[3] == 0xB2 && data[4] == 0xE1)
  283. {
  284. pmu_set_ack(_MSGID_SET,MSGID_SET_LACKLOSS_CAL,mimo_lackloss.cal_distance,mimo_lackloss.strength);
  285. }
  286. }
  287. //流量计
  288. else if(data[0] == 0xFB && data[1] == 0x10) //雷达版本和流量计协议有冲突
  289. {
  290. switch (data[2])
  291. {
  292. case 0:
  293. if(data[4] == 0XD1) //流速K
  294. {
  295. flow_mimo1.flow_k = data[5] * 256 + data[6];
  296. flow_mimo1.get_k = true;
  297. }
  298. else if(data[4] == 0XC1)//设置流速K ack
  299. {
  300. if(data[6] == 0)
  301. {
  302. flow_mimo1.flow_k = flow_mimo1.flow_calk;
  303. if(Dev.Flow_Link1.connect_status == COMP_NORMAL && Dev.Flow_Link2.connect_status != COMP_NORMAL)
  304. {
  305. pmu_set_ack(_MSGID_SET,MSGID_SET_MIMO_FLOW,flow_mimo1.flow_k,0);
  306. flow_mimo1.set_k = false;
  307. }
  308. }
  309. }
  310. else if(data[4] == 0xE2)
  311. {
  312. if(data[6] == 0 && Dev.Flow_Link1.connect_status == COMP_NORMAL && Dev.Flow_Link2.connect_status != COMP_NORMAL)
  313. {
  314. pmu_set_ack(_MSGID_SET,MSGID_SET_FLOW_BACKGROUND,0,0);
  315. }
  316. flow_inf.ch1.clear_background = false;
  317. }
  318. else if (data[4] == 0XEB)//sn 两包 协议冲突 协议有问题
  319. {
  320. for( i= 0;i<2;i++) //内容第一自字节0X0F?先舍弃一字节,
  321. {
  322. flow_mimo1.sn[2*i] = ((data[6 + i] >> 4) & 0xf) + '0';
  323. flow_mimo1.sn[2*i+1] = (data[6 + i] & 0xf )+ '0';
  324. }
  325. frame_num = 21;//流量序列号的标记
  326. }
  327. else if(data[4] == 0XEC)//软件号
  328. {
  329. flow_mimo1.soft_version[0] = data[5] + '0';
  330. flow_mimo1.soft_version[1] = data[6] + '0';
  331. }
  332. break;
  333. case 1:
  334. if(data[4] == 0XD1)
  335. {
  336. flow_mimo2.flow_k = data[5] * 256 + data[6];
  337. flow_mimo2.get_k = true;
  338. }
  339. else if(data[4] == 0XC1)
  340. {
  341. if(data[6] == 0)
  342. {
  343. flow_mimo2.flow_k = flow_mimo2.flow_calk;
  344. if(Dev.Flow_Link1.connect_status == COMP_NORMAL && Dev.Flow_Link2.connect_status == COMP_NORMAL)
  345. {
  346. pmu_set_ack(_MSGID_SET,MSGID_SET_MIMO_FLOW,flow_mimo1.flow_k,flow_mimo2.flow_k);
  347. flow_mimo1.set_k = false;
  348. flow_mimo2.set_k = false;
  349. }
  350. else if(Dev.Flow_Link1.connect_status != COMP_NORMAL && Dev.Flow_Link2.connect_status == COMP_NORMAL)
  351. {
  352. pmu_set_ack(_MSGID_SET,MSGID_SET_MIMO_FLOW,0,flow_mimo2.flow_k);
  353. flow_mimo2.set_k = false;
  354. }
  355. }
  356. }
  357. else if(data[4] == 0xE2)
  358. {
  359. if(data[6] == 0 && Dev.Flow_Link1.connect_status == COMP_NORMAL && Dev.Flow_Link2.connect_status == COMP_NORMAL)
  360. {
  361. pmu_set_ack(_MSGID_SET,MSGID_SET_FLOW_BACKGROUND,0,0);
  362. }
  363. flow_inf.ch1.clear_background = false;
  364. }
  365. break;
  366. default:
  367. break;
  368. }
  369. }
  370. else
  371. {
  372. if(frame_num == 21)
  373. {
  374. for( i=0;i<5;i++)
  375. {
  376. flow_mimo1.sn[4+2*i] = ((data[i] >> 4) & 0xf) + '0';
  377. flow_mimo1.sn[4+2*i+1] = (data[i] & 0xf )+ '0';
  378. }
  379. //flow_mimo1.sn[1] = 'F';
  380. frame_num = 0;
  381. }
  382. if(frame_num <= 20)
  383. {
  384. if(frame_head == true)
  385. {
  386. memcpy(&mimo_version[frame_num],&data[0],8);
  387. frame_num += 8;
  388. }
  389. if(frame_num == 0x1c) //恩曌SN取中间日期12位,其他有问题
  390. {
  391. checksum = 0x01;
  392. for(uint8_t i = 0; i < 27; i++)
  393. {
  394. checksum += mimo_version[i];
  395. }
  396. if((checksum & 0xFF) == mimo_version[27])
  397. {
  398. memcpy(&soft_ver,&mimo_version[23],4);
  399. switch (mimo_version[18])
  400. {
  401. case 0x00:
  402. mimo_ter_info.version[0] = 'E';
  403. mimo_ter_info.version[1] = 'B';
  404. mimo_ter_info.version[2] = '0';
  405. mimo_ter_info.version[3] = '0';
  406. Int2String(soft_ver,&mimo_ter_info.version[4],6);
  407. memcpy(&mimo_ter_info.hard_version,&mimo_version[19],4);
  408. if(mimo_ter_info.hard_version == 210221)
  409. {
  410. mimo_ter_info.version[3] = 'J';
  411. }
  412. for( i= 0;i<9;i++)
  413. {
  414. mimo_ter_info.sn[2*i] = ((mimo_version[7 + i] >> 4) & 0xf) + '0';
  415. mimo_ter_info.sn[2*i+1] = (mimo_version[7 + i] & 0xf )+ '0';
  416. }
  417. //memcpy(&mimo_ter_info.sn[0],&mimo_version[4],12);
  418. regist_dev_info(&dev_ter,DEVICE_TERRA,false,mimo_ter_info.sn,18,mimo_ter_info.version,10,mimo_ter_info.version,10,"mimo",5);
  419. mimo_ter_info.get_radar_ver_flag = true;
  420. mimo_ter_info.Link.boot_flag = false;
  421. break;
  422. case 0x03:
  423. mimo_f_info.version[0] = 'E';
  424. mimo_f_info.version[1] = '1';
  425. mimo_f_info.version[2] = '0';
  426. mimo_f_info.version[3] = '0';
  427. Int2String(soft_ver,&mimo_f_info.version[4],6);
  428. memcpy(&mimo_f_info.hard_version,&mimo_version[19],4);
  429. if(mimo_f_info.hard_version == 190302) //恩曌协议定义
  430. {
  431. mimo_f_info.version[2] = '1'; //极翼
  432. mimo_f_info.version[3] = 'J';
  433. }
  434. else
  435. {
  436. mimo_f_info.version[2] = '0'; //vk
  437. mimo_f_info.version[3] = 'V';
  438. }
  439. for( i= 0;i<9;i++)
  440. {
  441. mimo_f_info.sn[2*i] = ((mimo_version[7 + i] >> 4) & 0xf) + '0';
  442. mimo_f_info.sn[2*i+1] = (mimo_version[7 + i] & 0xf )+ '0';
  443. }
  444. regist_dev_info(&dev_obsf,DEVICE_OBSF,false,mimo_f_info.sn,18,mimo_f_info.version,10,mimo_f_info.version,10,"mimo",5);
  445. mimo_f_info.get_radar_ver_flag = true;
  446. mimo_f_info.Link.boot_flag = false;
  447. break;
  448. case 0x04:
  449. mimo_b_info.version[0] = 'E';
  450. mimo_b_info.version[1] = '2';
  451. mimo_b_info.version[2] = '0';
  452. mimo_b_info.version[3] = '0';
  453. Int2String(soft_ver,&mimo_b_info.version[4],6);
  454. memcpy(&mimo_b_info.hard_version,&mimo_version[19],4);
  455. if(mimo_b_info.hard_version == 190302) //恩曌协议定义
  456. {
  457. mimo_b_info.version[2] = '1'; //极翼
  458. mimo_b_info.version[3] = 'J';
  459. }
  460. else
  461. {
  462. mimo_b_info.version[2] = '0'; //vk
  463. mimo_b_info.version[3] = 'V';
  464. }
  465. for( i= 0;i<9;i++)
  466. {
  467. mimo_b_info.sn[2*i] = ((mimo_version[7 + i] >> 4) & 0xf) + '0';
  468. mimo_b_info.sn[2*i+1] = (mimo_version[7 + i] & 0xf )+ '0';
  469. }
  470. regist_dev_info(&dev_obsb,DEVICE_OBSB,false,mimo_b_info.sn,18,mimo_b_info.version,10,mimo_b_info.version,10,"mimo",5);
  471. mimo_b_info.get_radar_ver_flag = true;
  472. mimo_b_info.Link.boot_flag = false;
  473. break;
  474. default:
  475. break;
  476. }
  477. frame_num = 0;
  478. frame_head = false;
  479. pmu_send = PMU_SEND_VERSION;
  480. }
  481. }
  482. }
  483. else
  484. {
  485. }
  486. }
  487. // char_to_hex_string(&data[5], 3, &mimo_ter_info.version[4], 6, "00");
  488. // mimo_ter_info.soft_verison = ((data[5] & 0xff) << 16) + ((data[6] & 0xff) << 8) + (data[7] & 0xff);
  489. break;
  490. default:
  491. break;
  492. }
  493. }
  494. /**
  495. * @file get_radar_version_and_sn
  496. * @brief 获取雷达版本和SN号
  497. * @param none
  498. * @details
  499. * @author Zhang Sir
  500. **/
  501. void get_radar_version_and_sn(void)
  502. {
  503. uint8_t radar_can_buf[8] = {0};
  504. //版本信息识别 mocib mimo
  505. //新加同时获取SN号
  506. if(uavr11_info.Link.connect_status == COMP_NORMAL && uavr11_info.get_radar_ver_flag == false)
  507. {
  508. radar_can_buf[0] = 0x11;
  509. Can_Send_Msg_Func(CANID1, radar_can_buf, 1, 0x00eeff11, CAN_ID_EXT);
  510. }
  511. else if(uavr11_info.Link.connect_status == COMP_NORMAL && uavr11_info.get_radar_sn_flag == false)
  512. {
  513. radar_can_buf[0] = 0x85;
  514. Can_Send_Msg_Func(CANID1, radar_can_buf, 1, 0x210, CAN_ID_EXT);
  515. }
  516. if(uavr12_info.Link.connect_status == COMP_NORMAL && uavr12_info.get_radar_ver_flag == false)
  517. {
  518. radar_can_buf[0] = 0x12;
  519. Can_Send_Msg_Func(CANID1, radar_can_buf, 1, 0x00eeff12, CAN_ID_EXT);
  520. }
  521. else if(uavr12_info.Link.connect_status == COMP_NORMAL && uavr12_info.get_radar_sn_flag == false)
  522. {
  523. radar_can_buf[0] = 0x85;
  524. Can_Send_Msg_Func(CANID1, radar_can_buf, 1, 0x220, CAN_ID_EXT);
  525. }
  526. if(uavr56_info.Link.connect_status == COMP_NORMAL && uavr56_info.get_radar_ver_flag == false)
  527. {
  528. radar_can_buf[0] = 0x0b;
  529. Can_Send_Msg_Func(CANID1, radar_can_buf, 1, 0x00eeff0b, CAN_ID_EXT);
  530. }
  531. else if(uavr56_info.Link.connect_status == COMP_NORMAL && uavr56_info.get_radar_sn_flag == false)
  532. {
  533. radar_can_buf[0] = 0x85;
  534. Can_Send_Msg_Func(CANID1, radar_can_buf, 1, 0x230, CAN_ID_EXT);
  535. }
  536. if((Dev.Part_Tradar_Link.connect_status == COMP_NORMAL && Dev.Part_radarT.facid == FAC_MOCIB_RT) && Mocib_radar_part.get_radar_sn_flag == false)
  537. {
  538. radar_can_buf[0] = 0x85;
  539. Can_Send_Msg_Func(CANID1, radar_can_buf, 1, 0x240, CAN_ID_EXT);
  540. }
  541. else if((Dev.Part_Tradar_Link.connect_status == COMP_NORMAL && Dev.Part_radarT.facid == FAC_MOCIB_RT) && Mocib_radar_part.get_radar_ver_flag == false)
  542. {
  543. radar_can_buf[0] = 0x0C;
  544. Can_Send_Msg_Func(CANID1, radar_can_buf, 1, 0x00eeff0C, CAN_ID_EXT);
  545. }
  546. if((mimo_ter_info.Link.connect_status == COMP_NORMAL || (Dev.Part_Tradar_Link.connect_status == COMP_NORMAL && Dev.Part_radarT.facid == FAC_MIMO_RB)) &&
  547. mimo_ter_info.get_radar_ver_flag == false)
  548. {
  549. radar_can_buf[0] = 0x55;
  550. radar_can_buf[1] = 0xAA;
  551. radar_can_buf[2] = 0x03;
  552. radar_can_buf[3] = 0x70;
  553. radar_can_buf[4] = 0x00;
  554. radar_can_buf[5] = 0x01;
  555. radar_can_buf[6] = 0x71;
  556. Can_Send_Msg_Func(CANID1, radar_can_buf, 7, 0xFA, CAN_ID_STD);
  557. }
  558. else if((mimo_f_info.Link.connect_status == COMP_NORMAL || Dev.Part_Fradar_Link.connect_status == COMP_NORMAL) &&
  559. mimo_f_info.get_radar_ver_flag == false)
  560. {
  561. radar_can_buf[0] = 0x55;
  562. radar_can_buf[1] = 0xAA;
  563. radar_can_buf[2] = 0x03;
  564. radar_can_buf[3] = 0x70;
  565. radar_can_buf[4] = 0x03;
  566. radar_can_buf[5] = 0x01;
  567. radar_can_buf[6] = 0x74;
  568. Can_Send_Msg_Func(CANID1, radar_can_buf, 7, 0xFA, CAN_ID_STD);
  569. }
  570. else if((mimo_b_info.Link.connect_status == COMP_NORMAL || Dev.Part_Bradar_Link.connect_status == COMP_NORMAL ) &&
  571. mimo_b_info.get_radar_ver_flag == false)
  572. {
  573. radar_can_buf[0] = 0x55;
  574. radar_can_buf[1] = 0xAA;
  575. radar_can_buf[2] = 0x03;
  576. radar_can_buf[3] = 0x70;
  577. radar_can_buf[4] = 0x04;
  578. radar_can_buf[5] = 0x01;
  579. radar_can_buf[6] = 0x75;
  580. Can_Send_Msg_Func(CANID1, radar_can_buf, 7, 0xFA, CAN_ID_STD);
  581. }
  582. if(DM_ter_info.Link.connect_status == COMP_NORMAL && DM_ter_info.get_radar_ver_flag == false)
  583. {
  584. radar_can_buf[0] = 1;
  585. radar_can_buf[7] = 7;
  586. Can_Send_Msg_Func(CANID1, radar_can_buf, 8, 0x981300, CAN_ID_EXT);
  587. }
  588. else if((DM_f_info.Link.connect_status == COMP_NORMAL || Dev.DM_Part_Fradar_Link.connect_status == COMP_NORMAL) && DM_f_info.get_radar_ver_flag == false)
  589. {
  590. radar_can_buf[0] = 1;
  591. radar_can_buf[7] = 7;
  592. Can_Send_Msg_Func(CANID1, radar_can_buf, 8, 0xA81300, CAN_ID_EXT);
  593. //can_send_msg_normal(radar_can_buf, 8, 0XA81300);
  594. }
  595. else if( Dev.DM_Part_Bradar_Link.connect_status == COMP_NORMAL && DM_4DB_info.get_radar_ver_flag == false)
  596. {
  597. radar_can_buf[0] = 1;
  598. radar_can_buf[7] = 7;
  599. Can_Send_Msg_Func(CANID1, radar_can_buf, 8, 0XB81300, CAN_ID_EXT);
  600. //can_send_msg_normal(radar_can_buf, 8, 0XB81300);
  601. }
  602. }
  603. /**
  604. * @file get_flowmeter_version_and_sn
  605. * @brief 获取流量计版本、SN号、K值
  606. * @param none
  607. * @details
  608. * @author Zhang Sir
  609. **/
  610. void get_flowmeter_version_and_sn(void)
  611. {
  612. if((Dev.Flow_Link1.connect_status == COMP_NORMAL || Dev.Flow_Link2.connect_status == COMP_NORMAL) &&
  613. (Dev.Flow.facid == FAC_MIMO_SIG || Dev.Flow.facid == FAC_MIMO_DOU))
  614. {
  615. uint8_t can_buf[8] = {0};
  616. //读取K值 和序列号
  617. if(flow_mimo1.get_k == false && Dev.Flow_Link1.connect_status == COMP_NORMAL )
  618. {
  619. //K值
  620. can_buf[0] = 0xfa;
  621. can_buf[1] = 0x10;
  622. can_buf[2] = 0x00;
  623. can_buf[3] = 0xB1;
  624. can_buf[4] = 0xD1;
  625. can_buf[5] = 0x00;
  626. can_buf[6] = 0x00;
  627. for(uint8_t i = 1; i < 7; i++)
  628. {
  629. can_buf[7] += can_buf[i];
  630. }
  631. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  632. can_buf[7] = 0;
  633. HAL_Delay(50);
  634. //序列号
  635. can_buf[0] = 0xfa;
  636. can_buf[1] = 0x10;
  637. can_buf[2] = 0x00;
  638. can_buf[3] = 0xB2;
  639. can_buf[4] = 0xEB;
  640. can_buf[5] = 0x00;
  641. can_buf[6] = 0x00;
  642. for(uint8_t i = 1; i < 7; i++)
  643. {
  644. can_buf[7] += can_buf[i];
  645. }
  646. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  647. can_buf[7] = 0;
  648. HAL_Delay(50);
  649. //软件版本
  650. can_buf[0] = 0xfa;
  651. can_buf[1] = 0x10;
  652. can_buf[2] = 0x00;
  653. can_buf[3] = 0xB2;
  654. can_buf[4] = 0xEC;
  655. can_buf[5] = 0x00;
  656. can_buf[6] = 0x00;
  657. for(uint8_t i = 1; i < 7; i++)
  658. {
  659. can_buf[7] += can_buf[i];
  660. }
  661. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  662. can_buf[7] = 0;
  663. }
  664. else if(flow_mimo2.get_k == false && Dev.Flow_Link2.connect_status == COMP_NORMAL)
  665. {
  666. can_buf[0] = 0xfa;
  667. can_buf[1] = 0x10;
  668. can_buf[2] = 0x01;
  669. can_buf[3] = 0xB1;
  670. can_buf[4] = 0xD1;
  671. can_buf[5] = 0x00;
  672. can_buf[6] = 0x00;
  673. for(uint8_t i = 1; i < 7; i++)
  674. {
  675. can_buf[7] += can_buf[i];
  676. }
  677. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  678. can_buf[7] = 0;
  679. //序列号
  680. can_buf[0] = 0xfa;
  681. can_buf[1] = 0x10;
  682. can_buf[2] = 0x00;
  683. can_buf[3] = 0xB2;
  684. can_buf[4] = 0xEB;
  685. can_buf[5] = 0x00;
  686. can_buf[6] = 0x00;
  687. for(uint8_t i = 1; i < 7; i++)
  688. {
  689. can_buf[7] += can_buf[i];
  690. }
  691. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  692. can_buf[7] = 0;
  693. //软件版本
  694. can_buf[0] = 0xfa;
  695. can_buf[1] = 0x10;
  696. can_buf[2] = 0x00;
  697. can_buf[3] = 0xB2;
  698. can_buf[4] = 0xEC;
  699. can_buf[5] = 0x00;
  700. can_buf[6] = 0x00;
  701. for(uint8_t i = 1; i < 7; i++)
  702. {
  703. can_buf[7] += can_buf[i];
  704. }
  705. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  706. can_buf[7] = 0;
  707. }
  708. //设置流量计K
  709. if(flow_mimo1.set_k == true && Dev.Flow_Link1.connect_status == COMP_NORMAL )
  710. {
  711. can_buf[0] = 0xfa;
  712. can_buf[1] = 0x10;
  713. can_buf[2] = 0x00;
  714. can_buf[3] = 0xB1;
  715. can_buf[4] = 0xC1;
  716. can_buf[5] = flow_mimo1.flow_calk >> 8;
  717. can_buf[6] = flow_mimo1.flow_calk;
  718. can_buf[7] = 0;
  719. for(uint8_t i = 1; i < 7; i++)
  720. {
  721. can_buf[7] += can_buf[i];
  722. }
  723. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  724. HAL_Delay(50);
  725. }
  726. if(flow_mimo2.set_k == true && Dev.Flow_Link2.connect_status == COMP_NORMAL)
  727. {
  728. can_buf[0] = 0xfa;
  729. can_buf[1] = 0x10;
  730. can_buf[2] = 0x01;
  731. can_buf[3] = 0xB1;
  732. can_buf[4] = 0xC1;
  733. can_buf[5] = flow_mimo2.flow_calk >> 8;
  734. can_buf[6] = flow_mimo2.flow_calk;
  735. can_buf[7] = 0;
  736. for(uint8_t i = 1; i < 7; i++)
  737. {
  738. can_buf[7] += can_buf[i];
  739. }
  740. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  741. }
  742. if(flow_inf.ch1.clear_background == true)
  743. {
  744. can_buf[0] = 0xfa;
  745. can_buf[1] = 0x10;
  746. can_buf[2] = 0x00;
  747. can_buf[3] = 0xB2;
  748. can_buf[4] = 0xE2;
  749. can_buf[5] = 0;
  750. can_buf[6] = 0;
  751. can_buf[7] = 0;
  752. for(uint8_t i = 1; i < 7; i++)
  753. {
  754. can_buf[7] += can_buf[i];
  755. }
  756. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  757. }
  758. else if(flow_inf.ch2.clear_background == true)
  759. {
  760. can_buf[0] = 0xfa;
  761. can_buf[1] = 0x10;
  762. can_buf[2] = 0x01;
  763. can_buf[3] = 0xB2;
  764. can_buf[4] = 0xE2;
  765. can_buf[5] = 0;
  766. can_buf[6] = 0;
  767. can_buf[7] = 0;
  768. for(uint8_t i = 1; i < 7; i++)
  769. {
  770. can_buf[7] += can_buf[i];
  771. }
  772. Can_Send_Msg_Func(CANID1, can_buf, 8, 0xFA, CAN_ID_STD);
  773. }
  774. }
  775. }
  776. /**
  777. * @file get_eftdev_version_and_sn
  778. * @brief 版本号
  779. * @param none
  780. * @details
  781. * @author Zhang Sir
  782. **/
  783. bool p1_runing_time = false,p2_runing_time = false,n1_runing_time = false,n2_runing_time = false,
  784. n3_runing_time = false,n4_runing_time = false,weight_runing_time = false,spreader_runing_time = false;
  785. /**
  786. * @brief get the version and SN of all EFT devices
  787. * @details get the version and SN of all EFT devices, and send the messages to the
  788. * corresponding devices
  789. * @author Zhang Sir
  790. **/
  791. void get_eftZ70_version_and_sn(void)
  792. {
  793. // uint8_t can_buf[8] = {0};
  794. // if(drone_type == Drone_Z70)
  795. // {
  796. // if((dev_pump1.regist.sn == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
  797. // (dev_pump2.regist.sn == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
  798. // (dev_nozzle1.regist.sn == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
  799. // (dev_nozzle2.regist.sn == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
  800. // (dev_nozzle3.regist.sn == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
  801. // (dev_nozzle4.regist.sn == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL) )
  802. // {
  803. // put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  804. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  805. // }
  806. // else if((dev_pump1.regist.soft == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
  807. // (dev_pump2.regist.soft == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
  808. // (dev_nozzle1.regist.soft == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
  809. // (dev_nozzle2.regist.soft == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
  810. // (dev_nozzle3.regist.soft == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
  811. // (dev_nozzle4.regist.soft == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL) )
  812. // {
  813. // put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  814. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  815. // }
  816. // else if((p1_runing_time == false && Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL) ||
  817. // (p2_runing_time == false && Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL) ||
  818. // (n1_runing_time == false && Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL) ||
  819. // (n2_runing_time == false && Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL) ||
  820. // (n3_runing_time == false && Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL) ||
  821. // (n4_runing_time == false && Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL))
  822. // {
  823. // put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  824. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  825. // }
  826. // //称重单独处理
  827. // else if( dev_weight.regist.sn == false &&Dev.Weight_Link.connect_status == COMP_NORMAL)
  828. // {
  829. // put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  830. // if(Z70_LiftingWeight_exist == false)
  831. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  832. // else
  833. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
  834. // }
  835. // else if(dev_weight.regist.soft == false && Dev.Weight_Link.connect_status == COMP_NORMAL)
  836. // {
  837. // put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  838. // if(Z70_LiftingWeight_exist == false)
  839. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  840. // else
  841. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
  842. // }
  843. // else if(weight_runing_time == false && Dev.Weight_Link.connect_status == COMP_NORMAL)
  844. // {
  845. // put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  846. // if(Z70_LiftingWeight_exist == false)
  847. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  848. // else
  849. // Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
  850. // }
  851. // }
  852. }
  853. void get_eftdev_version_and_sn(void)
  854. {
  855. uint8_t can_buf[8] = {0};
  856. //水泵1
  857. if(Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL)
  858. {
  859. if(dev_pump1.regist.sn == false)
  860. {
  861. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  862. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
  863. }
  864. else if(dev_pump1.regist.soft == false)
  865. {
  866. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  867. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
  868. }
  869. else if(p1_runing_time == false)
  870. {
  871. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  872. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
  873. }
  874. }
  875. //水泵2
  876. if(Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL)
  877. {
  878. if(dev_pump2.regist.sn == false)
  879. {
  880. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  881. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
  882. }
  883. else if(dev_pump2.regist.soft == false)
  884. {
  885. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  886. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
  887. }
  888. else if(p2_runing_time == false)
  889. {
  890. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  891. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
  892. }
  893. }
  894. //离心1
  895. if(Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL)
  896. {
  897. if(dev_nozzle1.regist.sn == false)
  898. {
  899. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  900. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
  901. }
  902. else if(dev_nozzle1.regist.soft == false)
  903. {
  904. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  905. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
  906. }
  907. else if(n1_runing_time == false)
  908. {
  909. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  910. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
  911. }
  912. }
  913. //离心2
  914. if(Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL)
  915. {
  916. if(dev_nozzle2.regist.sn == false)
  917. {
  918. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  919. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
  920. }
  921. else if(dev_nozzle2.regist.soft == false)
  922. {
  923. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  924. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
  925. }
  926. else if(n2_runing_time == false)
  927. {
  928. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  929. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
  930. }
  931. }
  932. //离心3
  933. if(Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL)
  934. {
  935. if(dev_nozzle3.regist.sn == false)
  936. {
  937. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  938. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
  939. }
  940. else if(dev_nozzle3.regist.soft == false)
  941. {
  942. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  943. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
  944. }
  945. else if(n3_runing_time == false)
  946. {
  947. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  948. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
  949. }
  950. }
  951. //离心4
  952. if(Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL)
  953. {
  954. if(dev_nozzle4.regist.sn == false)
  955. {
  956. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  957. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
  958. }
  959. else if(dev_nozzle4.regist.soft == false)
  960. {
  961. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  962. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
  963. }
  964. else if(n4_runing_time == false)
  965. {
  966. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  967. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
  968. }
  969. }
  970. //称重
  971. if(Dev.Weight_Link.connect_status == COMP_NORMAL && Dev.Weight.facid == FAC_EFT)
  972. {
  973. if(dev_weight.regist.sn == false)
  974. {
  975. put_date_to_can(can_buf,0xE3,0,0,0,0,0xF1,0xF3,0 );
  976. Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
  977. }
  978. else if(dev_weight.regist.soft == false)
  979. {
  980. put_date_to_can(can_buf,0xE2,0,0,0,0,0xF1,0xF3,0 );
  981. Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
  982. }
  983. else if(weight_runing_time == false)
  984. {
  985. put_date_to_can(can_buf,0xE4,0,0,0,0,0xF1,0xF3,0 );
  986. Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
  987. }
  988. }
  989. //播撒器
  990. if(Dev.Seed_Link.connect_status == COMP_NORMAL && Dev.Seed.facid == FAC_EFT)
  991. {
  992. if(dev_spreader.regist.sn == false)
  993. {
  994. put_date_to_can(can_buf,0xF8,0,0,0,0,0xF1,0xF3,0 );
  995. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
  996. }
  997. else if(dev_spreader.regist.soft == false)
  998. {
  999. put_date_to_can(can_buf,0xf9,0,0,0,0,0xF1,0xF3,0 );
  1000. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
  1001. }
  1002. else if(spreader_runing_time == false)
  1003. {
  1004. put_date_to_can(can_buf,0xFB,0,0,0,0,0xF1,0xF3,0 );
  1005. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
  1006. }
  1007. }
  1008. }
  1009. /**
  1010. * @file get_spread_version_and_sn
  1011. * @brief 获取播撒版本号
  1012. * @param none
  1013. * @details
  1014. * @author Zhang Sir
  1015. **/
  1016. void get_spread_version_and_sn( void )
  1017. {
  1018. uint8_t can_buf[8] = {0};
  1019. if(HAL_GetTick() < 3000) //有同样的设备同时存在情况
  1020. return;
  1021. switch (spread_type)
  1022. {
  1023. case SPREAD_NORMAL:
  1024. if(dev_spreader.regist.sn == false)
  1025. {
  1026. put_date_to_can(can_buf,0xF8,0,0,0,0,0xF1,0xF3,0 );
  1027. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
  1028. }
  1029. else if(dev_spreader.regist.soft == false)
  1030. {
  1031. put_date_to_can(can_buf,0xf9,0,0,0,0,0xF1,0xF3,0 );
  1032. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
  1033. }
  1034. else if(spreader_runing_time == false)
  1035. {
  1036. put_date_to_can(can_buf,0xFB,0,0,0,0,0xF1,0xF3,0 );
  1037. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x88F2, CAN_ID_EXT);
  1038. }
  1039. break;
  1040. case SPREAD_JIAOLONG:
  1041. break;
  1042. default:
  1043. break;
  1044. }
  1045. }
  1046. /**
  1047. * @file get_spary_version_and_sn
  1048. * @brief 获取喷洒版本号
  1049. * @param none
  1050. * @details
  1051. * @author Zhang Sir
  1052. **/
  1053. void get_spary_version_and_sn( void )
  1054. {
  1055. uint8_t can_buf[8] = {0};
  1056. if(HAL_GetTick() < 3000) //有同样的设备同时存在情况
  1057. return;
  1058. switch (spary_type)
  1059. {
  1060. case SPARY_GEMO:
  1061. break;
  1062. case SPARY_ROUXING:
  1063. //水泵1
  1064. if(Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL)
  1065. {
  1066. if(dev_pump1.regist.sn == false)
  1067. {
  1068. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1069. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
  1070. }
  1071. else if(dev_pump1.regist.soft == false)
  1072. {
  1073. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1074. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
  1075. }
  1076. else if(p1_runing_time == false)
  1077. {
  1078. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  1079. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8811, CAN_ID_EXT);
  1080. }
  1081. }
  1082. //水泵2
  1083. if(Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL)
  1084. {
  1085. if(dev_pump2.regist.sn == false)
  1086. {
  1087. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1088. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
  1089. }
  1090. else if(dev_pump2.regist.soft == false)
  1091. {
  1092. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1093. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
  1094. }
  1095. else if(p2_runing_time == false)
  1096. {
  1097. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  1098. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8822, CAN_ID_EXT);
  1099. }
  1100. }
  1101. break;
  1102. case SPARY_TRANSFER:
  1103. //水泵1
  1104. if(Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL)
  1105. {
  1106. if(dev_pump1.regist.sn == false)
  1107. {
  1108. put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  1109. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1110. }
  1111. else if(dev_pump1.regist.soft == false)
  1112. {
  1113. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1114. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1115. }
  1116. else if(p1_runing_time == false)
  1117. {
  1118. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1119. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1120. }
  1121. }
  1122. //水泵2
  1123. if(Dev.Eft_CanDev_Link[1].connect_status == COMP_NORMAL)
  1124. {
  1125. if(dev_pump2.regist.sn == false)
  1126. {
  1127. put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  1128. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1129. }
  1130. else if(dev_pump2.regist.soft == false)
  1131. {
  1132. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1133. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1134. }
  1135. else if(p2_runing_time == false)
  1136. {
  1137. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1138. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1139. }
  1140. }
  1141. break;
  1142. default:
  1143. break;
  1144. }
  1145. }
  1146. /**
  1147. * @file get_nozzle_version_and_sn
  1148. * @brief 获取离心喷头版本号
  1149. * @param none
  1150. * @details
  1151. * @author Zhang Sir
  1152. **/
  1153. void get_nozzle_version_and_sn( void )
  1154. {
  1155. uint8_t can_buf[8] = {0};
  1156. if(HAL_GetTick() < 3000) //有同样的设备同时存在情况
  1157. return;
  1158. switch (nozzle_type)
  1159. {
  1160. case NOZZLE_NORMAL:
  1161. //离心1
  1162. if(Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL)
  1163. {
  1164. if(dev_nozzle1.regist.sn == false)
  1165. {
  1166. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1167. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
  1168. }
  1169. else if(dev_nozzle1.regist.soft == false)
  1170. {
  1171. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1172. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
  1173. }
  1174. else if(n1_runing_time == false)
  1175. {
  1176. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  1177. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8833, CAN_ID_EXT);
  1178. }
  1179. }
  1180. //离心2
  1181. if(Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL)
  1182. {
  1183. if(dev_nozzle2.regist.sn == false)
  1184. {
  1185. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1186. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
  1187. }
  1188. else if(dev_nozzle2.regist.soft == false)
  1189. {
  1190. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1191. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
  1192. }
  1193. else if(n2_runing_time == false)
  1194. {
  1195. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  1196. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8844, CAN_ID_EXT);
  1197. }
  1198. }
  1199. //离心3
  1200. if(Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL)
  1201. {
  1202. if(dev_nozzle3.regist.sn == false)
  1203. {
  1204. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1205. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
  1206. }
  1207. else if(dev_nozzle3.regist.soft == false)
  1208. {
  1209. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1210. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
  1211. }
  1212. else if(n3_runing_time == false)
  1213. {
  1214. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  1215. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8855, CAN_ID_EXT);
  1216. }
  1217. }
  1218. //离心4
  1219. if(Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL)
  1220. {
  1221. if(dev_nozzle4.regist.sn == false)
  1222. {
  1223. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1224. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
  1225. }
  1226. else if(dev_nozzle4.regist.soft == false)
  1227. {
  1228. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1229. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
  1230. }
  1231. else if(n4_runing_time == false)
  1232. {
  1233. put_date_to_can(can_buf,0xF6,0,0,0,0,0xF1,0xF3,0 );
  1234. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x8866, CAN_ID_EXT);
  1235. }
  1236. }
  1237. break;
  1238. case NOZZLE_TRANSFER:
  1239. //离心1
  1240. if(Dev.Eft_CanDev_Link[2].connect_status == COMP_NORMAL)
  1241. {
  1242. if(dev_nozzle1.regist.sn == false)
  1243. {
  1244. put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  1245. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1246. }
  1247. else if(dev_nozzle1.regist.soft == false)
  1248. {
  1249. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1250. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1251. }
  1252. else if(n1_runing_time == false)
  1253. {
  1254. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1255. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1256. }
  1257. }
  1258. //离心2
  1259. if(Dev.Eft_CanDev_Link[3].connect_status == COMP_NORMAL)
  1260. {
  1261. if(dev_nozzle2.regist.sn == false)
  1262. {
  1263. put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  1264. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1265. }
  1266. else if(dev_nozzle2.regist.soft == false)
  1267. {
  1268. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1269. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1270. }
  1271. else if(n2_runing_time == false)
  1272. {
  1273. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1274. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1275. }
  1276. }
  1277. //离心3
  1278. if(Dev.Eft_CanDev_Link[4].connect_status == COMP_NORMAL)
  1279. {
  1280. if(dev_nozzle3.regist.sn == false)
  1281. {
  1282. put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  1283. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1284. }
  1285. else if(dev_nozzle3.regist.soft == false)
  1286. {
  1287. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1288. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1289. }
  1290. else if(n3_runing_time == false)
  1291. {
  1292. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1293. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1294. }
  1295. }
  1296. //离心4
  1297. if(Dev.Eft_CanDev_Link[5].connect_status == COMP_NORMAL)
  1298. {
  1299. if(dev_nozzle4.regist.sn == false)
  1300. {
  1301. put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  1302. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1303. }
  1304. else if(dev_nozzle4.regist.soft == false)
  1305. {
  1306. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1307. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1308. }
  1309. else if(n4_runing_time == false)
  1310. {
  1311. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1312. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1313. }
  1314. }
  1315. break;
  1316. default:
  1317. break;
  1318. }
  1319. }
  1320. /**
  1321. * @file get_weight_version_and_sn
  1322. * @brief 获取称重版本号
  1323. * @param none
  1324. * @details
  1325. * @author Zhang Sir
  1326. **/
  1327. void get_weight_version_and_sn( void )
  1328. {
  1329. uint8_t can_buf[8] = {0};
  1330. if(HAL_GetTick() < 3000) //有同样的设备同时存在情况
  1331. return;
  1332. switch (weight_type)
  1333. {
  1334. case WEIGHT_NORMAL:
  1335. break;
  1336. case WEIGHT_LIFT:
  1337. if(dev_weight.regist.sn == false)
  1338. {
  1339. put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  1340. Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
  1341. }
  1342. else if(dev_weight.regist.soft == false)
  1343. {
  1344. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1345. Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
  1346. }
  1347. else if(weight_runing_time == false)
  1348. {
  1349. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1350. Can_Send_Msg_Func(CANID2, can_buf, 8, 0X88BB, CAN_ID_EXT);
  1351. }
  1352. break;
  1353. case WEIGHT_FPLATE:
  1354. if(dev_weight.regist.sn == false)
  1355. {
  1356. put_date_to_can(can_buf,0xE3,0,0,0,0,0xF1,0xF3,0 );
  1357. Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
  1358. }
  1359. else if(dev_weight.regist.soft == false)
  1360. {
  1361. put_date_to_can(can_buf,0xE2,0,0,0,0,0xF1,0xF3,0 );
  1362. Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
  1363. }
  1364. else if(weight_runing_time == false)
  1365. {
  1366. put_date_to_can(can_buf,0xE4,0,0,0,0,0xF1,0xF3,0 );
  1367. Can_Send_Msg_Func(CANID1, can_buf, 8, 0x8877, CAN_ID_EXT);
  1368. }
  1369. break;
  1370. case WEIGHT_TRANFER:
  1371. if(dev_weight.regist.sn == false)
  1372. {
  1373. put_date_to_can(can_buf,0xF3,0,0,0,0,0xF1,0xF3,0 );
  1374. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1375. }
  1376. else if(dev_weight.regist.soft == false)
  1377. {
  1378. put_date_to_can(can_buf,0xF4,0,0,0,0,0xF1,0xF3,0 );
  1379. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1380. }
  1381. else if(weight_runing_time == false)
  1382. {
  1383. put_date_to_can(can_buf,0xF5,0,0,0,0,0xF1,0xF3,0 );
  1384. Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
  1385. }
  1386. break;
  1387. default:
  1388. break;
  1389. }
  1390. }
  1391. /**
  1392. * @file regist_dev_info
  1393. * @brief 注册设备信息
  1394. * @param none
  1395. * @details
  1396. * @author Zhang Sir
  1397. **/
  1398. void regist_dev_info(dev_version_content *dev,uint8_t num,bool verify_flag,char *sn,uint8_t size1,
  1399. char *soft_serial,uint8_t size2,char *hard_serial,uint8_t size3,char *manu,uint8_t size4)
  1400. {
  1401. dev->num = num;
  1402. dev->verify = verify_flag;
  1403. if(dev->regist.dev == false)
  1404. {
  1405. dev->regist.dev = true;
  1406. dev->send_times++;
  1407. }
  1408. if(sn != NULL && size1 <= 32 && dev->regist.sn == false)
  1409. {
  1410. memcpy(dev->sn,sn,size1);
  1411. dev->regist.sn = true;
  1412. dev->send_times++;
  1413. }
  1414. if(soft_serial != NULL && size2 <= 16 && dev->regist.soft == false)
  1415. {
  1416. memcpy(dev->soft_serial,soft_serial,size2);
  1417. dev->regist.soft = true;
  1418. dev->send_times++;
  1419. }
  1420. if(hard_serial != NULL && size3 <= 16 && dev->regist.hard == false)
  1421. {
  1422. memcpy(dev->hard_serial,hard_serial,size3);
  1423. dev->regist.hard = true;
  1424. dev->send_times++;
  1425. }
  1426. if(manu != NULL && size4 <= 16 && dev->regist.manu == false)
  1427. {
  1428. memcpy(dev->manu,manu,size4);
  1429. dev->regist.manu = true;
  1430. dev->send_times++;
  1431. }
  1432. };
  1433. /**
  1434. * @file get_device_version_and_sn
  1435. * @brief 版本号
  1436. * @param none
  1437. * @details
  1438. * @author Zhang Sir
  1439. **/
  1440. void get_device_version_and_sn(void)
  1441. {
  1442. static uint32_t circu_time = 0;
  1443. if(Check_Timer_Ready(&circu_time,_1_HZ_))
  1444. {
  1445. //获取雷达版本和SN号
  1446. get_radar_version_and_sn();
  1447. //获取流量计版本和SN号
  1448. get_flowmeter_version_and_sn();
  1449. get_spread_version_and_sn();
  1450. get_spary_version_and_sn();
  1451. get_nozzle_version_and_sn();
  1452. get_weight_version_and_sn();
  1453. // //获取EFT设备版本信息
  1454. // if(drone_type == Drone_Z70)
  1455. // get_eftZ70_version_and_sn();
  1456. // else if(drone_type == Drone_Z20)
  1457. // get_eftdev_version_and_sn();
  1458. }
  1459. }