大疆社区

标题: 获取point的index错乱问题 [打印本页]

作者: wdcswd    时间: 2015-8-24
标题: 获取point的index错乱问题
先设置了两个point点执行到达指定高度命令后go home,之前用oneKeyFly启动飞机的,到达第一个point显示index为0,第二个为1,这是正常的;接着再执行第二遍同样的操作,结果在oneKeyFly执行后就显示index为1(不应该显示的,因为这里不是point),然后接着是0,再1,;再执行一次同样操作,就获取不到index值了,0个1都没有。我是用DJIGroundStation的setGroundStationMissionPushInfoCallBack方法获取index值的。
因为功能需要,要重复执行同样的操作(到达指定高度)后拍照,获取不到正确的index值就没在正确的point执行拍照了。

作者: iCanFly    时间: 2015-8-25
如果你想获取到达航点的INDEX,建议参考官方DEMO中的这段代码(红色部分):

mGroundStationExecutionPushInfoCallBack = new DJIGroundStationExecutionPushInfoCallBack() {

                        @Override
                        public void onResult(DJIGroundStationExecutionPushInfo info) {
                                // TODO Auto-generated method stub
                                StringBuffer sb = new StringBuffer();
                                switch(info.eventType.value()) {
                                    case EXECUTION_STATUS_UPLOAD_FINISH : {
                                        sb.append("Execution Type : " + info.eventType.toString()).append("\n");
                                        sb.append("Validation : " + (info.isMissionValid ? "true" : "false")).append("\n");
                                        sb.append("Estimated run time : " + info.estimateRunTime).append("\n");
                                        break;
                                    }
                                    
                                    case EXECUTION_STATUS_FINISH : {
                                        sb.append("Execution Type : " + info.eventType.toString()).append("\n");
                                        sb.append("Repeat : " + Integer.toString(info.isRepeat)).append("\n");
//                                        sb.append("Reserve: " + GroundStationWayPointExecutionState.find(info.reserved).toString()).append("\n");
                        break;
                    }
                                    
                                    case EXECUTION_STATUS_REACH_POINT : {
                                        sb.append("Execution Type : " + info.eventType.toString()).append("\n");
                        sb.append("WayPoint index : " + info.wayPointIndex).append("\n");
                        sb.append("Current State : " + GroundStationWayPointExecutionState.find(info.currentState).toString()).append("\n");
                        sb.append("Reserve : " + info.reserved).append("\n");
                        break;
                    }
                                }
                               
                            GsInfoString1 = sb.toString();
                               
                                GsProtocolDemoActivity.this.runOnUiThread(new Runnable() {

                                        @Override
                                        public void run() {
                                                // TODO Auto-generated method stub
                                                mGroundStationTextView1.setText(GsInfoString1);
                                        }
                                       
                                });
                        }
               
        };
        
        DJIDrone.getDjiGroundStation().setGroundStationExecutionPushInfoCallBack(mGroundStationExecutionPushInfoCallBack);
作者: wdcswd    时间: 2015-8-26
iCanFly 发表于 2015-8-25 11:34
如果你想获取到达航点的INDEX,建议参考官方DEMO中的这段代码(红色部分):

mGroundStationExecutionPushI ...
谢谢,这个方法我也用过 ,只适合执行一次飞行任务,返航后再重复执行,index值就获取不到了。

作者: lanyusea    时间: 2015-8-28
wdcswd 发表于 2015-8-26 09:26
谢谢,这个方法我也用过 ,只适合执行一次飞行任务,返航后再重复执行,index值就获取不到了。
...
是这样,飞机返回的信息没有update过就保持不变。
也就是说你飞到第三个航点,返航了,直到再次飞到下一个航点之前返回值永远是第三个航点。

我的做法是存储航点index的那个变量,
在每次takeoff的时候手动赋值成-1

作者: wdcswd    时间: 2015-8-28
lanyusea 发表于 2015-8-28 10:59
是这样,飞机返回的信息没有update过就保持不变。
也就是说你飞到第三个航点,返航了,直到再次飞到下一 ...
请问你是说的update是自带的哪个callback ?还是在哪个地方将index值重新赋值。

作者: lanyusea    时间: 2015-8-28
wdcswd 发表于 2015-8-28 14:23
请问你是说的update是自带的哪个callback ?还是在哪个地方将index值重新赋值。
...
我是单独用一个变量存了index,
然后update这个变量,同时读取这个变量。

但是在takeoff函数里面将它手动初始化,因为update的过程不含初始化什么的。





欢迎光临 大疆社区 (https://bbs.dji.com/) Powered by Discuz! X3.2