📄 测试程序dlg.cpp
字号:
// 测试程序Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "测试程序.h"
#include "测试程序Dlg.h"
#include "GPRSstruct.h"
#include "Interval.h"
#include "LightState.h"
#include "Message.h"
#include "UpdateMessage.h"
#include "IpAddress.h"
#include "UpdateID.h"
#include "ElecCrawl.h"
#include "PhoneNumber.h"
#include "SuperSpeed.h"
#include "RunWay.h"
#include "AutoReport.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyDlg dialog
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyDlg)
m_ID = _T("13900000000");
m_ListenNumber = _T("13690000000");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyDlg)
DDX_Control(pDX, IDC_LIST, m_List);
DDX_Control(pDX, IDC_CALLING, m_Calling);
DDX_Control(pDX, IDC_GPRSCONTROLCTRL1, m_active);
DDX_Text(pDX, IDC_ID, m_ID);
DDV_MaxChars(pDX, m_ID, 11);
DDX_Text(pDX, IDC_LISTEN_NUMBER, m_ListenNumber);
DDV_MaxChars(pDX, m_ListenNumber, 12);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
//{{AFX_MSG_MAP(CMyDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_Inital, OnInital)
ON_BN_CLICKED(IDC_CALLING, OnCalling)
ON_BN_CLICKED(IDC_LISTEN, OnListen)
ON_BN_CLICKED(IDC_INTERVAL_MAXNETCHECK, OnIntervalMaxnetcheck)
ON_BN_CLICKED(IDC_LIGHTE_STATE, OnLighteState)
ON_BN_CLICKED(IDC_MESSAGE, OnMessage)
ON_BN_CLICKED(IDC_UPDATE_MESSAGE, OnUpdateMessage)
ON_BN_CLICKED(IDC_SET_IP, OnSetIp)
ON_BN_CLICKED(IDC_SET_ID, OnSetId)
ON_BN_CLICKED(IDC_ELEC_CRAWL, OnElecCrawl)
ON_BN_CLICKED(IDC_PHONENUMBER, OnPhonenumber)
ON_BN_CLICKED(IDC_SUPER_SPEED, OnSuperSpeed)
ON_BN_CLICKED(IDC_RUN_WAY, OnRunWay)
ON_BN_CLICKED(IDC_AUTO_REPORT, OnAutoReport)
ON_BN_CLICKED(IDC_VOICE_REPORT, OnVoiceReport)
ON_BN_CLICKED(IDC_CONFIRM, OnConfirm)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyDlg message handlers
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// CBitmap bm;
// bm.LoadBitmap(IDB_BITMAP1);
// m_Calling.SetBitmap(HBITMAP(bm));
// m_Calling.Invalidate();
// IDM_ABOUTBOX must be in the system command range.
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);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
sizes.cx = 0;
sizes.cy = 10;
m_List.InsertColumn(0,"车台上传数据",LVCFMT_LEFT,1000);
ViewCount = 0;
return TRUE; // return TRUE unless you set the focus to a control
}
void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CMyDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
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;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMyDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMyDlg::OnInital()
{
m_active.Initial(5000);
}
//点名
void CMyDlg::OnCalling()
{
UpdateData(TRUE);
CString VID = m_ID;
CALLING mydata;
VID.Delete(0,1);
mydata.vehicle_ID = atoi(VID);
// TRANSE_TO_VARIANT((LPCALLING)&mydata);
BOOL result = m_active.Calling((VARIANT*)&mydata);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//要求车台执行监听动作
void CMyDlg::OnListen()
{
UpdateData(TRUE);
REQUESTMONITOR Monitor;
memset(&Monitor,0,sizeof(Monitor));
CString tempID = m_ID;
CString phoneNumber = m_ListenNumber;
tempID.Delete(0,1);
Monitor.vehicle_ID = atoi(tempID);
memcpy(Monitor.monitornum,phoneNumber,phoneNumber.GetLength());
// TRANSE_TO_VARIANT((LPREQUESTMONITOR)&Monitor);
BOOL result = m_active.RequestMonitor((VARIANT*)&Monitor);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//设置定位数据上传时间间隔和网络测试包最大发送次数
void CMyDlg::OnIntervalMaxnetcheck()
{
UpdateData(TRUE);
CInterval dlg;
if (IDOK != dlg.DoModal())
{
return;
}
ORIENTUPINTERVAL IntervalAMax;
BYTE Interval = 0;
BYTE RedialNum = 0;
BYTE RedialWait = 0;
BYTE TestMax = 0;
DWORD CarID = 0;
CString tempID = m_ID;
tempID.Delete(0,1);
//各项参数的值
Interval = dlg.m_Interval;
RedialNum = dlg.m_RedialNum;
RedialWait = dlg.m_RedialTime;
TestMax = dlg.m_NetCheckTime;
CarID = atoi(tempID);
IntervalAMax.interval = Interval;
IntervalAMax.redialnum = RedialNum;
IntervalAMax.redialwait = RedialWait;
IntervalAMax.testmax = TestMax;
IntervalAMax.vehicle_ID = CarID;
// TRANSE_TO_VARIANT((LPORIENTUPINTERVAL)&IntervalAMax);
BOOL result = m_active.SetOrientUploadInterval((VARIANT*)&IntervalAMax);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//设置指示灯状态
void CMyDlg::OnLighteState()
{
UpdateData(TRUE);
CLightState dlg;
if (IDOK != dlg.DoModal())
{
return;
}
INDICATELIGHTSTATUS LightState;
CString tempID = m_ID;
tempID.Delete(0,1);
BYTE State = dlg.m_LightState;
DWORD CarID = atoi(tempID);
LightState.status = State;
LightState.vehicle_ID = CarID;
// TRANSE_TO_VARIANT((LPINDICATELIGHTSTATUS)&LightState);
BOOL result = m_active.SetIndicatorLightStatus((VARIANT*)&LightState);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//下发短消息
void CMyDlg::OnMessage()
{
UpdateData(TRUE);
CMessage dlg;
if (IDOK != dlg.DoModal())
{
return;
}
DOWNSMESSAGE SMMessage;
CString Message = "";
BYTE MessLen = 0;
DWORD CarID = 0;
CString tempID = m_ID;
tempID.Delete(0,1);
Message = dlg.m_Message;
MessLen = Message.GetLength();
CarID = atoi(tempID);
SMMessage.vehicle_ID = CarID;
SMMessage.len = MessLen;
memset(SMMessage.message,0,100);
memcpy(SMMessage.message,Message,MessLen);
// TRANSE_TO_VARIANT((LPDOWNSMESSAGE)&SMMessage);
BOOL result = m_active.DownShortMessage((VARIANT*)&SMMessage);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//修改固定短消息
void CMyDlg::OnUpdateMessage()
{
UpdateData(TRUE);
CUpdateMessage dlg;
if (IDOK != dlg.DoModal())
{
return;
}
REVISEFIXEDSMESSAGE UpdateMessge;
memset(&UpdateMessge,0,sizeof(UpdateMessge));
DWORD vehicle_ID = 0; //车台ID号码
BYTE groupnum = 0; //组号
bool IfUpdate[5] = {FALSE};
CString MessageTobeUpdate[5] = {""};
CString tempID = m_ID;
tempID.Delete(0,1);
//给各内容赋值
vehicle_ID = atoi(tempID);
groupnum = dlg.m_GroupNumber;
for (int i=0; i<5; i++)
{
IfUpdate[i] = TRUE;
MessageTobeUpdate[i] = dlg.m_Message[i];
}
//给UpdateMessage赋值
UpdateMessge.groupnum = groupnum;
UpdateMessge.vehicle_ID = vehicle_ID;
for (i=0; i<5; i++)
{
BYTE LengthofMess = MessageTobeUpdate[i].GetLength();
UpdateMessge.shortmessagegroup[i].ifrevised = IfUpdate[i];
memcpy(UpdateMessge.shortmessagegroup[i].content, \
MessageTobeUpdate[i],LengthofMess);
UpdateMessge.shortmessagegroup[i].len = LengthofMess;
}//for
// TRANSE_TO_VARIANT((LPREVISEFIXEDSMESSAGE)&UpdateMessge);
BOOL result = m_active.ReviseFixedShortMessage((VARIANT*)&UpdateMessge);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//设置IP地址
void CMyDlg::OnSetIp()
{
UpdateData(TRUE);
CIpAddress dlg;
if (IDOK != dlg.DoModal())
{
return;
}
IPADDRESS IP;
memset(&IP,0,sizeof(IP));
CString tempID = m_ID;
tempID.Delete(0,1);
DWORD CarID = atoi(tempID);
DWORD NewIP = 0;
NewIP = dlg.m_IpAddress;
IP.vehicle_ID = CarID;
IP.ipaddress = NewIP;
// TRANSE_TO_VARIANT((LPIPADDRESS)&IP);
BOOL result = m_active.SetIPAddress((VARIANT*)&IP);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//设置车台ID
void CMyDlg::OnSetId()
{
UpdateData(TRUE);
CUpdateID dlg;
if (IDOK != dlg.DoModal())
{
return;
}
VEHICLEID SetID;
memset(&SetID,0,sizeof(SetID));
CString tempID = m_ID; //当前车台的ID
CString stringNewID = dlg.m_ID; //修改后的ID
tempID.Delete(0,1);
stringNewID.Delete(0,1);
DWORD newID = atoi(stringNewID);
DWORD oldID = atoi(tempID);
SetID.newvehicle_ID = newID;
SetID.vehicle_ID = oldID;
// TRANSE_TO_VARIANT((LPVEHICLEID)&SetID);
BOOL result = m_active.SetVehicleID((VARIANT*)&SetID);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//中心向车台下发电子围栏位置数据
void CMyDlg::OnElecCrawl()
{
UpdateData(TRUE);
CElecCrawl dlg;
if (IDOK != dlg.DoModal())
{
return;
}
DOWNRAILPOSITION RailPosition;
CString tempID = m_ID;
tempID.Delete(0,1);
DWORD AlarmStatus = 0;
for ( int i=0; i<15; i++)
{
AlarmStatus += dlg.AlarmType[i];
AlarmStatus <<= 2;
}
RailPosition.vehicle_ID = atoi(tempID); //车台ID
RailPosition.railnum = dlg.m_CrawlNuber; //围栏个数
RailPosition.frameno = dlg.m_FrameNumber; //帧号
RailPosition.busno = 2; //公交线路号
RailPosition.alarmstatus = AlarmStatus; //报警状态
float tempData = 0.0;
for (i=0; i<15; i++)
{
RailPosition.llatitude[i] = (DWORD)(dlg.LULatitude[i]*3600000);
RailPosition.llongitude[i] = (DWORD)(dlg.LULongitude[i]*3600000);
RailPosition.rlatitude[i] = (DWORD)(dlg.RDLatitude[i]*3600000);
RailPosition.rlongitude[i] = (DWORD)(dlg.RDLongitude[i]*3600000);
}
// TRANSE_TO_VARIANT((LPDOWNSMESSAGE)&RailPosition);
BOOL result = m_active. DownloadRailPosition((VARIANT*)&RailPosition);
// DELETE_VARIANT;
UpdateData(FALSE);
}
//设置允许的电话号码
void CMyDlg::OnPhonenumber()
{
UpdateData(TRUE);
CPhoneNumber dlg;
if (IDOK != dlg.DoModal())
{
return;
}
PERMITPHONENUMBER PermitNumber;
memset(&PermitNumber,0,sizeof(PermitNumber));
DWORD vehicle_ID = 0; //车台ID号码
PHONENUMBER phonenum[15] = {0}; //电话号码
BYTE num = 0; //电话号码个数
BYTE restrictstatus[2] = {0}; //通话限制状态
BYTE groupnum = 0; //组号
CString PhoneNumber[15] = {""}; //电话号码
CString tempID = m_ID; //车台ID
tempID.Delete(0,1);
num = dlg.m_NumOfPhoneNumber;
groupnum = dlg.m_GroupNumber;
restrictstatus[0] = dlg.Limitation[0];
restrictstatus[1] = dlg.Limitation[1];
PhoneNumber[0] = dlg.m_PhoneNumber1;
PhoneNumber[1] = dlg.m_PhoneNumber2;
PhoneNumber[2] = dlg.m_PhoneNumber3;
PhoneNumber[3] = dlg.m_PhoneNumber4;
PhoneNumber[4] = dlg.m_PhoneNumber5;
PhoneNumber[5] = dlg.m_PhoneNumber6;
PhoneNumber[6] = dlg.m_PhoneNumber7;
PhoneNumber[7] = dlg.m_PhoneNumber8;
PhoneNumber[8] = dlg.m_PhoneNumber9;
PhoneNumber[9] = dlg.m_PhoneNumber10;
PhoneNumber[10] = dlg.m_PhoneNumber11;
PhoneNumber[11] = dlg.m_PhoneNumber12;
PhoneNumber[12] = dlg.m_PhoneNumber13;
PhoneNumber[13] = dlg.m_PhoneNumber14;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -