|
|
|
@ -7,7 +7,7 @@
@@ -7,7 +7,7 @@
|
|
|
|
|
*/ |
|
|
|
|
/* AC_Flow_Measure.cpp */ |
|
|
|
|
#include "AC_Flow_Measure.h" |
|
|
|
|
|
|
|
|
|
#include <GCS_MAVLink/GCS.h> |
|
|
|
|
#include <AP_HAL/AP_HAL.h> // AP_HAL::millis() |
|
|
|
|
|
|
|
|
|
#define MY_USE_DEBUG 0 |
|
|
|
@ -17,7 +17,7 @@
@@ -17,7 +17,7 @@
|
|
|
|
|
__FUNCTION__, __LINE__, \
|
|
|
|
|
## args) |
|
|
|
|
#else |
|
|
|
|
// # define Debug(fmt, args ...) copter.gcs().send_text(MAV_SEVERITY_INFO, fmt ## args)
|
|
|
|
|
// # define Debug(fmt, args ...) gcs().send_text(MAV_SEVERITY_INFO,fmt, ## args)
|
|
|
|
|
# define Debug(fmt, args ...) |
|
|
|
|
#endif |
|
|
|
|
extern const AP_HAL::HAL& hal; |
|
|
|
@ -99,6 +99,7 @@ bool Flow_Measure::read(void)
@@ -99,6 +99,7 @@ bool Flow_Measure::read(void)
|
|
|
|
|
uint32_t nbytes = _uart->available();
|
|
|
|
|
while(nbytes-->0) |
|
|
|
|
{ |
|
|
|
|
// Debug("read:%d",nbytes);
|
|
|
|
|
uint8_t temp = _uart->read(); |
|
|
|
|
// uint8_t aaa[1] = {temp};
|
|
|
|
|
// send_cmd_to_radar(aaa,1);
|
|
|
|
@ -351,13 +352,13 @@ void Flow_Measure::my_endianswap(uint8_t * pData,uint8_t startIndex,uint8_t leng
@@ -351,13 +352,13 @@ void Flow_Measure::my_endianswap(uint8_t * pData,uint8_t startIndex,uint8_t leng
|
|
|
|
|
* @param alt 传入海拔高度 |
|
|
|
|
* @param time 测流历时 |
|
|
|
|
*/ |
|
|
|
|
void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t alt,uint8_t time) |
|
|
|
|
void Flow_Measure::flow_auto_measure(bool start_sw,bool index_sw,int32_t alt,uint8_t time) |
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static uint8_t manual_cnt = 0; // 手动测流计数
|
|
|
|
|
measure_time = time; |
|
|
|
|
if((get_reach_flow_wp() || start_sw > 1400)){
|
|
|
|
|
if((get_reach_flow_wp() || start_sw )){
|
|
|
|
|
// set_auto_measure_mode(true);
|
|
|
|
|
static uint8_t repeat; |
|
|
|
|
|
|
|
|
@ -366,6 +367,12 @@ void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t
@@ -366,6 +367,12 @@ void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t
|
|
|
|
|
// const struct Location &loc = gps.location();
|
|
|
|
|
// int16_t delt_alt = gps.get_gps_delt_alt();
|
|
|
|
|
// int32_t real_alt = loc.alt + delt_alt;
|
|
|
|
|
// static uint8_t last_state = 5;
|
|
|
|
|
// if(last_state != flow_update_state)
|
|
|
|
|
// {
|
|
|
|
|
// last_state = flow_update_state;
|
|
|
|
|
// gcs().send_text(MAV_SEVERITY_NOTICE, "[NOTE]flow_update_state:%d",flow_update_state);
|
|
|
|
|
// }
|
|
|
|
|
switch (flow_update_state) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
@ -414,7 +421,8 @@ void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t
@@ -414,7 +421,8 @@ void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t
|
|
|
|
|
set_is_data_flag(false); |
|
|
|
|
send_cmd(START_MEASURE); |
|
|
|
|
repeat = 0; |
|
|
|
|
// gcs().send_text(MAV_SEVERITY_NOTICE, "[NOTE]Send START_MEASURE command ");
|
|
|
|
|
// gcs().send_text(MAV_SEVERITY_NOTICE, "[INFO]设置测流历时: %3ds",measure_time);
|
|
|
|
|
gcs().send_text(MAV_SEVERITY_NOTICE, "[NOTE]Send START_MEASURE command "); |
|
|
|
|
} |
|
|
|
|
// else if(index_sw > 1400)
|
|
|
|
|
// {
|
|
|
|
@ -434,7 +442,7 @@ void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t
@@ -434,7 +442,7 @@ void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t
|
|
|
|
|
// send_cmd(GET_DATA);
|
|
|
|
|
if(get_radar_data()) |
|
|
|
|
{ |
|
|
|
|
if(index_sw > 1400){ |
|
|
|
|
if(index_sw){ |
|
|
|
|
manual_cnt++; |
|
|
|
|
set_wp_index(manual_cnt); |
|
|
|
|
} |
|
|
|
@ -456,15 +464,15 @@ void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t
@@ -456,15 +464,15 @@ void Flow_Measure::flow_auto_measure(uint16_t start_sw,uint16_t index_sw,int32_t
|
|
|
|
|
set_is_data_flag(true); |
|
|
|
|
send_cmd(GET_DATA); |
|
|
|
|
repeat = 0; |
|
|
|
|
// gcs().send_text(MAV_SEVERITY_NOTICE, "[NOTE]Send GET_DATA command ");
|
|
|
|
|
gcs().send_text(MAV_SEVERITY_NOTICE, "[NOTE]Send GET_DATA command "); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}else if(!get_reach_flow_wp() && start_sw < 1400 ){ |
|
|
|
|
}else if(!get_reach_flow_wp() && !start_sw ){ |
|
|
|
|
flow_update_state = 1; |
|
|
|
|
|
|
|
|
|
if(index_sw < 1400){ |
|
|
|
|
if(!index_sw){ |
|
|
|
|
manual_cnt = 0; |
|
|
|
|
set_wp_index(manual_cnt); |
|
|
|
|
} |
|
|
|
|