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及以后上位机软件版本。
|