阅读:1939回复:1
求助:车辆监控 『轨迹回放』功能实现的原理
<P>车辆监控 『轨迹回放』功能实现的原理</P>
|
|
1楼#
发布于:2004-12-08 14:03
<P>1.获取定义时间段内的GPS数据记录(RecordSet)</P>
<P>2.VB下使用时钟控件,VC下定义OnTimer时钟事件</P> <P>3.时钟事件下获取RecordSet当前的GPS信息并RecordSet->MoveNext,直到EOF</P> <P> void CCarTrackBack::OnTimer(UINT nIDEvent) { switch(nIDEvent) { case TRACKBACK_TIMER: CarTrackBack(); break; default: break; }</P> <P>CCarTrackView::OnTimer(nIDEvent); }</P> <P>void CCarTrackBack::CarTrackBack()</P> <P>{</P> <P>if (NULL == rst) { return; }</P> <P>GPSINFO gpsinfo; memset(;gpsinfo, 0, sizeof(gpsinfo)); char szField[64] = {0}; memset(szField, 0, sizeof(szField));</P> <P>CChildFrame *pFrame = (CChildFrame *)GetParentFrame(); ASSERT(NULL != pFrame); CDialogBar *m_wndDialogBar = pFrame->pDialogBar;</P> <P>try{ strcpy(szField, (_bstr_t)rst->Fields->GetItem(_variant_t("TID"))->Value); strcpy(gpsinfo.TID, szField); strcpy(szField, (_bstr_t)rst->Fields->GetItem(_variant_t("latitude"))->Value); gpsinfo.fLatitude = atof(szField); m_wndDialogBar->SetDlgItemText(IDC_LATITUDE, szField);</P> <P> strcpy(szField, (bstr_t)rst->GetFields()->GetItem(_variant_t("longitude"))->Value); gpsinfo.fLongitude = atof(szField); m_wndDialogBar->SetDlgItemText(IDC_LONGITUDE, szField); strcpy(szField, (bstr_t)rst->GetFields()->GetItem(_variant_t("speed"))->Value); gpsinfo.fSpeed = atoi(szField); m_wndDialogBar->SetDlgItemText(IDC_SPEED, szField);</P> <P> strcpy(szField, (bstr_t)rst->GetFields()->GetItem(_variant_t("angle"))->Value); gpsinfo.fDirectionAnge = atof(szField); m_wndDialogBar->SetDlgItemText(IDC_ANGLE, szField); <FONT color=#ff0000><B>UpdateCarRealtimeTrack(;gpsinfo);</B></FONT> iTotalCount++; CProgressCtrl *pCtrl = (CProgressCtrl *)m_wndDialogBar->GetDlgItem(IDC_PROGRESS); pCtrl->SetPos(iTotalCount); pCtrl->UpdateWindow(); <B><FONT color=#ff0000>rst->MoveNext();</FONT></B> } catch(_com_error *e) { MessageBox("获取轨迹数据发生错误" + e->Description()); }</P> <P>if (rst->adoEOF) { KillTimer(TRACKBACK_TIMER); rst->Close(); rst = NULL; CString strShow; strShow.Format("轨迹数据回放完毕,共有 %d 点", iTotalCount); iTotalCount = 0; MessageBox(strShow); }</P> <P>return;</P> <P>}</P> [此贴子已经被作者于2004-12-8 14:13:14编辑过]
|
|