搜索
bottom↓
回复: 4

APM上位机 串口协议 询问

[复制链接]

出0入0汤圆

发表于 2015-4-1 20:22:14 | 显示全部楼层 |阅读模式
请问谁有APM上位机通信协议 我照着网上的那个协议发 显示超时

void Send_Status(void)
{u8 i;        u8 sum = 0,_temp3;        vs32 _temp2 = 0;        vs16 _temp;
        u8 _cnt=0;
        data_to_send[_cnt++]=0xAA;
        data_to_send[_cnt++]=0xAA;
        data_to_send[_cnt++]=0x01;
        data_to_send[_cnt++]=0;

        _temp = (int)(ypr[1]*100);
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp = (int)(ypr[2]*100);
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp = (int)(ypr[0]*100);
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp=Altitude/10;
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
  _temp2=Hight_sonic * 100;
        data_to_send[_cnt++]=BYTE3(_temp2);
        data_to_send[_cnt++]=BYTE2(_temp2);
        data_to_send[_cnt++]=BYTE1(_temp2);
        data_to_send[_cnt++]=BYTE0(_temp2);
        _temp3=0;
        data_to_send[_cnt++]=BYTE0(_temp3);
        data_to_send[3] = _cnt-4;
       

        for( i=0;i<_cnt;i++)
                sum += data_to_send[i];
        data_to_send[_cnt++]=sum;
       
        Send_Data(data_to_send, _cnt);
}


void Send_GPS(void)
{u8 i;        u8 sum = 0;
        u8 _cnt=0;
                vs32 _temp;        u8 _temp4=0;        float _temp2 =0;        vs16 _temp3=0;
        data_to_send[_cnt++]=0xAA;
        data_to_send[_cnt++]=0xAA;
        data_to_send[_cnt++]=0x04;
        data_to_send[_cnt++]=0;

        _temp = (int)(GPS_J*100);
  data_to_send[_cnt++]=BYTE3(_temp);
        data_to_send[_cnt++]=BYTE2(_temp);
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp = (int)(GPS_W*100);
  data_to_send[_cnt++]=BYTE3(_temp);
        data_to_send[_cnt++]=BYTE2(_temp);
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);

        data_to_send[_cnt++]=BYTE3(_temp2);
        data_to_send[_cnt++]=BYTE2(_temp2);
        data_to_send[_cnt++]=BYTE1(_temp2);
        data_to_send[_cnt++]=BYTE0(_temp2);
        _temp2=0;
        data_to_send[_cnt++]=BYTE3(_temp2);
        data_to_send[_cnt++]=BYTE2(_temp2);
        data_to_send[_cnt++]=BYTE1(_temp2);
        data_to_send[_cnt++]=BYTE0(_temp2);

        data_to_send[_cnt++]=BYTE1(_temp3);
        data_to_send[_cnt++]=BYTE0(_temp3);
         _temp3=0;
        data_to_send[_cnt++]=BYTE1(_temp3);
        data_to_send[_cnt++]=BYTE0(_temp3);

        data_to_send[_cnt++]=BYTE0(_temp4);
        _temp4=0;
        data_to_send[_cnt++]=BYTE0(_temp4);
       
        data_to_send[3] = _cnt-4;
       

        for( i=0;i<_cnt;i++)
                sum += data_to_send[i];
        data_to_send[_cnt++]=sum;
       
        Send_Data(data_to_send, _cnt);
}

void Send_Senser(void)
{u8 i;        u8 sum = 0;
        u8 _cnt=0;
        vs16 _temp;
        data_to_send[_cnt++]=0xAA;
        data_to_send[_cnt++]=0xAA;
        data_to_send[_cnt++]=0x02;
        data_to_send[_cnt++]=0;
        _temp = ax_gps;
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp = ay_gps;
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp = az_gps;       
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp = gx_gps;       
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp = gy_gps;       
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
        _temp = gz_gps;       
        data_to_send[_cnt++]=BYTE1(_temp);
        data_to_send[_cnt++]=BYTE0(_temp);
       
        data_to_send[_cnt++] = 0;
        data_to_send[_cnt++] = 0;
        data_to_send[_cnt++] = 0;
        data_to_send[_cnt++] = 0;
        data_to_send[_cnt++] = 0;
        data_to_send[_cnt++] = 0;
       
        data_to_send[3] = _cnt-4;

        for( i=0;i<_cnt;i++)
                sum += data_to_send[i];
        data_to_send[_cnt++] = sum;
       
        Send_Data(data_to_send, _cnt);
}



void Send_Check(u16 check)
{u8 i;        u8 sum = 0;
        data_to_send[0]=0xAA;
        data_to_send[1]=0xAA;
        data_to_send[2]=0xF0;
        data_to_send[3]=3;
        data_to_send[4]=0xBA;
       
        data_to_send[5]=BYTE1(check);
        data_to_send[6]=BYTE0(check);
       

        for( i=0;i<7;i++)
                sum += data_to_send[i];
       
        data_to_send[7]=sum;

        Send_Data(data_to_send, 8);
}

void Send_Data(u8 *dataToSend , u8 length)
{
u16 i;
  for(i=0;i<length;i++)
     UART2_Put_Char(dataToSend[i]);
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-4-1 20:47:19 | 显示全部楼层
这看这是匿名的协议啊。。。。不是apm的吧

出0入0汤圆

 楼主| 发表于 2015-4-1 22:32:58 | 显示全部楼层
wangjt1988 发表于 2015-4-1 20:47
这看这是匿名的协议啊。。。。不是apm的吧

但是和晚上搜到的PDF 格式一样apm飞控通信协议v1.5

出0入0汤圆

发表于 2015-4-1 23:02:00 来自手机 | 显示全部楼层
golaced 发表于 2015-4-1 22:32
但是和晚上搜到的PDF 格式一样apm飞控通信协议v1.5

apm用的mavlink,相比我们的复杂很多

出0入0汤圆

发表于 2015-4-4 21:44:59 来自手机 | 显示全部楼层
mavlink上位機移植有現成範例,去官網找一下直接用
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-14 08:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表