OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5528|回复: 5

求助,匿名上位机读pid协议怎么写好

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2018-4-6
在线时间
25 小时
发表于 2018-5-24 23:46:42 | 显示全部楼层 |阅读模式
3金钱
本帖最后由 会飞的萨摩 于 2018-5-24 23:48 编辑

有哪位大佬写过匿名上位机的读pid或写pid吗,按我的理解是上位机从下位机读取pid数据,我按协议改了关键字什么的,并且放在while(1)里
让他一直发送pid数据给上位机,可是我点那个读pid没有显示,下面是我改的程序,还有匿名接收的数据,有哪位大佬帮帮忙看看我哪里搞错了吗?
新人一个 还很多不懂.......

在主函数,我简单的发了个1,2,3,4,5,6,7,8,9,看能不能读到

协议:
5:上位机发送读PID数据的命令为:0X8A 0X8B 0X1C 0XAD + 无用数据 + SUM
6:下位机发送offset数据给上位机的格式为:0X88 0XAC 0X1C 0XAC + 传感器零偏数据ACC XYZ GYRO XYZ
      +无用数据+SUM,共六个int16型数据。
7:下位机发送PID数据给上位机的格式为:0X88 0XAC 0X1C 0XAD + PID数据 + 无用数据 + SUM
      PID数据为rol_p,rol_i,rol_d,pit_p..i..d,yaw_p,,i,,d,共9个uint16型数据。
8:上位机发送PID数据给下位机的格式为:0X8A 0X8B 0X1C 0XAE +PID数据+ 无用数据 + SUM
      PID数据格式和下位机发送给上位机的格式一样。

下面是我改的程序
void usart1_niming_PID_report(u8 fun,u8*data,u8 len)
{
        u8 send_buf[32];
        u8 i;
        if(len>28)return;        //×î¶à28×Ö½úêy¾Y
        send_buf[len+4]=0;        //D£ÑéêyÖÃáã
        send_buf[0]=0X88;        //Ö¡í·
        send_buf[1]=fun;        //1|Äü×Ö
        send_buf[2]=len;        //êy¾Y3¤¶è
        send_buf[3]=0xAD;  //
        for(i=0;i<len;i++)send_buf[4+i]=data;                        //&#184;′&#214;&#198;êy&#190;Y
        for(i=0;i<len+4;i++)send_buf[len+4]+=send_buf;        //&#188;&#198;&#203;&#227;D£&#209;éoí       
        for(i=0;i<len+5;i++)usart1_send_char(send_buf);        //·¢&#203;íêy&#190;Yμ&#189;′&#174;&#191;ú1
}
void usart1_report_PID(short rol_p,short rol_i,short rol_d,short pit_p,short pit_i,short pit_d,short yaw_p,short yaw_i,short yaw_d)
{
        u8 tbuf[28];
        u8 i;
        for(i=0;i<28;i++)tbuf=0;//&#199;&#229;0
        tbuf[0]=(rol_p>>8)&0XFF;
        tbuf[1]=rol_p&0XFF;
        tbuf[2]=(rol_i>>8)&0XFF;
        tbuf[3]=rol_i&0XFF;
        tbuf[4]=(rol_d>>8)&0XFF;
        tbuf[5]=rol_d&0XFF;
        tbuf[6]=(pit_p>>8)&0XFF;
        tbuf[7]=pit_p&0XFF;
        tbuf[8]=(pit_i>>8)&0XFF;
        tbuf[9]=pit_i&0XFF;
        tbuf[10]=(pit_d>>8)&0XFF;
        tbuf[11]=pit_d&0XFF;       
        tbuf[12]=(yaw_p>>8)&0XFF;
        tbuf[13]=yaw_p&0XFF;
        tbuf[14]=(yaw_i>>8)&0XFF;
        tbuf[15]=yaw_i&0XFF;
        tbuf[16]=(yaw_d>>8)&0XFF;
        tbuf[17]=yaw_d&0XFF;
        usart1_niming_PID_report(0XAC,tbuf,28);//·¢&#203;ípid 0xac
}  



匿名接收到的数据

匿名接收到的数据

就是想实现这个按钮的功能

就是想实现这个按钮的功能

最佳答案

查看完整内容[请看2#楼]

使用V4.22的上位机有示例代码
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

448

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1755
金钱
1755
注册时间
2015-2-7
在线时间
369 小时
发表于 2018-5-24 23:46:43 | 显示全部楼层
使用V4.22的上位机有示例代码
QQ截图20180525081939.png
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2018-4-6
在线时间
25 小时
 楼主| 发表于 2018-5-24 23:51:52 | 显示全部楼层
话说怎么贴代码诶
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2018-4-6
在线时间
25 小时
 楼主| 发表于 2018-5-25 12:30:37 | 显示全部楼层
电子之旅 发表于 2018-5-25 08:21
使用V4.22的上位机有示例代码

好的,我今晚看看。谢谢
回复

使用道具 举报

11

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-4-7
在线时间
29 小时
发表于 2018-5-26 10:31:13 | 显示全部楼层
楼主,代码可以分享一下吗,最近在搞通过上位机在线调试PID参数。万分感谢
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2018-4-6
在线时间
25 小时
 楼主| 发表于 2018-5-30 01:36:18 | 显示全部楼层
链接:https://pan.baidu.com/s/1FHXQikzIwUfqEMrtGcFDng 密码:37kv
这里有份代码例程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-26 06:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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