请选择 进入手机版 | 继续访问电脑版
正在上传图片(0/1)

经纬M600PRO 二次开发数据回传

 0
手机看帖 8 984
1.经纬M600PRO  无人机上面挂载自己的传感器,需要开发 OSDK  PSDK   MSDK  三个包吗  还是只需要开发  OSDK  和 MSDK  就可以
2.OSDK(版本3.9)与MSDK的数据通信函数怎么使用,如何发送与接收
评论
上传
你需要登录之后才能回帖    登录 | 注册
楼主   2020-5-16 2#
张小龙5-15 16:28
看了下代码,这个不是发送函数,这个是设置数据接收的回调函数。
发送用这个,https://github.com/dji-sdk/Onboard-SDK/blob/3.9/osdk-core/api/src/dji_mobile_device.cpp#L41
[图片]
第一个参数是你要发送数据的地址指针,第二个就是发送的长度
1.这个发送  直接将自己的数据发送就可以了吗   关于发送的数据协议在里面是自动完成的吗    直接使用这个函数   会不会影响其他函数(如我在使用这个函数发送  后台的其他函数也在使用这个函数发送)
2.手机端返回的数据通过static void getDataFromMSDKCallback(Vehicle*      vehiclePtr , RecvContainer recvFrame , UserData      userData); 这个函数接收就可以了吗   这个函数的参数如何设定
楼主   2020-5-21 3#
张小龙5-19 20:22
1.这个发送  直接将自己的数据发送就可以了吗   关于发送的数据协议在里面是自动完成的吗    直接使用这个函数   会不会影响其他函数(如我在使用这个函数发送  后台的其他函数也在使用这个函数发送)
==>是的,调用这个函数后将自动完成发送,OSDK 3.9的STM32 sample是个裸机代码,不存在后台的其他函数也在使用这个函数发送....

2.手机端返回的数据通过static void getDataFromMSDKCallback(Vehicle*      vehiclePtr , RecvContainer recvFrame , UserData      userData); 这个函数接收就可以了吗   这个函数的参数如何设定
==> 可以,这个函数的用法和参数使用可以参考 setFromMSDKCallback,https://github.com/dji-sdk/Onboard-SDK/blob/3.9/sample/platform/STM32/OnBoardSDK_STM32/User/main.cpp#L193
void
parseFromMobileCallback(DJI::OSDK::Vehicle*      vehicle,
                        DJI::OSDK::RecvContainer recvFrame,
                        DJI::OSDK::UserData      userData)
{

  uint16_t mobile_data_id;
  mobile_data_id =
    *(reinterpret_cast<uint16_t*>(&recvFrame.recvData.raw_ack_array));

  switch (mobile_data_id)
  {
    case 2:
      v->obtainCtrlAuthority(controlAuthorityMobileCallback);
      break;
    case 3:
      v->releaseCtrlAuthority(controlAuthorityMobileCallback);
      break;
    case 5:
      if(v->getFwVersion() != Version::M100_31)
      {
        v->control->action(Control::FlightCommand::startMotor,
        actionMobileCallback);
      }
      else
      {
        v->control->armMotors(actionMobileCallback);
      }
      break;
    case 6:
      if(v->getFwVersion() != Version::M100_31)
      {
        v->control->action(Control::FlightCommand::stopMotor,
        actionMobileCallback);
      }
      else
      {
             v->control->disArmMotors(actionMobileCallback);
      }
      break;
    default:
      break;
  }
}


这段代码里面的  mobile_data_id是什么意思, 这个的传输数据协议是怎样的,如何从里面提取出从MOSDK给OSDK发送的数据
张小龙   2020-5-25 4#
ZRYQ5-21 19:10
void
parseFromMobileCallback(DJI::OSDK::Vehicle*      vehicle,
                        DJI::OSDK::RecvContainer recvFrame,
                        DJI::OSDK::UserData      userData)
{

  uint16_t mobile_data_id;
  mobile_data_id =
    *(reinterpret_cast(&amp;recvFrame.recvData.raw_ack_array));

  switch (mobile_data_id)
  {
    case 2:
      v-&gt;obtainCtrlAuthority(controlAuthorityMobileCallback);
      break;
    case 3:
      v-&gt;releaseCtrlAuthority(controlAuthorityMobileCallback);
      break;
    case 5:
      if(v-&gt;getFwVersion() != Version::M100_31)
      {
        v-&gt;control-&gt;action(Control::FlightCommand::startMotor,
        actionMobileCallback);
      }
      else
      {
        v-&gt;control-&gt;armMotors(actionMobileCallback);
      }
      break;
    case 6:
      if(v-&gt;getFwVersion() != Version::M100_31)
      {
        v-&gt;control-&gt;action(Control::FlightCommand::stopMotor,
        actionMobileCallback);
      }
      else
      {
             v-&gt;control-&gt;disArmMotors(actionMobileCallback);
      }
      break;
    default:
      break;
  }
}


这段代码里面的  mobile_data_id是什么意思, 这个的传输数据协议是怎样的,如何从里面提取出从MOSDK给OSDK发送的数据
mobile_data_id就是MSDK端发给OSDK的用户自定义数据,比如你在MSDK端发 123,OSDK这边 mobile_data_id 就是123
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表