⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statusselect.cpp

📁 广宇GPS系统
💻 CPP
字号:
// StatusSelect.cpp : implementation file
//

#include "stdafx.h"
#include "GpsTest.h"
#include "StatusSelect.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CStatusSelect dialog

static char Char2Hex(char c)
{
	if(c>='0' && c<='9')
        c -= '0';
    else if(c>='A' && c<='F')
        c -= ('A' - 0x0a);
    else if(c>='a' && c<='f')
        c -= ('a' - 0x0a);
	
    return c;
}

CStatusSelect::CStatusSelect(CWnd* pParent /*=NULL*/)
	: CXTResizeDialog(CStatusSelect::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStatusSelect)
	//}}AFX_DATA_INIT
	m_butOk.SetXButtonStyle(BS_XT_SEMIFLAT);
	m_butCancle.SetXButtonStyle(BS_XT_SEMIFLAT);
}


void CStatusSelect::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStatusSelect)
	DDX_Control(pDX, IDC_LIST_STATUS6, m_chkList6);
	DDX_Control(pDX, IDC_LIST_STATUS5, m_chkList5);
	DDX_Control(pDX, IDC_LIST_STATUS4, m_chkList4);
	DDX_Control(pDX, IDC_LIST_STATUS3, m_chkList3);
	DDX_Control(pDX, IDC_LIST_STATUS2, m_chkList2);
	DDX_Control(pDX, IDC_LIST_STATUS1, m_chkList1);
	DDX_Control(pDX, IDOK, m_butOk);
	DDX_Control(pDX, IDCANCEL, m_butCancle);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStatusSelect, CXTResizeDialog)
	//{{AFX_MSG_MAP(CStatusSelect)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStatusSelect message handlers

BOOL CStatusSelect::OnInitDialog() 
{
	CXTResizeDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	InitCheckListBox();
	AnalyseSmsStatus();
	
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CStatusSelect::InitCheckListBox()
{
	m_chkList1.AddString(_T("车辆设防"));
	m_chkList1.AddString(_T("车辆断油断电"));
	m_chkList1.AddString(_T("后备电池供电"));
	m_chkList1.AddString(_T("后备电池电压低"));
	m_chkList1.AddString(_T("防盗器故障"));
	m_chkList1.AddString(_T("手柄故障"));
	m_chkList1.AddString(_T("GPS故障"));
	m_chkList1.AddString(_T("空"));
//	m_chkList1.SetCheck(0, FALSE);
//	m_chkList1.SetCheck(3, TRUE);
	
	
	m_chkList2.AddString(_T("车门开"));
	m_chkList2.AddString(_T("ACC关"));
	m_chkList2.AddString(_T("发动机"));
	m_chkList2.AddString(_T("GPS开路"));
	m_chkList2.AddString(_T("GPS短路"));
	m_chkList2.AddString(_T("空"));
	m_chkList2.AddString(_T("空"));
	m_chkList2.AddString(_T("空"));
// 	m_chkList2.SetCheck(1, TRUE);

	m_chkList3.AddString(_T("空"));
	m_chkList3.AddString(_T("空"));
	m_chkList3.AddString(_T("空"));
	m_chkList3.AddString(_T("空"));
	m_chkList3.AddString(_T("空"));
	m_chkList3.AddString(_T("空"));
	m_chkList3.AddString(_T("空"));
	m_chkList3.AddString(_T("空"));

	m_chkList4.AddString(_T("定位监控"));
	m_chkList4.AddString(_T("自动定位监控"));
	m_chkList4.AddString(_T("车速监控"));
	m_chkList4.AddString(_T("越界监控"));
	m_chkList4.AddString(_T("空"));
	m_chkList4.AddString(_T("空"));
	m_chkList4.AddString(_T("空"));
	m_chkList4.AddString(_T("空"));
// 	m_chkList4.SetCheck(1, TRUE);

	m_chkList5.AddString(_T("非法点火"));
	m_chkList5.AddString(_T("车门打开"));
	m_chkList5.AddString(_T("电瓶拆除报警"));
	m_chkList5.AddString(_T("受振动"));
	m_chkList5.AddString(_T("自定义报警"));
	m_chkList5.AddString(_T("空"));
	m_chkList5.AddString(_T("空"));
	m_chkList5.AddString(_T("空"));
// 	m_chkList5.SetCheck(1, TRUE);

	m_chkList6.AddString(_T("GPS接收机报警"));
	m_chkList6.AddString(_T("超速报警"));
	m_chkList6.AddString(_T("三次密码错误报警"));
	m_chkList6.AddString(_T("禁止驶入越界报警"));
	m_chkList6.AddString(_T("禁止驶出越界报警"));
	m_chkList6.AddString(_T("空"));
	m_chkList6.AddString(_T("空"));
	m_chkList6.AddString(_T("空"));
}

void CStatusSelect::OnOK() 
{
	// TODO: Add extra validation here
	UCHAR nStatus[6];
	UCHAR nTemp=1;
	int nCount = 8;  //每个listbox中选项数目为8
	
	memset(nStatus, 0, 6);
	for (int i=0; i<nCount; i++)
	{
		if (m_chkList1.GetCheck(i) == 1)
		{
			nStatus[0] |= (nTemp << i);
		}

		if (m_chkList2.GetCheck(i) == 1)
		{
			nStatus[1] |= (nTemp << i);
		}

		if (m_chkList3.GetCheck(i) == 1)
		{
			nStatus[2] |= (nTemp << i);
		}

		if (m_chkList4.GetCheck(i) == 1)
		{
			nStatus[3] |= (nTemp << i);
		}

		if (m_chkList5.GetCheck(i) == 1)
		{
			nStatus[4] |= (nTemp << i);
		}

		if (m_chkList6.GetCheck(i) == 1)
		{
			nStatus[5] |= (nTemp << i);
		}
	}

	m_strSmsStatus.Format("%.2x%.2x%.2x%.2x%.2x%.2x", nStatus[0], nStatus[1], nStatus[2], 
			nStatus[3], nStatus[4], nStatus[5]);
	
	CXTResizeDialog::OnOK();
}

void CStatusSelect::AnalyseSmsStatus()
{
	CString str;
	UCHAR   ch[6];
	int i,k;
	k = 0;
	UCHAR chTemp;

	memset(ch, 0, 6);
	for (i=0; i<11; i++)
	{
		str = m_strSmsStatus.Mid(i,2);
		ch[k++] = StrtoHex(str);
		i++;
	}

	chTemp = 1;
	for (i=0; i<8; i++)
	{
		m_chkList1.SetCheck(i, ((ch[0] & (chTemp << i)) != 0));
		m_chkList2.SetCheck(i, ((ch[1] & (chTemp << i)) != 0));
		m_chkList3.SetCheck(i, ((ch[2] & (chTemp << i)) != 0));
		m_chkList4.SetCheck(i, ((ch[3] & (chTemp << i)) != 0));
		m_chkList5.SetCheck(i, ((ch[4] & (chTemp << i)) != 0));
		m_chkList6.SetCheck(i, ((ch[5] & (chTemp << i)) != 0));
	}
}

int CStatusSelect::StrtoHex(CString str)
{
	int n;
	char cTemp[100], chTemp;
	
	n = 0;
	ZeroMemory(cTemp,sizeof(cTemp));
	sprintf(cTemp, "%s", str);
	for (UINT i=0; i < strlen(cTemp); i++)
	{
		chTemp = Char2Hex(cTemp[i]);
		n = n*16 + chTemp;
	}

	return n;
}



















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -