www.pudn.com > pCom.rar > RadioTestDlg.cpp


// RadioTestDlg.cpp : 实现文件 
// 
#pragma once 
#include "stdafx.h" 
#include "RadioTest.h" 
#include "RadioTestDlg.h" 
#include ".\radiotestdlg.h" 
#include "ExeThread.h" 
#pragma comment (lib,"E:\\Mydesign\\pCom\\GpibEquipCtrl\\Debug\\GpibEquipCtrl.lib") 
 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 
 
static UINT BASED_CODE indicators[] = 
{ 
	ID_SEPARATOR,           // status line indicator 
	ID_INDICATOR_OVR, 
	ID_INDICATOR_CAPS, 
	ID_INDICATOR_NUM 
}; 
 
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框 
 
class CAboutDlg : public CDialog 
{ 
public: 
	CAboutDlg(); 
 
// 对话框数据 
	enum { IDD = IDD_ABOUTBOX }; 
 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持 
 
// 实现 
protected: 
	DECLARE_MESSAGE_MAP() 
}; 
 
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 
{ 
} 
 
void CAboutDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
} 
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) 
END_MESSAGE_MAP() 
 
 
// CRadioTestDlg 对话框 
 
 
 
CRadioTestDlg::CRadioTestDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CRadioTestDlg::IDD, pParent) 
	, m_Sn(_T("")) 
	, mSW(_T("")) 
	, m_IMEI(_T("")) 
	, m_KeyStateDisp(_T("")) 
	, workThread(NULL) 
	, m_Status(_T("")) 
	, TimeCount(0) 
	, currentCount(0) 
	, m_PassFailFlag(_T("")) 
{ 
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
	this->flagIcon[0]=AfxGetApp()->LoadIcon(IDI_ICON1); 
    this->flagIcon[1]=AfxGetApp()->LoadIcon(IDI_ICON2); 
	this->flagIcon[2]=AfxGetApp()->LoadIcon(IDI_ICON3); 
	this->flagIcon[3]=AfxGetApp()->LoadIcon(IDI_ICON4); 
	CommandMeterX=new CommandMeter(); 
	 
} 
CRadioTestDlg::~CRadioTestDlg(void) 
{ 
	delete CommandMeterX; 
} 
 
void CRadioTestDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	DDX_Control(pDX, IDC_STATICFLAG, mFlag); 
	DDX_Control(pDX, IDC_LIST1, listResult); 
	DDX_Text(pDX, IDC_EDITSN, m_Sn); 
	DDX_Text(pDX, IDC_EDITSW, mSW); 
	DDX_Text(pDX, IDC_EDITKEYSTATEDISP, m_KeyStateDisp); 
	DDX_Text(pDX, IDC_EDITSTATUS, m_Status); 
	DDX_Control(pDX, IDC_EDITRESULT, m_Result); 
	DDX_Text(pDX, IDC_PASSFAILFLAG, m_PassFailFlag); 
} 
 
BEGIN_MESSAGE_MAP(CRadioTestDlg, CDialog) 
	ON_WM_SYSCOMMAND() 
	ON_WM_PAINT() 
	ON_WM_QUERYDRAGICON() 
	ON_WM_DEVICECHANGE() 
	//}}AFX_MSG_MAP 
	ON_BN_CLICKED(IDC_BTNREADSN, OnBnClickedBtnreadsn) 
	ON_BN_CLICKED(IDC_BTNREADSW, OnBnClickedBtnreadsw) 
	ON_BN_CLICKED(IDC_BTN1, OnBnClickedBtn1) 
	ON_BN_CLICKED(IDC_BTN2, OnBnClickedBtn2) 
	ON_BN_CLICKED(IDC_BTN3, OnBnClickedBtn3) 
	ON_BN_CLICKED(IDC_BTN4, OnBnClickedBtn4) 
	ON_BN_CLICKED(IDC_BTN5, OnBnClickedBtn5) 
	ON_BN_CLICKED(IDC_BTN6, OnBnClickedBtn6) 
	ON_BN_CLICKED(IDC_BTN7, OnBnClickedBtn7) 
	ON_BN_CLICKED(IDC_BTN8, OnBnClickedBtn8) 
	ON_BN_CLICKED(IDC_BTN9, OnBnClickedBtn9) 
	ON_BN_CLICKED(IDC_BTN0, OnBnClickedBtn0) 
	ON_BN_CLICKED(IDC_BTNA, OnBnClickedBtna) 
	ON_BN_CLICKED(IDC_BTNB, OnBnClickedBtnb) 
	ON_BN_CLICKED(IDC_BTN11, OnBnClickedBtn11) 
	ON_BN_CLICKED(IDC_BTNB12, OnBnClickedBtnb12) 
	ON_BN_CLICKED(IDC_BTNSUSPEND, OnBnClickedBtnsuspend) 
	ON_BN_CLICKED(IDC_BTNNORMAL, OnBnClickedBtnnormal) 
	ON_BN_CLICKED(IDC_BTNKEYTEST, OnBnClickedBtnkeytest) 
	ON_MESSAGE(EXECUTE_CMD,OnExecuteCmd) 
	ON_MESSAGE(END_CMD,OnEndCmd) 
	ON_MESSAGE(WM_RADIOALERT,RadioAlert) 
	ON_MESSAGE(RUN_TEST,OnRunTest) 
	ON_WM_TIMER() 
	ON_WM_CLOSE() 
	ON_WM_CREATE() 
	ON_BN_CLICKED(IDC_BTNEND, OnBnClickedBtnend) 
	ON_BN_CLICKED(IDC_BTNSTARTTEST, OnBnClickedBtnstarttest) 
END_MESSAGE_MAP() 
 
 
// CRadioTestDlg 消息处理程序 
 
BOOL CRadioTestDlg::OnInitDialog() 
{ 
	CDialog::OnInitDialog(); 
 
	// 将\“关于...\”菜单项添加到系统菜单中。 
 
	// IDM_ABOUTBOX 必须在系统命令范围内。 
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 
	ASSERT(IDM_ABOUTBOX < 0xF000); 
 
	CMenu* pSysMenu = GetSystemMenu(FALSE); 
	if (pSysMenu != NULL) 
	{ 
		CString strAboutMenu; 
		strAboutMenu.LoadString(IDS_ABOUTBOX); 
		if (!strAboutMenu.IsEmpty()) 
		{ 
			pSysMenu->AppendMenu(MF_SEPARATOR); 
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 
		} 
	} 
 
	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 
	//  执行此操作 
	SetIcon(m_hIcon, TRUE);			// 设置大图标 
	SetIcon(m_hIcon, FALSE);		// 设置小图标 
	::RegisterNotify(m_hWnd); 
	listResult.Initialize(); 
	if(this->pRadioCtrl.OpenRadio()==TDTK_SUCCESS) 
		this->mFlag.SetIcon(flagIcon[0]); 
	// TODO: 在此添加额外的初始化代码 
	this->workThread=(ExeThread*)new ExeThread; 
    this->workThread->CreateThread(); 
	this->workThread->ResumeThread(); 
	InitializeCriticalSection(&keyTestCritical); 
	//InitializeCriticalSection(&this->stopsection); 
	this->CommandMeterX->InitMeter(); 
	//this->CreateStatusBar(); 
	return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE 
} 
 
void CRadioTestDlg::OnSysCommand(UINT nID, LPARAM lParam) 
{ 
	if ((nID & 0xFFF0) == IDM_ABOUTBOX) 
	{ 
		CAboutDlg dlgAbout; 
		dlgAbout.DoModal(); 
	} 
	else 
	{ 
		CDialog::OnSysCommand(nID, lParam); 
	} 
} 
 
// 如果向对话框添加最小化按钮,则需要下面的代码 
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, 
//  这将由框架自动完成。 
 
void CRadioTestDlg::OnPaint()  
{ 
	CPaintDC dc(this); // 用于绘制的设备上下文 
	if (IsIconic()) 
	{ 
		SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); 
 
		// 使图标在工作矩形中居中 
		int cxIcon = GetSystemMetrics(SM_CXICON); 
		int cyIcon = GetSystemMetrics(SM_CYICON); 
		CRect rect; 
		GetClientRect(&rect); 
		int x = (rect.Width() - cxIcon + 1) / 2; 
		int y = (rect.Height() - cyIcon + 1) / 2; 
 
		// 绘制图标 
		dc.DrawIcon(x, y, m_hIcon); 
	} 
	else 
	{ 
		CFont font; 
		font.CreateFont(45,0,0,0,0,0,0,0,0,0,0,0,0,"Arail"); 
		GetDlgItem(IDC_STATICTITLE)->SetFont(&font); 
		CDialog::OnPaint(); 
	} 
} 
 
//当用户拖动最小化窗口时系统调用此函数取得光标显示。 
HCURSOR CRadioTestDlg::OnQueryDragIcon() 
{ 
	return static_cast(m_hIcon); 
} 
BOOL CRadioTestDlg::OnDeviceChange(UINT nEventType,DWORD dwData) 
{ 
	if (nEventType==DBT_DEVNODES_CHANGED) 
		return 1; 
 
	char* ptr=NULL; 
	TRACE(">>> EVENT 0x%X, data 0x%X\n",nEventType,dwData); 
	TRACE("%X",WM_DEVICECHANGE);	 
	switch( nEventType ) 
	{ 
	case DBT_DEVICEARRIVAL: 
		this->DeviceArrival(); 
		break; 
	case DBT_DEVICEREMOVECOMPLETE: 
		this->DeviceRemoveComplete(); 
		break; 
	default: 
		break; 
	}; 
	UpdateData(false); 
	return 1; 
} 
BOOL CRadioTestDlg::DeviceArrival(void) 
{ 
	if(this->pRadioCtrl.OpenRadio()==TDTK_SUCCESS) 
	{ 
		this->mFlag.SetIcon(flagIcon[0]); 
		this->PostMessage(RUN_TEST); 
	} 
	return 0; 
} 
 
BOOL CRadioTestDlg::DeviceRemoveComplete(void) 
{ 
	if(this->pRadioCtrl.CloseRadio()==TDTK_SUCCESS) 
		this->mFlag.SetIcon(flagIcon[2]); 
	return 0; 
} 
void CRadioTestDlg::OnBnClickedBtnreadsn() 
{ 
	// TODO: 在此添加控件通知处理程序代码 
	this->pRadioCtrl.OpenRadio(); 
	this->pRadioCtrl.GetSN(m_Sn); 
	UpdateData(FALSE); 
 
} 
 
void CRadioTestDlg::OnBnClickedBtnreadsw() 
{ 
	this->pRadioCtrl.OpenRadio(); 
	this->pRadioCtrl.GetVersion(mSW); 
	UpdateData(FALSE); 
} 
void CRadioTestDlg::OnBnClickedBtn1() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,1); 
} 
 
void CRadioTestDlg::OnBnClickedBtn2() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)2); 
} 
 
void CRadioTestDlg::OnBnClickedBtn3() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)2); 
} 
 
void CRadioTestDlg::OnBnClickedBtn4() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)4); 
} 
 
void CRadioTestDlg::OnBnClickedBtn5() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)5); 
} 
 
void CRadioTestDlg::OnBnClickedBtn6() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)6); 
} 
 
void CRadioTestDlg::OnBnClickedBtn7() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)7); 
} 
 
void CRadioTestDlg::OnBnClickedBtn8() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)8); 
} 
 
void CRadioTestDlg::OnBnClickedBtn9() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)9); 
} 
 
void CRadioTestDlg::OnBnClickedBtn0() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)0); 
} 
 
void CRadioTestDlg::OnBnClickedBtna() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)0x0a); 
} 
 
void CRadioTestDlg::OnBnClickedBtnb() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)0x0b); 
} 
 
void CRadioTestDlg::OnBnClickedBtn11() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)0x11); 
} 
 
void CRadioTestDlg::OnBnClickedBtnb12() 
{ 
	this->workThread->PostThreadMessage(KEY_TEST,(WPARAM)this,(LPARAM)0x12); 
} 
 
void CRadioTestDlg::OnBnClickedBtnsuspend() 
{ 
	this->pRadioCtrl.Suspend(); 
} 
 
void CRadioTestDlg::OnBnClickedBtnnormal() 
{ 
	this->pRadioCtrl.Normal(); 
} 
 
//void CRadioTestDlg::OnBnClickedBtngetimei() 
//{ 
//	this->pRadioCtrl.GetIMEI(m_IMEI); 
//	UpdateData(FALSE); 
//} 
 
void CRadioTestDlg::OnBnClickedBtnkeytest() 
{ 
	SetTimer(10,200,NULL); 
	this->GetDlgItem(IDC_BTNKEYTEST)->EnableWindow(FALSE); 
	this->GetDlgItem(IDC_BTNEND)->EnableWindow(TRUE); 
} 
 
void CRadioTestDlg::OnTimer(UINT nIDEvent) 
{ 
	// TODO: 在此添加消息处理程序代码和/或调用默认值 
	struct tr { 
		BYTE KeyNumber; 
		BYTE KeyState; 
	}; 
	WORD key;	 
	switch(nIDEvent) 
	{ 
	case 10: 
		::EnterCriticalSection(&keyTestCritical); 
		KillTimer(10); 
		this->m_KeyStateDisp=""; 
		UpdateData(FALSE); 
		if(pRadioCtrl.KeyTest(key)!=TDTK_SUCCESS) 
			this->m_Result.SetWindowText("Fail"); 
		else 
			this->m_Result.SetWindowText("Sucess"); 
		tr mtr=*(tr*)(LPVOID)&key; 
		this->m_KeyStateDisp.Format("Key %d is %s",mtr.KeyNumber,mtr.KeyState==1?"Released":"Press"); 
		UpdateData(FALSE); 
		CDialog::OnTimer(nIDEvent); 
		SetTimer(10,200,NULL); 
		::LeaveCriticalSection(&keyTestCritical); 
		break; 
	} 
} 
 
afx_msg LRESULT CRadioTestDlg::OnExecuteCmd(WPARAM wParam, LPARAM lParam) 
{ 
	this->m_Status="Run..."; 
	UpdateData(FALSE); 
	this->currentCount=::GetTickCount(); 
	return afx_msg LRESULT(); 
} 
 
afx_msg LRESULT CRadioTestDlg::OnEndCmd(WPARAM wParam, LPARAM lParam) 
{ 
	this->currentCount=::GetTickCount()-currentCount; 
	this->m_Status.Format("Complete!%dms",currentCount); 
	UpdateData(FALSE);	 
	return afx_msg LRESULT(); 
} 
 
void CRadioTestDlg::OnClose() 
{ 
	// TODO: 在此添加消息处理程序代码和/或调用默认值 
	this->workThread->PostThreadMessage(WM_QUIT,NULL,NULL); 
	WaitForSingleObject(this->workThread->m_hThread,INFINITE); 
	CDialog::OnClose(); 
} 
 
int CRadioTestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
	if (CDialog::OnCreate(lpCreateStruct) == -1) 
		return -1; 
	this->CreateStatusBar(); 
	return 0; 
} 
 
void CRadioTestDlg::OnBnClickedBtnend() 
{ 
	// TODO: 在此添加控件通知处理程序代码 
	::EnterCriticalSection(&keyTestCritical); 
	KillTimer(10); 
	this->GetDlgItem(IDC_BTNKEYTEST)->EnableWindow(TRUE); 
	::LeaveCriticalSection(&keyTestCritical); 
} 
 
LRESULT CRadioTestDlg::OnRunTest(WPARAM wParam, LPARAM lParam) 
{ 
	Sleep(5000); 
	workThread=AfxBeginThread(this->TestThread,this); 
	return 0; 
 
} 
 
UINT CRadioTestDlg::TestThread(LPVOID pParam) 
{ 
	CRadioTestDlg* pwnd=(CRadioTestDlg*)pParam; 
	int status=0; 
	CString m_str; 
	m_str = CString("SENS:CORR:LOSS:INP2 ")+"1.0"; 
	pwnd->CommandMeterX->WriteCommand(pwnd->CommandMeterX->m_gsm,m_str); 
	m_str = CString("SENS:CORR:LOSS:OUTP2 ")+"1.0"; 
	pwnd->CommandMeterX->WriteCommand(pwnd->CommandMeterX->m_gsm,m_str); 
	if(!pwnd->CommandMeterX->CallState(pwnd->CommandMeterX->m_gsm)) 
	{ 
		return false; 
	} 
	pwnd->CommandMeterX->TestRSSI(pwnd->CommandMeterX->m_gsm); 
	//pwnd->m_progress.StepIt(); 
	if(!pwnd->listResult.PrintLine("GSM_M_CHANNEL_RSSI","28","32",pwnd->CommandMeterX->m_pot_data[0]),"") 
	{ 
		return false; 
	}	 
	//pwnd->m_progress.StepIt(); 
	if(!pwnd->CommandMeterX->TestBitErr(pwnd->CommandMeterX->m_gsm)) 
	{ 
		return false; 
	} 
	if(!pwnd->listResult.PrintLine("GSM_M_CHANNEL_BITERR","0","2",pwnd->CommandMeterX->m_pot_data[1]),"") 
	{ 
		return false; 
	} 
	//	pwnd->CommandMeterX->HandOver(); 
	//pwnd->m_progress.StepIt(); 
	if(!pwnd->CommandMeterX->Handover900To1800()) 
	{ 
		pwnd->listResult.PrintLine("GSM to DCS Handover fail","","","-999999"); 
		return false; 
	}	 
	//pwnd->m_progress.StepIt(); 
	pwnd->CommandMeterX->TestRSSI(pwnd->CommandMeterX->m_dcs); 
	if(!pwnd->listResult.PrintLine("DCS_M_CHANNEL_RSSI","28","32",pwnd->CommandMeterX->m_pot_data[0])) 
	{ 
		return false; 
	} 
	//pwnd->m_progress.StepIt(); 
	pwnd->CommandMeterX->TestBitErr(pwnd->CommandMeterX->m_dcs); 
	if(!pwnd->listResult.PrintLine("DCS_M_CHANNEL_BITERR","0","2",pwnd->CommandMeterX->m_pot_data[1])) 
	{ 
		return false; 
	} 
	pwnd->CommandMeterX->EndCall(); 
	return true; 
} 
 
 
 
int CRadioTestDlg::DoTestDCS(int Channel, int Level) 
{ 
	CString channels[3]={"Low","Mid","High"}; 
	CString levels[20]={"Level_0","Level_1","Level_2","Level_3","Level_4","Level_5","Level_6","Level_7","Level_8","Level_9","Level_10","Level_11","Level_12","Level_13","Level_14","Level_15","Level_16","Level_17","Level_18","Level_19",}; 
	CString PowerHighSpec[20]={"30","28","27","25","23","21","19","17","15","13","11","9","7","6","5","4","4","4","4","4"}; 
	CString PowerLowSpec[20]={"28","27","25","23","21","19","17","15","13","11","9","7","5","4","3","2","2","2","2","2"}; 
	int DcsChannels[]={517,662,878}; 
	int DcsLevels[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; 
	int m_dev=CommandMeterX->m_dcs; 
	CString m_command; 
	CString m_result; 
	m_command.Format("PROC:SIGN:CHAN %d",DcsChannels[Channel]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	m_command.Empty(); 
	m_command.Format("proc:sign:ms:pcl %d",DcsLevels[Level]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	////////get power///////// 
	CommandMeterX->WriteCommand(m_dev,"READ:POW:mpr?"); 
	m_result = CommandMeterX->QueryResult(m_dev); 
	CommandMeterX->WriteCommand(m_dev,"ABOR:POW:mpr"); 
	CommandMeterX->PickData(m_result); 
	if(!listResult.PrintLine("DCS_"+channels[Channel]+"_Channel_"+levels[Level]+"_Power",PowerLowSpec[Level],PowerHighSpec[Level], 
		CommandMeterX->m_pot_data[0])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[Channel]+"_Channel_"+levels[Level]+"_FreqError","-90","90", 
		CommandMeterX->m_pot_data[13])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[Channel]+"_Channel_"+levels[Level]+"_PhasError","-20","20", 
		CommandMeterX->m_pot_data[7])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[Channel]+"_Channel_"+levels[Level]+"_RMSError","-5","5", 
		CommandMeterX->m_pot_data[10])) 
	{ 
		return false; 
	} 
	//CommandMeterX->HandOver(); 
	return true; 
} 
 
int CRadioTestDlg::DoTestGSM(int Channel, int Level) 
{ 
	CString channels[3]={"Low","Mid","High"}; 
	CString levels[20]={"Level_0","Level_1","Level_2","Level_3","Level_4","Level_5","Level_6","Level_7","Level_8","Level_9","Level_10","Level_11","Level_12","Level_13","Level_14","Level_15","Level_16","Level_17","Level_18","Level_19",}; 
	CString PowerHighSpec[20]={"32.3","32.3","32.3","32.3","32.3","32.3","31.5","30","28","26","24","22","20","18","16","14","12","11","10","9"}; 
	CString PowerLowSpec[20]={"31.3","31.3","31.3","31.3","31.3","31.3","29.5","28","26","24","22","20","18","16","14","12","10","9","8","7"}; 
	int GsmChannels[]={980,37,119}; 
	int GsmLevels[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; 
	int m_dev=CommandMeterX->m_gsm; 
	CString m_command; 
	CString m_result; 
	m_command.Format("PROC:SIGN:CHAN %d",GsmChannels[Channel]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	m_command.Empty(); 
	m_command.Format("proc:sign:ms:pcl %d",GsmLevels[Level]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	//	if(!CommandMeterX->CallState(m_dev)) 
	//		return false; 
	////////get power///////// 
	CommandMeterX->WriteCommand(m_dev,"READ:POW:mpr?"); 
	m_result = CommandMeterX->QueryResult(m_dev); 
	CommandMeterX->WriteCommand(m_dev,"ABOR:POW:mpr"); 
	CommandMeterX->PickData(m_result); 
	if(!listResult.PrintLine("GSM_"+channels[Channel]+"_Channel_"+levels[Level]+"_Power",PowerLowSpec[Level],PowerHighSpec[Level],CommandMeterX->m_pot_data[0])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[Channel]+"_Channel_"+levels[Level]+"_FreqError","-90","90", 
		CommandMeterX->m_pot_data[13])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[Channel]+"_Channel_"+levels[Level]+"_PhasError","-20","20", 
		CommandMeterX->m_pot_data[7])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[Channel]+"_Channel_"+levels[Level]+"_RMSError","-5","5", 
		CommandMeterX->m_pot_data[10])) 
	{ 
		return false; 
	} 
	return true; 
} 
 
void CRadioTestDlg::OnBnClickedBtnstarttest() 
{ 
	this->OnRunTest(0,0); 
} 
 
afx_msg LRESULT CRadioTestDlg::RadioAlert(WPARAM wParam, LPARAM lParam) 
{ 
	Sleep(2000); 
	this->pRadioCtrl.btnClick(0x12); 
	return afx_msg LRESULT(); 
} 
 
int CRadioTestDlg::DoTestGSMMODORFS(int channel, int level) 
{ 
	/* 
	-4.001001e+001,-3.812766E+001,-3.460535E+001, 
	-3.2256701+001,3.152478E+001,-3.023376E+001, 
	-3.447803E+001,-3.7023335E,-4.040995E+001 
	*/ 
	CString channels[3]={"Low","Mid","High"}; 
	CString levels[20]={"Level_0","Level_1","Level_2","Level_3", 
		"Level_4","Level_5","Level_6","Level_7", 
		"Level_8","Level_9","Level_10","Level_11", 
		"Level_12","Level_13","Level_14","Level_15", 
		"Level_16","Level_17","Level_18","Level_19",}; 
	int GsmChannels[]={980,37,119}; 
	int GsmLevels[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; 
	int m_dev=CommandMeterX->m_gsm; 
	CString m_command; 
	CString m_result; 
	m_command.Format("PROC:SIGN:CHAN %d",GsmChannels[channel]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	m_command.Empty(); 
	m_command.Format("proc:sign:ms:pcl %d",GsmLevels[level]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	////////get power///////// 
	CommandMeterX->WriteCommand(m_dev,"READ:ARR:SPEC:MOD?"); 
	m_result = CommandMeterX->QueryResult(m_dev); 
	CommandMeterX->WriteCommand(m_dev,"ABOR:SPEC:MOD"); 
	CommandMeterX->PickData(m_result); 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_0khz","0","100", 
		CommandMeterX->m_pot_data[11])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+100khz","-100","20", 
		CommandMeterX->m_pot_data[10])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-100khz","-100","20", 
		CommandMeterX->m_pot_data[12])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+200khz","-100","20", 
		CommandMeterX->m_pot_data[9])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-200khz","-100","20", 
		CommandMeterX->m_pot_data[13])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+250khz","-100","20", 
		CommandMeterX->m_pot_data[8])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-250khz","-100","20", 
		CommandMeterX->m_pot_data[14])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+400khz","-100","20", 
		CommandMeterX->m_pot_data[7])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-400khz","-100","20", 
		CommandMeterX->m_pot_data[15])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+600khz","-100","20", 
		CommandMeterX->m_pot_data[6])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-600khz","-100","20", 
		CommandMeterX->m_pot_data[16])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+800khz","-100","20", 
		CommandMeterX->m_pot_data[5])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-800khz","-100","20", 
		CommandMeterX->m_pot_data[17])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1000khz","-100","20", 
		CommandMeterX->m_pot_data[4])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1000khz","-100","20", 
		CommandMeterX->m_pot_data[18])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1200khz","-100","20", 
		CommandMeterX->m_pot_data[3])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1200khz","-100","20", 
		CommandMeterX->m_pot_data[19])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1400khz","-100","20", 
		CommandMeterX->m_pot_data[2])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1400khz","-100","20", 
		CommandMeterX->m_pot_data[20])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1600khz","-100","20", 
		CommandMeterX->m_pot_data[1])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1600khz","-100","20", 
		CommandMeterX->m_pot_data[21])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1800khz","-100","20", 
		CommandMeterX->m_pot_data[0])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1800khz","-100","20", 
		CommandMeterX->m_pot_data[22])) 
	{ 
		return false; 
	} 
	return true; 
} 
 
int CRadioTestDlg::DoTestDCSMODORFS(int channel, int level) 
{ 
	/* 
	-4.001001e+001,-3.812766E+001,-3.460535E+001, 
	-3.2256701+001,3.152478E+001,-3.023376E+001, 
	-3.447803E+001,-3.7023335E,-4.040995E+001 
	*/ 
	CString channels[3]={"Low","Mid","High"}; 
	CString levels[20]={"Level_0","Level_1","Level_2","Level_3", 
		"Level_4","Level_5","Level_6","Level_7", 
		"Level_8","Level_9","Level_10","Level_11", 
		"Level_12","Level_13","Level_14","Level_15", 
		"Level_16","Level_17","Level_18","Level_19",}; 
	int DcsChannels[]={517,662,878}; 
	int DcsLevels[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; 
	int m_dev=CommandMeterX->m_dcs; 
	CString m_command; 
	CString m_result; 
	m_command.Format("PROC:SIGN:CHAN %d",DcsChannels[channel]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	m_command.Empty(); 
	m_command.Format("proc:sign:ms:pcl %d",DcsLevels[level]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	////////get power///////// 
	CommandMeterX->WriteCommand(m_dev,"READ:ARR:SPEC:MOD?"); 
	m_result = CommandMeterX->QueryResult(m_dev); 
	CommandMeterX->WriteCommand(m_dev,"ABOR:SPEC:MOD"); 
	CommandMeterX->PickData(m_result); 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_0khz","0","100", 
		CommandMeterX->m_pot_data[11])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+100khz","-100","20", 
		CommandMeterX->m_pot_data[10])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-100khz","-100","20", 
		CommandMeterX->m_pot_data[12])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+200khz","-100","20", 
		CommandMeterX->m_pot_data[9])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-200khz","-100","20", 
		CommandMeterX->m_pot_data[13])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+250khz","-100","20", 
		CommandMeterX->m_pot_data[8])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-250khz","-100","20", 
		CommandMeterX->m_pot_data[14])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+400khz","-100","20", 
		CommandMeterX->m_pot_data[7])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-400khz","-100","20", 
		CommandMeterX->m_pot_data[15])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+600khz","-100","20", 
		CommandMeterX->m_pot_data[6])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-600khz","-100","20", 
		CommandMeterX->m_pot_data[16])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+800khz","-100","20", 
		CommandMeterX->m_pot_data[5])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-800khz","-100","20", 
		CommandMeterX->m_pot_data[17])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1000khz","-100","20", 
		CommandMeterX->m_pot_data[4])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1000khz","-100","20", 
		CommandMeterX->m_pot_data[18])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1200khz","-100","20", 
		CommandMeterX->m_pot_data[3])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1200khz","-100","20", 
		CommandMeterX->m_pot_data[19])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1400khz","-100","20", 
		CommandMeterX->m_pot_data[2])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1400khz","-100","20", 
		CommandMeterX->m_pot_data[20])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1600khz","-100","20", 
		CommandMeterX->m_pot_data[1])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1600khz","-100","20", 
		CommandMeterX->m_pot_data[21])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_+1800khz","-100","20", 
		CommandMeterX->m_pot_data[0])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_MOD_ORFS_-1800khz","-100","20", 
		CommandMeterX->m_pot_data[22])) 
	{ 
		return false; 
	} 
 
	return true; 
} 
 
int CRadioTestDlg::DoTestGSMTimeMask(int channel, int level) 
{ 
	/* 
	-4.001001e+001,-3.812766E+001,-3.460535E+001, 
	-3.2256701+001,3.152478E+001,-3.023376E+001, 
	-3.447803E+001,-3.7023335E,-4.040995E+001 
	*/ 
	CString channels[3]={"Low","Mid","High"}; 
	CString levels[20]={"Level_0","Level_1","Level_2","Level_3", 
		"Level_4","Level_5","Level_6","Level_7", 
		"Level_8","Level_9","Level_10","Level_11", 
		"Level_12","Level_13","Level_14","Level_15", 
		"Level_16","Level_17","Level_18","Level_19",}; 
	int m_dev=CommandMeterX->m_gsm; 
	CString m_command; 
	CString m_result; 
	//	m_command.Format("PROC:SIGN:CHAN %d",DcsChannels[channel]); 
	//	CommandMeterX->WriteCommand(m_dev,m_command); 
	//	m_command.Empty(); 
	//	m_command.Format("proc:sign:ms:pcl %d",DcsLevels[level]); 
	//	CommandMeterX->WriteCommand(m_dev,m_command); 
	////////get power///////// 
	CommandMeterX->WriteCommand(m_dev,"READ:POW?"); 
	m_result = CommandMeterX->QueryResult(m_dev); 
	//	CommandMeterX->WriteCommand(m_dev,"ABOR:SPEC:MOD"); 
	CommandMeterX->PickData(m_result); 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_TimeMask","MATC","MATC", 
		CommandMeterX->m_pot_data[5])) 
	{ 
		return false; 
	} 
	return true; 
} 
 
int CRadioTestDlg::DoTestDCSTimeMask(int channel, int level) 
{ 
	/* 
	-4.001001e+001,-3.812766E+001,-3.460535E+001, 
	-3.2256701+001,3.152478E+001,-3.023376E+001, 
	-3.447803E+001,-3.7023335E,-4.040995E+001 
	*/ 
	CString channels[3]={"Low","Mid","High"}; 
	CString levels[20]={"Level_0","Level_1","Level_2","Level_3", 
		"Level_4","Level_5","Level_6","Level_7", 
		"Level_8","Level_9","Level_10","Level_11", 
		"Level_12","Level_13","Level_14","Level_15", 
		"Level_16","Level_17","Level_18","Level_19",}; 
	int m_dev=CommandMeterX->m_dcs; 
	CString m_command; 
	CString m_result; 
	//	m_command.Format("PROC:SIGN:CHAN %d",DcsChannels[channel]); 
	//	CommandMeterX->WriteCommand(m_dev,m_command); 
	//	m_command.Empty(); 
	//	m_command.Format("proc:sign:ms:pcl %d",DcsLevels[level]); 
	//	CommandMeterX->WriteCommand(m_dev,m_command); 
	////////get power///////// 
	CommandMeterX->WriteCommand(m_dev,"READ:POW?"); 
	m_result = CommandMeterX->QueryResult(m_dev); 
	//	CommandMeterX->WriteCommand(m_dev,"ABOR:SPEC:MOD"); 
	CommandMeterX->PickData(m_result); 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_TimeMask","MATC","MATC", 
		CommandMeterX->m_pot_data[5])) 
	{ 
		return false; 
	} 
	return true; 
} 
 
int CRadioTestDlg::DoTestDCSSwitORFS(int channel, int level) 
{ 
	/* 
	-4.001001e+001,-3.812766E+001,-3.460535E+001, 
	-3.2256701+001,3.152478E+001,-3.023376E+001, 
	-3.447803E+001,-3.7023335E,-4.040995E+001 
	*/ 
	CString channels[3]={"Low","Mid","High"}; 
	CString levels[20]={"Level_0","Level_1","Level_2","Level_3", 
		"Level_4","Level_5","Level_6","Level_7", 
		"Level_8","Level_9","Level_10","Level_11", 
		"Level_12","Level_13","Level_14","Level_15", 
		"Level_16","Level_17","Level_18","Level_19",}; 
	int DcsChannels[]={517,662,878}; 
	int DcsLevels[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; 
	int m_dev=CommandMeterX->m_dcs; 
	CString m_command; 
	CString m_result; 
	m_command.Format("PROC:SIGN:CHAN %d",DcsChannels[channel]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	m_command.Empty(); 
	m_command.Format("proc:sign:ms:pcl %d",DcsLevels[level]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	////////get power///////// 
	CommandMeterX->WriteCommand(m_dev,"READ:ARR:SPEC:SWIT?"); 
	m_result = CommandMeterX->QueryResult(m_dev); 
	CommandMeterX->WriteCommand(m_dev,"ABOR:SPEC:SWIT"); 
	CommandMeterX->PickData(m_result); 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_0khz","0","100", 
		CommandMeterX->m_pot_data[4])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_+400khz","-100","0", 
		CommandMeterX->m_pot_data[3])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_-400khz","-100","0", 
		CommandMeterX->m_pot_data[5])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_+600khz","-100","0", 
		CommandMeterX->m_pot_data[2])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_-600khz","-100","0", 
		CommandMeterX->m_pot_data[6])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_+1200khz","-100","0", 
		CommandMeterX->m_pot_data[1])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_-1200khz","-100","0", 
		CommandMeterX->m_pot_data[7])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_+1800khz","-100","0", 
		CommandMeterX->m_pot_data[0])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("DCS_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_-1800khz","-100","0", 
		CommandMeterX->m_pot_data[8])) 
	{ 
		return false; 
	} 
	return true; 
} 
 
int CRadioTestDlg::DoTestGSMSwitORFS(int channel, int level) 
{ 
	/* 
	-4.001001e+001,-3.812766E+001,-3.460535E+001, 
	-3.2256701+001,3.152478E+001,-3.023376E+001, 
	-3.447803E+001,-3.7023335E,-4.040995E+001 
	*/ 
	CString channels[3]={"Low","Mid","High"}; 
	CString levels[20]={"Level_0","Level_1","Level_2","Level_3", 
		"Level_4","Level_5","Level_6","Level_7", 
		"Level_8","Level_9","Level_10","Level_11", 
		"Level_12","Level_13","Level_14","Level_15", 
		"Level_16","Level_17","Level_18","Level_19",}; 
	int GsmChannels[]={980,37,119}; 
	int GsmLevels[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; 
	int m_dev=CommandMeterX->m_gsm; 
	CString m_command; 
	CString m_result; 
	m_command.Format("PROC:SIGN:CHAN %d",GsmChannels[channel]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	m_command.Empty(); 
	m_command.Format("proc:sign:ms:pcl %d",GsmLevels[level]); 
	CommandMeterX->WriteCommand(m_dev,m_command); 
	////////get power///////// 
	CommandMeterX->WriteCommand(m_dev,"READ:ARR:SPEC:SWIT?"); 
	m_result = CommandMeterX->QueryResult(m_dev); 
	CommandMeterX->WriteCommand(m_dev,"ABOR:SPEC:SWIT"); 
	CommandMeterX->PickData(m_result); 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_0khz","0","100", 
		CommandMeterX->m_pot_data[4])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_+400khz","-100","0", 
		CommandMeterX->m_pot_data[3])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_-400khz","-100","0", 
		CommandMeterX->m_pot_data[5])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_+600khz","-100","0", 
		CommandMeterX->m_pot_data[2])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_-600khz","-100","0", 
		CommandMeterX->m_pot_data[6])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_+1200khz","-100","0", 
		CommandMeterX->m_pot_data[1])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_-1200khz","-100","0", 
		CommandMeterX->m_pot_data[7])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_+1800khz","-100","0", 
		CommandMeterX->m_pot_data[0])) 
	{ 
		return false; 
	} 
	if(!listResult.PrintLine("GSM_"+channels[channel]+"_Channel_"+levels[level]+"_Swith_ORFS_-1800khz","-100","0", 
		CommandMeterX->m_pot_data[8])) 
	{ 
		return false; 
	} 
	return true; 
} 
 
bool CRadioTestDlg::CreateStatusBar(void) 
{ 
	if (!statusBar.Create(this) || 
		!statusBar.SetIndicators(indicators, 
		sizeof(indicators)/sizeof(UINT))) 
	{ 
		TRACE0("Failed to create status bar\n"); 
		return false; 
	} 
 
	UINT nID, nStyle; 
	int cxWidth; 
 
	statusBar.GetPaneInfo( 0, nID, nStyle, cxWidth); 
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,ID_INDICATOR_CAPS); 
	statusBar.SetPaneInfo( 0, nID, SBPS_STRETCH|SBPS_NORMAL, cxWidth); 
	statusBar.SetPaneText(0,"waiting"); 
	return true; 
}