📄 mttestdlg.cpp
字号:
pRs->Open(_bstr_t(strSQL), _variant_t((IDispatch *)m_pConn,true), adOpenStatic,
adLockOptimistic, adCmdText);
if(pRs->BOF && pRs->adoEOF)
{
MessageBox("没有记录!");
return;
}
pRs->MoveFirst();
CString strGps_time, strGps_longitude, strGps_latitude;
CString strGps_direction, strGps_speed, strAlarm_info;
//将查询结果显示到位置信息列表中
while(!pRs->adoEOF)
{
strSID = pRs->GetCollect("SID").bstrVal;
strGps_longitude.Format("%f", pRs->GetCollect("gps_longitude").dblVal);
strGps_latitude.Format("%f", pRs->GetCollect("gps_latitude").dblVal);
strGps_speed.Format("%f", pRs->GetCollect("gps_speed").dblVal);
strGps_direction.Format("%f", pRs->GetCollect("gps_direction").dblVal);
VARIANT vtTime;
pRs->get_Collect(_variant_t("gps_time"), &vtTime);
COleDateTime ttt;
ttt = vtTime;
strGps_time = ttt.Format(_T("%Y-%m-%d %H:%M:%S"));
strAlarm_info.Format("%d", pRs->GetCollect("alarm_info").lVal);
m_ctrlPosList.InsertItem(0, strSID);
m_ctrlPosList.SetItemText(0, 1, strGps_longitude);
m_ctrlPosList.SetItemText(0, 2, strGps_latitude);
m_ctrlPosList.SetItemText(0, 3, strGps_speed);
m_ctrlPosList.SetItemText(0, 4, strGps_direction);
m_ctrlPosList.SetItemText(0, 5, strGps_time);
m_ctrlPosList.SetItemText(0, 6, strAlarm_info);
pRs->MoveNext();
}
}
//合成登录请求数据包
CString CMTTestDlg::GetLogonXML()
{
CString strXML;
strXML = "<?xml version=\"1.0\" encoding=\"UTF-16\" ?>";
strXML += "<IISPRSucMsg Version=\"1.0\">";
strXML += "<LOGIN_ASK_INFO Msg_id=\"101\">";
CString strSeq;
strSeq.Format("000000%d", m_nSeq++);
strSeq = strSeq.Right(6);
strSeq = m_strUserID + strSeq;
strXML += "<Msg_seq>" + strSeq + "</Msg_seq>";
strXML += "<Service_id>101</Service_id>";
strXML += "<User_id>" + m_strUserID + "</User_id>";
strXML += "<User_pwd>" + m_strPWD + "</User_pwd>";
strXML += "</LOGIN_ASK_INFO>";
strXML += "</IISPRSucMsg>";
return strXML;
}
//合成心跳数据包
CString CMTTestDlg::GetBeatXML()
{
CString strXML;
strXML = "<?xml version=\"1.0\" encoding=\"UTF-16\" ?>";
strXML += "<IISPRSucMsg Version=\"1.0\">";
strXML += "<BEAT_ASK_INFO Msg_id=\"103\">";
CString strSeq;
strSeq.Format("000000%d", m_nSeq++);
strSeq = strSeq.Right(6);
strSeq = m_strUserID + strSeq;
strXML += "<Msg_seq>" + strSeq + "</Msg_seq>";
strXML += "<Service_id>103</Service_id>";
strXML += "</BEAT_ASK_INFO>";
strXML += "</IISPRSucMsg>";
return strXML;
}
//合成数据同步请求数据包
CString CMTTestDlg::GetDataXML()
{
CString strXML;
strXML = "<?xml version=\"1.0\" encoding=\"UTF-16\" ?>";
strXML += "<IISPRSucMsg Version=\"1.0\">";
strXML += "<DATA_ASK_INFO Msg_id=\"201\">";
CString strSeq;
strSeq.Format("000000%d", m_nSeq++);
strSeq = strSeq.Right(6);
strSeq = m_strUserID + strSeq;
strXML += "<Msg_seq>" + strSeq + "</Msg_seq>";
strXML += "<Service_id>201</Service_id>";
strXML += "</DATA_ASK_INFO>";
strXML += "</IISPRSucMsg>";
return strXML;
}
//合成点名指令数据包
CString CMTTestDlg::GetCallXML(CString strSID, CString strVTType)
{
CString strXML;
strXML = "<?xml version=\"1.0\" encoding=\"UTF-16\" ?>";
strXML += "<IISPRSucMsg Version=\"1.0\">";
strXML += "<CEN_CMD_INFO Msg_id=\"401\">";
CString strSeq;
strSeq.Format("000000%d", m_nSeq++);
strSeq = strSeq.Right(6);
strSeq = m_strUserID + strSeq;
strXML += "<Msg_seq>" + strSeq + "</Msg_seq>";
strXML += "<Service_id>4001</Service_id>";
strXML += "<Suc_flag>1</Suc_flag>";
strXML += "<Cmd_rep>1</Cmd_rep>";
strXML += "<SID>" + strSID + "</SID>";
// strXML += "<Cmd_name>位置查询</Cmd_name>";
// strXML += "<Cmd_param></Cmd_param>";
strXML += "<VT_type>" + strVTType + "</VT_type>";
strXML += "</CEN_CMD_INFO>";
strXML += "</IISPRSucMsg>";
return strXML;
}
//时钟处理函数
void CMTTestDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == 1)
{
if(m_bLogon == TRUE)
{
CString strXML;
strXML = GetBeatXML();
//每隔指定的时间自动发送心跳数据包
m_LinkSocket.Send(strXML.LockBuffer(), strXML.GetLength());
}
}
CDialog::OnTimer(nIDEvent);
}
//对返回的同步数据的处理
void CMTTestDlg::RecvSynDataReply(CString strRecv)
{
if(strRecv == "")
{
return;
}
m_ctrlCarTree.DeleteAllItems();
m_arrSID.RemoveAll();
m_arrVTType.RemoveAll();
int nPos;
CString strVehicle;
CString VEHICLE;
VEHICLE = "VEHICLE";
nPos = getXMLTagValue(strRecv, VEHICLE, strVehicle);
while(nPos>0)
{
AddVehicle(strVehicle);
strRecv = strRecv.Mid(nPos);
nPos = getXMLTagValue(strRecv, VEHICLE, strVehicle);
}
}
//向树控件中增加一条车辆信息
void CMTTestDlg::AddVehicle(CString strVehicle)
{
if(strVehicle == "")
{
return;
}
CString strSID, strCar_num, strPh_num, strVT_type;
getXMLTagValue(strVehicle, "SID", strSID);
getXMLTagValue(strVehicle, "Car_num", strCar_num);
getXMLTagValue(strVehicle, "Ph_num", strPh_num);
getXMLTagValue(strVehicle, "VT_type", strVT_type);
HTREEITEM th = m_ctrlCarTree.InsertItem(strSID);
m_arrSID.Add(strSID);
m_arrVTType.Add(strVT_type);
m_ctrlCarTree.InsertItem(strCar_num, th);
m_ctrlCarTree.InsertItem(strPh_num, th);
m_ctrlCarTree.InsertItem(strVT_type, th);
return;
}
//获得选中车辆的SID和VTType
BOOL CMTTestDlg::GetSelVehicle(CString &strSID, CString &strVTType)
{
CString str;
HTREEITEM th, thp;
th = m_ctrlCarTree.GetSelectedItem();
if(th == NULL)
{
return FALSE;
}
thp = m_ctrlCarTree.GetParentItem(th);
if(thp != NULL)
{
th = thp;
}
strSID = m_ctrlCarTree.GetItemText(th);
int nSize;
nSize = m_arrSID.GetSize();
for(int i=0; i<nSize; i++)
{
if(m_arrSID[i] == strSID)
{
strVTType = m_arrVTType[i];
break;
}
}
if(i >= nSize)
{
return FALSE;
}
return TRUE;
}
//对接收到的车辆位置信息的处理
void CMTTestDlg::RecvGpsData(CString strRecv)
{
CString strSID, strGps_time, strGps_longitude, strGps_latitude;
CString strGps_direction, strGps_speed, strAlarm_info, strMsg_seq;
getXMLTagValue(strRecv, "SID", strSID);
getXMLTagValue(strRecv, "Gps_time", strGps_time);
getXMLTagValue(strRecv, "Gps_longitude", strGps_longitude);
getXMLTagValue(strRecv, "Gps_latitude", strGps_latitude);
getXMLTagValue(strRecv, "Gps_direction", strGps_direction);
getXMLTagValue(strRecv, "Gps_speed", strGps_speed);
getXMLTagValue(strRecv, "Alarm_info", strAlarm_info);
getXMLTagValue(strRecv, "Msg_seq", strMsg_seq);
//显示数据
m_ctrlPosList.InsertItem(0, strSID);
m_ctrlPosList.SetItemText(0, 1, strGps_longitude);
m_ctrlPosList.SetItemText(0, 2, strGps_latitude);
m_ctrlPosList.SetItemText(0, 3, strGps_speed);
m_ctrlPosList.SetItemText(0, 4, strGps_direction);
m_ctrlPosList.SetItemText(0, 5, strGps_time);
m_ctrlPosList.SetItemText(0, 6, strAlarm_info);
//保存数据
_RecordsetPtr pRs("ADODB.Recordset");
pRs->Open("SELECT * FROM history_gdata", _variant_t((IDispatch *)m_pConn,true), adOpenDynamic,
adLockOptimistic, adCmdText);
pRs->AddNew();
pRs->Fields->Item["SID"]->Value = _bstr_t(strSID);
pRs->Fields->Item["msg_seq"]->Value = _bstr_t(strMsg_seq);
pRs->Fields->Item["gps_longitude"]->Value = atof(strGps_longitude);
pRs->Fields->Item["gps_latitude"]->Value = atof(strGps_latitude);
pRs->Fields->Item["gps_speed"]->Value = atof(strGps_speed);
pRs->Fields->Item["gps_direction"]->Value = atof(strGps_direction);
pRs->Fields->Item["gps_time"]->Value = _bstr_t(strGps_time);
pRs->Fields->Item["alarm_info"]->Value = atol(strAlarm_info);
pRs->Update();
pRs->Close();
return;
}
//清除位置列表中的内容
void CMTTestDlg::OnClear()
{
// TODO: Add your control notification handler code here
m_ctrlPosList.DeleteAllItems();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -