ADS-B&雷达显示终端——多源监视数据仿真平台5.2
来源:互联网 发布:淘宝开店装修模板 编辑:程序博客网 时间:2024/05/01 09:49
相较于上一版本,此版本主要修改内容:
1加入航迹数据记录与回放功能,采用SQLite数据库记录接收到的航迹数据,并支持数据回放。
2支持部分SQLite数据库操作功能,包括数据删除、查询等;
3支持虚拟列表功能;
回放效果:
数据库管理界面:
SQLite是一种开源的嵌入式数据,支持大部分SQL语法,最大可支持2TB数据容量,运行速度不错。SQLite完全开源,其源代码可以直接加入到VS工程中。其使用也十分方便,只需要掌握最基本的数据写入、查找即可。SQLite最大的缺点在于对网络访问、并行访问的支持不全面。因而不建立用于高并发访问场合,建议用于小型单机数据库建设。
在进行数据库查询时,因为记录的航迹数据量十分巨大,软件最大的速度瓶颈不在于数据库的访问和读取,而在于ListControl显示,在写入大量数据时ListControl会出现卡死现象,使用虚拟列表功能,可以在一定的程序上解决这个问题,当然并不能完全解决,在5万条数据以下,显示速度还可以接受,ListControl更新时不会出现长时间等待的情况。
虚拟列表功能是十分成熟的,网络上有现成的开源源代码。下面将源代码贴出来:
- // LabelItem.h: interface for the CLabelItem class.
- //
- //////////////////////////////////////////////////////////////////////
- #if !defined(AFX_LABELITEM_H__AD63D692_F1DC_11D4_9414_00C04F68EB57__INCLUDED_)
- #define AFX_LABELITEM_H__AD63D692_F1DC_11D4_9414_00C04F68EB57__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- class CLabelItem : public CObject
- {
- public:
- CString m_strText[15];
- CLabelItem();
- CLabelItem(const CLabelItem& ci);
- const CLabelItem& operator=(const CLabelItem& stringSrc);
- virtual ~CLabelItem();
- };
- #endif //
- #include "stdafx.h"
- #include "LabelItem.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
- //////////////////////////////////////////////////////////////////////
- // Construction/Destruction
- //////////////////////////////////////////////////////////////////////
- CLabelItem::CLabelItem()
- {
- }
- CLabelItem::CLabelItem(const CLabelItem& ci)
- {
- for(int i=0; i<15; i++)
- m_strText[i] = ci.m_strText[i];
- }
- CLabelItem::~CLabelItem()
- {
- }
- const CLabelItem& CLabelItem::operator=(const CLabelItem &ci)
- {
- for(int i=0; i<15; i++)
- m_strText[i] = ci.m_strText[i];
- return *this;
- }
在VS工程中导入类文件后,还需要在使用ListControl类中加入一个队列CArray <CLabelItem, CLabelItem >m_arLabels;。
同时还需要给ListControl控件加入 ON_NOTIFY(LVN_GETDISPINFO, IDC_LIST_DATA, GetDispInfo)消息,及消息响应函数
- void CDBmaintain::GetDispInfo(NMHDR* pNMHDR,LRESULT* pResult)
- {
- LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
- LV_ITEM* pItem= &(pDispInfo)->item;
- CLabelItem rLabel = m_arLabels.ElementAt(pItem->iItem);
- if (pItem->mask & LVIF_TEXT)
- {
- lstrcpy(pItem->pszText,
- rLabel.m_strText[pItem->iSubItem]);
- }
- *pResult = 0;
- }
- CLabelItem Label;
- //查询到总共记录个数
- for(int i=0; i<nRow; i++)
- {
- for(int j=0; j<nColum; j++)
- {
- Label.m_strText[j] = _T(“test”);
- }
- m_arLabels.SetAtGrow(i, Label);
0 0
- ADS-B&雷达显示终端——多源监视数据仿真平台5.2
- ADS-B 雷达 显示终端 5.3
- ADS-B & 雷达显示终端 5.4
- ADS-B & 雷达显示终端5.5
- ADS-B雷达显示终端 5.6
- ADS-B 雷达 显示终端5.8
- ADS-B&雷达显示终端6.1
- ADS-B&雷达显示终端6.2
- ADS-B及雷达显示终端7.1
- ADS-B及雷达显示终端7.2
- ADS-B显示终端5.7
- ADS-B显示终端5.9
- ADS-B显示终端6.0
- ADS-B显示终端6.3
- ADS-B显示终端6.4
- ADS-B显示终端6.5
- ADS-B显示终端6.6
- ADS-B显示终端6.7
- C++实现7种基本排序
- 说说字符集和编码
- 将以何种造型亮相红毯,引人期待。
- warning LNK4042: 对象被多次指定;已忽略多余的指定
- struts2配置文件详解
- ADS-B&雷达显示终端——多源监视数据仿真平台5.2
- BNUOJ 34988 Happy Reversal
- LINK : warning LNK4098: 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
- Spine入门 之 认识界面
- MFC小程序—————02 不规则窗口小应用程序
- 在vc中使用xtremetoolkit界面库-----安装及环境配置
- 关于office 2013的使用,在打开word文件的时候,需要进入安全模式才能启动WORD的解决办法
- 用VC进行COM编程所必须掌握的理论知识
- HTML页面加载完后,根据内容调整<textarea>元素的高度