|
switch(rxd_buffer[1])
{
//数字传输格式应该是低字节在前,高字节在后 。字符传输格式是字节顺序排列
case 0x01:
runtime=(rxd_buffer[6]<<24)|(rxd_buffer[5]<<16)|(rxd_buffer[4]<<8)|rxd_buffer[3];
Memo4->Lines->Add("飞控通电时间: "+IntToStr(runtime)+" 毫秒");
break;
case 0x02:
{
switch(rxd_buffer[5])
{
case 3:
Memo4->Lines->Add("端口A连接:AHRS模块");
break;
case 4:
Memo4->Lines->Add("端口A连接:GPS模块");
break;
case 5:
Memo4->Lines->Add("端口A连接:LED模块");
break;
case 6:
Memo4->Lines->Add("端口A连接:电源管理模块");
break;
default:
break;
}
/*
TDataRecord *dr=new TDataRecord();
dr->analog[0] =(rxd_buffer[6]<<8)|rxd_buffer[5];
dr->analog[1] =(rxd_buffer[8]<<8)|rxd_buffer[7];
dr->analog[2] =(rxd_buffer[10]<<8)|rxd_buffer[9];
dr->analog[3] =(rxd_buffer[12]<<8)|rxd_buffer[11];
dr->analog[4] =(rxd_buffer[14]<<8)|rxd_buffer[13];
dr->analog[5] =(rxd_buffer[16]<<8)|rxd_buffer[15];
dr->analog[6] =(rxd_buffer[18]<<8)|rxd_buffer[17];
dr->analog[7] =(rxd_buffer[20]<<8)|rxd_buffer[19];
dr->analog[8] =(rxd_buffer[22]<<8)|rxd_buffer[21];
dr->analog[9] =(rxd_buffer[24]<<8)|rxd_buffer[23];
//------------------------------------------------------OpenGL,3D姿态绘制
rx=dr->analog[0]/10;
ry=dr->analog[1]/10;
rz=dr->analog[4]/10;
Button13->Click() ;
//---------------------------------------------
FetchData(dr); //数据包存为List的一条数据
Button8->Click() ; //绘波形图
Edit1->Text =dr->analog[0];
Edit2->Text =dr->analog[1];
Edit3->Text =dr->analog[2];
Edit4->Text =dr->analog[3];
Edit5->Text =dr->analog[4];
Edit6->Text =dr->analog[5];
Edit7->Text =dr->analog[6];
Edit8->Text =dr->analog[7];
Edit9->Text =dr->analog[8];
Edit10->Text =dr->analog[9];
*/
}
break;
case 0x03:
//-----------------------------------
for(i=3;i<=18;i++)
{
info[0]+=(char)rxd_buffer; //需要用char强制转换,否则显示的是整形
}
Memo4->Lines->Add("飞控名称: "+info[0]); //字符型
//--------------------------------------
for(i=19;i<=30;i++)
{
info[1]+=IntToHex(rxd_buffer,1); //需要用char强制转换,否则显示的是整形
}
Memo4->Lines->Add("产品ID: "+info[1]); //这个是应该按16进制显示的
//--------------------------------------
//for(i=31;i<=32;i++)
{
temp[2]=(rxd_buffer[32]<<8)|rxd_buffer[31];
}
Memo4->Lines->Add("硬件版本: "+IntToStr(temp[2])); //整形
//--------------------------------------
//for(i=33;i<=34;i++)
{
temp[3]=(rxd_buffer[34]<<8)|rxd_buffer[33]; //数字用字符串不好显示,还是用整形吧
}
Memo4->Lines->Add("固件版本: "+IntToStr(temp[3])); //整形
//--------------------------------------
//for(i=39;i<=42;i++)
{
temp[4]=(rxd_buffer[40]<<8)|rxd_buffer[39]; //数字用字符串不好显示,还是用整形吧
}
Memo4->Lines->Add("通电次数: "+IntToStr(temp[4])+ " 次"); //整形
//--------------------------------------
//for(i=43;i<=46;i++)
{
temp[5]=(rxd_buffer[46]<<24)|(rxd_buffer[45]<<16)|(rxd_buffer[44]<<8)|rxd_buffer[43];
}
Memo4->Lines->Add("飞行时间: "+IntToStr(temp[5])+ " 秒"); //整形
//--------------------------------------
break;
case 0x04:
break;
case 0x05:
//Button20->Click() ;
break;
case 0x06:// request settings
//Button17->Click() ; //获取参数
break;
case 0x07:
break;
//------------------------------------------------
case 0x32:
//-----------------------------------
//for(i=3;i<=6;i++)
{
angle[0]=*(float*)(rxd_buffer+3); //数组指针只能从数组首地址运算获得,不能用rxd_buffer[3]
angle[1]=*(float*)(rxd_buffer+7);
angle[2]=*(float*)(rxd_buffer+11);
}
Memo4->Lines->Add("横滚角: "+ FloatToStrF(angle[0],ffFixed,10,2)+ " 度");
Memo4->Lines->Add("俯仰角: "+ FloatToStrF(angle[1],ffFixed,10,2)+ " 度");
Memo4->Lines->Add("旋转角: "+ FloatToStrF(angle[2],ffFixed,10,2)+ " 度");
//--------------------------------------
rx=angle[0];
ry=angle[1];
rz=angle[2];
Button13->Click() ;
break;
//-------------------------------------------------
default:
break;
} |
|