📄 statusselect.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 + -