在APM中添加新的mavlink消息
2016-04-21 13:41
501 查看
在最新的APM代码中添加MAVLINK消息和教程中介绍的有些出入。
请对照“]Pixhawk源码笔记十一:增加新的MAVLink消息”进行添加
首先在common.xml或ardupilotmega.xml文件中添加你的信息的定义声明。
这2个文件的实际位置和笔记十一是不同的。实际是在“Modules/mavlink/message_definitions/v1.0”之中
然后可以在common.xml中仿造添加一条消息,例如我测试的是在文件最后结尾处加入
<message id="255" name="TEMP">
<description>send temperature to gcs</description>
<field type="int16_t" name="temperature1">Raw Temperature measurement (raw)</field>
<field type="int16_t" name="temperature2">Raw Temperature measurement (raw)</field>
<field type="int16_t" name="temperature3">Raw Temperature measurement (raw)</field>
<field type="int16_t" name="temperature4">Raw Temperature measurement (raw)</field>
</message>
添加后保存文件,编译。
会发现在Build.ArduCopter/libraries/GCS_MAVLink/include/mavlink/v1.0/common文件下 会多出来新的文件mavlink_msg_temp.h
然后在
GCS.h中的class GCS_MAVLINK
中增加新成员void send_temp(void);
然后在GCS_Common.cpp中加入函数实体
// 发送温度数据//
void GCS_MAVLINK::send_temp(void)
{
mavlink_msg_temp_send(chan, 0x0a,0x0b,0x0c,0x0d);//四个变量,测试使用。方便在串口助手里面找到。
}
最后将这个命令加入到发送循环当中。
例如在GCS_Mavlink.cpp当中的红色的部分。
bool GCS_MAVLINK::try_send_message(enum ap_message id)
{
.....................................
case MSG_RAW_IMU2:
CHECK_PAYLOAD_SIZE(SCALED_PRESSURE);
copter.gcs[chan-MAVLINK_COMM_0].send_scaled_pressure(copter.barometer);
copter.gcs[chan-MAVLINK_COMM_0].send_temp();//
.......................................................................
}
然后在电脑端利用串口助手链接PIXHAWK,你会发现可以接收到数据,但是接收不到加的这组数据。
因为你要打开MissionPlanner激活一下。然后关闭MP,打开串口助手就可以查找到
FE 08 42 01 01 FF 0A 00 0B 00 0C 00 0D 00 38 96
这组命令
以上是我自己添加mavlink的步骤和方法,内容比较少,都是干货。中间涉及的步骤和C++语言结构等等内容
希望大家帮一起补充全。
请对照“]Pixhawk源码笔记十一:增加新的MAVLink消息”进行添加
首先在common.xml或ardupilotmega.xml文件中添加你的信息的定义声明。
这2个文件的实际位置和笔记十一是不同的。实际是在“Modules/mavlink/message_definitions/v1.0”之中
然后可以在common.xml中仿造添加一条消息,例如我测试的是在文件最后结尾处加入
<message id="255" name="TEMP">
<description>send temperature to gcs</description>
<field type="int16_t" name="temperature1">Raw Temperature measurement (raw)</field>
<field type="int16_t" name="temperature2">Raw Temperature measurement (raw)</field>
<field type="int16_t" name="temperature3">Raw Temperature measurement (raw)</field>
<field type="int16_t" name="temperature4">Raw Temperature measurement (raw)</field>
</message>
添加后保存文件,编译。
会发现在Build.ArduCopter/libraries/GCS_MAVLink/include/mavlink/v1.0/common文件下 会多出来新的文件mavlink_msg_temp.h
然后在
GCS.h中的class GCS_MAVLINK
中增加新成员void send_temp(void);
然后在GCS_Common.cpp中加入函数实体
// 发送温度数据//
void GCS_MAVLINK::send_temp(void)
{
mavlink_msg_temp_send(chan, 0x0a,0x0b,0x0c,0x0d);//四个变量,测试使用。方便在串口助手里面找到。
}
最后将这个命令加入到发送循环当中。
例如在GCS_Mavlink.cpp当中的红色的部分。
bool GCS_MAVLINK::try_send_message(enum ap_message id)
{
.....................................
case MSG_RAW_IMU2:
CHECK_PAYLOAD_SIZE(SCALED_PRESSURE);
copter.gcs[chan-MAVLINK_COMM_0].send_scaled_pressure(copter.barometer);
copter.gcs[chan-MAVLINK_COMM_0].send_temp();//
.......................................................................
}
然后在电脑端利用串口助手链接PIXHAWK,你会发现可以接收到数据,但是接收不到加的这组数据。
因为你要打开MissionPlanner激活一下。然后关闭MP,打开串口助手就可以查找到
FE 08 42 01 01 FF 0A 00 0B 00 0C 00 0D 00 38 96
这组命令
以上是我自己添加mavlink的步骤和方法,内容比较少,都是干货。中间涉及的步骤和C++语言结构等等内容
希望大家帮一起补充全。
相关文章推荐
- fpmmm(mpm)监控mysql模块安装
- zabbix配fpmmm(mpm)数据传送不了问题解决
- 码农的产品思维培养第2节----一个需求的奋斗史(人人都是产品经理)
- 执行npm ,再不用sudo
- install a manually downloaded RPM on SUSE
- jbpm错误
- Perl/Nagios – Can’t locate utils.pm in @INC
- EPM-Planning批量修改用户首选项
- Pm命令用法
- Pm命令用法
- RPM 常用命令
- 2016年PMP考试时间安排和等级划分
- npm、spm、bower 这三个包管理器的比较
- npm 和 bower的区别
- mysql的rpm安装
- npm bower安装和使用
- and5.1PowerManagerService深入分析(四)PMS与Display模块
- seajs的spm使用
- spm使用之七不用seajs改用headjs起步
- spm使用之六安装别人写好的spm文档主题模板