回答

收藏

圆点博士小四轴2014版通讯协议之---参数传递

#开源分享 #开源分享 2574 人阅读 | 0 人回复 | 2014-04-30

PID设置命令中的参数传递。在上述PID设置命令中,我们有WRPX,WRPY,WRPZ,WRIX,WRIY,WRIZ六个设置命令,在命令后面,跟随的是参数,下面我们来看这些传递参数的处理方式。
第1步:因为数据区包含的数据是以ASC码的方式存在的,所以我们把这些数据转换成数字。
for(i=0;i<4;i++) com_receive_data_buf=com_receive_str_buf[i+4]-48;
第2步:对数据进行十进制转换。
pid_data_buffer=com_receive_data_buf[0]*1000+com_receive_data_buf[1]*100+com_receive_data_buf[2]*10+com_receive_data_buf[3];         
下面举例进行说明。当我们需要设置X轴的P数据到20的时候,在上位机执行下面指令即可: WRPX0020。
注意:
1.        数据长度必须是四个十进制数,如上面例子中的0020.
2.        需要把下图中把显示方式设置为姿态/电压/手柄。
3.        需要使用1.4及以后上位机软件版本。
接下来我们看遥控器控制命令中的参数传递。遥控参数紧跟在遥控命令RC后面。数据长度为四个字节,数据处理方式和PID略为不同。
第1步:因为数据区包含的数据是以ASC码的方式存在的,所以我们把这些数据转换成数字。
for(i=0;i<8;i++)    {
com_receive_data_buf=com_receive_str_buf[i+2];
if(com_receive_data_buf>58) com_receive_data_buf-=55;
else com_receive_data_buf-=48; }
第2步:合并高低位         
for(i=0;i<4;i++) remote_ctrl_data_buffer=com_receive_data_buf[i*2]*16+com_receive_data_buf[i*2+1];
第3步:赋值给对应的控制量(gas/pitch/roll/yaw)
remote_ctrl_data_gas=remote_ctrl_data_buffer[0];
remote_ctrl_data_pitch= remote_ctrl_data_buffer[1]&0x7f;
remote_ctrl_data_roll= remote_ctrl_data_buffer[2]&0x7f;
remote_ctrl_data_yaw= remote_ctrl_data_buffer[3]&0x7f;
第4步:根据数据的最高位来设置控制量的方向(pitch/roll/yaw)
if(remote_ctrl_data_buffer[1]&0x80)
remote_ctrl_data_pitch = - remote_ctrl_data_pitch;
if(remote_ctrl_data_buffer[2]&0x80)
remote_ctrl_data_roll = - remote_ctrl_data_roll;
if((remote_ctrl_data_buffer[3]&0x80)==0x80)
remote_ctrl_data_yaw = - remote_ctrl_data_pitch;
下面举例进行说明。假定我们从上位机发出下面指令: RC90010283。则表明,油门控制量为90(十六进制),Pitch转向量为正方向的1,Roll转向量为正方向的2,yaw转向量为负方向的3。
注意:
1.        数据长度必须是四个十六进制数,如上面例子中的90010283.
2.        需要把下图中把显示方式设置为姿态/电压/手柄。
3.        需要使用1.4及以后上位机软件版本。

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条