?? beaconmanage.cpp
字號:
// BeaconManage.cpp: implementation of the CBeaconManage class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "RADIO.h"
#include "BeaconManage.h"
#include "APPStatic.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
IMPLEMENT_SERIAL(CBeaconManage, CCmdTarget,SCHEMA_BEACON)
BEGIN_MESSAGE_MAP(CBeaconManage, CCmdTarget)
//{{AFX_MSG_MAP(CBeaconManage)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBeaconManage::CBeaconManage()
{
m_bIsBeaconAvailable=FALSE;
m_beaconList.SetSize(0,5);
//測距誤差
m_dMavInitErDisAir = 150.0;
m_dMavInitErDisGround = 100.0;
m_dMavTimeDisAir = 0.5;
m_dMavTimeDisGround = 0.5;
m_dMavWhiteErDisAir = 15.0;//實際上是白噪聲誤差,不是mav的驅(qū)動白噪聲
m_dMavWhiteErDisGround = 10.0;
//頂空盲區(qū)
m_dBlindAir = 60.0;
m_dBlindGround = 50.0;
//測角誤差
m_dMavInitErAzAir = 1.0;
m_dMavInitErAzGround = 0.5;
m_dMavTimeAzAir = 0.5;
m_dMavTimeAzGround = 0.5;
m_MavWhiteErAzAir = 0.1;
m_MavWhiteErAzGround = 0.05;
//工作距離
m_dDistAir = 180.0;
m_dDistGround = 350.0;
//輸出頻率
m_dFreq = 30;
m_iAvailableBCIndex=-1;
}
CBeaconManage::~CBeaconManage()
{
}
CArray<BEACON,BEACON>* CBeaconManage::GetBeaconList()
{
return &m_beaconList;
}
BOOL CBeaconManage::IsBeaconAvailable()
{
return m_bIsBeaconAvailable;
}
void CBeaconManage::Serialize(CArchive& ar)
{
//Schema自己寫去,這里放在前兩字節(jié)。
if (ar.IsStoring())
{
ar<<RUNTIME_CLASS(CBeaconManage)->m_wSchema;
}
else if(ar.IsLoading())
{
UINT nSchema;
ar>>nSchema;
if(nSchema!=SCHEMA_BEACON)
{
AfxMessageBox(_T("信標設置文件版本不符"));
return;
}
}
else{}
//
m_beaconList.Serialize(ar);
if (ar.IsStoring()){
ar<<m_dMavInitErDisAir;
ar<<m_dMavInitErDisGround;
ar<<m_dMavTimeDisAir;
ar<<m_dMavTimeDisGround;
ar<<m_dMavWhiteErDisAir;
ar<<m_dMavWhiteErDisGround;
ar<<m_dBlindAir;
ar<<m_dBlindGround;
ar<<m_dMavInitErAzAir;
ar<<m_dMavInitErAzGround;
ar<<m_dMavTimeAzAir;
ar<<m_dMavTimeAzGround;
ar<<m_MavWhiteErAzAir;
ar<<m_MavWhiteErAzGround;
ar<<m_dDistAir;
ar<<m_dDistGround;
ar<<m_dFreq;
}else{
ar>>m_dMavInitErDisAir;
ar>>m_dMavInitErDisGround;
ar>>m_dMavTimeDisAir;
ar>>m_dMavTimeDisGround;
ar>>m_dMavWhiteErDisAir;
ar>>m_dMavWhiteErDisGround;
ar>>m_dBlindAir;
ar>>m_dBlindGround;
ar>>m_dMavInitErAzAir;
ar>>m_dMavInitErAzGround;
ar>>m_dMavTimeAzAir;
ar>>m_dMavTimeAzGround;
ar>>m_MavWhiteErAzAir;
ar>>m_MavWhiteErAzGround;
ar>>m_dDistAir;
ar>>m_dDistGround;
ar>>m_dFreq;
}
}
void CBeaconManage::DrawBeacon(mwArray mwhAxis){
if(m_beaconList.GetSize()==0) return;
BEACON bc;
mwArray mwBc=APPStatic::GetMainView()->m_mwhBeacon;
TCHAR marker[5];
if(m_bIsBeaconAvailable){
bc=m_beaconList.GetAt(m_iAvailableBCIndex);
if(bc.type==AIR){
lstrcpy(marker,_T("o"));
}
else if(bc.type==GROUND){
lstrcpy(marker,_T("^"));
}
else{lstrcpy(marker,_T("^"));}
POINT3 ori=APPStatic::GetMainView()->m_traj3dShow.m_ptOrigin;
double x=(bc.pos.x-ori.x)*pi().ExtractScalar(1)/(180.0*APPStatic::GetMainView()->m_traj3dShow.m_C2);
double y=(bc.pos.y-ori.y)*pi().ExtractScalar(1)/(180.0*APPStatic::GetMainView()->m_traj3dShow.m_C1);
Vset(mwBc,"xdata",x,"ydata",y,"zdata",bc.pos.z,
"parent",mwhAxis,"marker",marker,"markersize",6,"color","w","visible","on");
}
else{
Vset(mwBc,"visible","off");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -