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

经纬M600PRO 二次开发数据回传

 0
手机看帖 8 374
1.经纬M600PRO  无人机上面挂载自己的传感器,需要开发 OSDK  PSDK   MSDK  三个包吗  还是只需要开发  OSDK  和 MSDK  就可以
2.OSDK(版本3.9)与MSDK的数据通信函数怎么使用,如何发送与接收
评论
上传
你需要登录之后才能回帖    登录 | 注册
张小龙   5-15 11:50 2#
1. 每个SDK都可以单独开发和使用的,但目前M600 Pro不支持PSDK,如果需要传输传感器数据到地面端,OSDK和MSDK就可以了。

2. 建议参考OSDK官方提供的代码示例,https://github.com/dji-sdk/Onboa ... nux/mobile/main.cpp
楼主   5-15 15:58 3#
张小龙5-15 11:50
1. 每个SDK都可以单独开发和使用的,但目前M600 Pro不支持PSDK,如果需要传输传感器数据到地面端,OSDK和MSDK就可以了。

2. 建议参考OSDK官方提供的代码示例,https://github.com/dji-sdk/Onboard-SDK/blob/3.9/sample/platform/linux/mobile/main.cpp
我是用的是stm32,
// Run Mobile Communication sample
          v->moc->setFromMSDKCallback(parseFromMobileCallback);
这个函数是怎么发送数据到MSDK的  不理解    自定义的数据如何发送
张小龙   5-15 16:28 4#
ZRYQ5-15 15:58
我是用的是stm32,
// Run Mobile Communication sample
          v->moc->setFromMSDKCallback(parseFromMobileCallback);
这个函数是怎么发送数据到MSDK的  不理解    自定义的数据如何发送
看了下代码,这个不是发送函数,这个是设置数据接收的回调函数。
发送用这个,https://github.com/dji-sdk/Onboa ... bile_device.cpp#L41

第一个参数是你要发送数据的地址指针,第二个就是发送的长度
楼主   5-16 09:28 5#
张小龙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); 这个函数接收就可以了吗   这个函数的参数如何设定
张小龙   5-19 20:22 6#
ZRYQ5-16 09:28
1.这个发送  直接将自己的数据发送就可以了吗   关于发送的数据协议在里面是自动完成的吗    直接使用这个函数   会不会影响其他函数(如我在使用这个函数发送  后台的其他函数也在使用这个函数发送)
2.手机端返回的数据通过static void getDataFromMSDKCallback(Vehicle*      vehiclePtr , RecvContainer recvFrame , UserData      userData); 这个函数接收就可以了吗   这个函数的参数如何设定
1.这个发送  直接将自己的数据发送就可以了吗   关于发送的数据协议在里面是自动完成的吗    直接使用这个函数   会不会影响其他函数(如我在使用这个函数发送  后台的其他函数也在使用这个函数发送)
==>是的,调用这个函数后将自动完成发送,OSDK 3.9的STM32 sample是个裸机代码,不存在后台的其他函数也在使用这个函数发送....

2.手机端返回的数据通过static void getDataFromMSDKCallback(Vehicle*      vehiclePtr , RecvContainer recvFrame , UserData      userData); 这个函数接收就可以了吗   这个函数的参数如何设定
==> 可以,这个函数的用法和参数使用可以参考 setFromMSDKCallback,https://github.com/dji-sdk/Onboa ... /User/main.cpp#L193
楼主   5-21 19:10 7#
张小龙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发送的数据
张小龙   5-25 14:57 8#
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
OSdk学习者   6-4 11:09 9#
方便加个好友吗,跟你走同样的路子--msdk接收osdk处理三方传感数据。。我qq963635324
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表