计算机控制工程大型实验位置监控系统.docx
- 文档编号:23779396
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:40
- 大小:1.53MB
计算机控制工程大型实验位置监控系统.docx
《计算机控制工程大型实验位置监控系统.docx》由会员分享,可在线阅读,更多相关《计算机控制工程大型实验位置监控系统.docx(40页珍藏版)》请在冰豆网上搜索。
计算机控制工程大型实验位置监控系统
实验一位置监控系统
一.实验目的
通过本实验了解GPS位置监控的工作原理,了解GIS相关知识,掌握并应用数据库以及WEB相关知识,熟练运用VC++串口通信。
二.实验内容
1.开发虚拟GPS接受/发送机;
2.在数据库中存储位置信息;
3.设计串口程序接受并解析GPS信息;
4.在监控界面显示GPS信息的位置。
三.实验环境
1.MicrosoftVisualC++6.0;
2.VSPD6.9虚拟串口软件;
3.MySQL或者SqlServer数据库。
4.Eclipse+JDK+Tomcat;
四.系统原理框图
五.实验步骤
1.安装mysql数据库;
MySQL是一个关系型数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性,在WEB应用方面MySQL是最好的关系数据库管理系统应用软件之一。
(1)、首先单击MySQL5.5.21的安装文件,出现该数据库的安装向导界面,单击“next”继续安装,如图所示:
(2)、在打开的窗口中,选择接受安装协议,单击“next”继续安装,如图所示:
(3)、在出现选择安装类型的窗口中,有“typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,因为通过自定义可以更加的让我们去熟悉它的安装过程,单击“next”继续安装,如图所示:
(4)、在出现自定义安装界面中选择mysql数据库的安装路径,这里我设置的是“d:
\ProgramFile\MySQL”,单击“next”继续安装,如图所示:
(5)、接下来进入到准备安装的界面,首先确认一下先前的设置,如果有误,按“back”返回,没有错误,单击“Install”按钮继续安装,如图所示:
(6)、单击“Install”按钮之后出现如下正在安装的界面,经过很少的时间,MySQL数据库安装完成,出现完成MySQL安装的界面,如图所示:
这个界面单击“next”就行。
注意要选择上边的“LaunchtheMySQLInstanceConfigurationWizard”选项,这是启动MySQL的配置,单击“Finish”按钮,进入到配置界面。
(7)、MySQL数据库的安装十分简单,关键是安装完成之后的配置,单击完成之后出现如下的配置界面向导,单击“next”进行配置,如图所示:
(8)、在打开的配置类型窗口中选择配置的方式,“Detailed Configuration(手动精确配置)”、“StandardConfiguration(标准配置)”,为了熟悉过程,我们选择“DetailedConfiguration(手动精确配置)”,单击“next”继续,如图所示:
(9)、在出现的窗口中,选择服务器的类型,“DeveloperMachine(开发测试类)”、“ServerMachine(服务器类型)”、“DedicatedMySQLServerMachine(专门的数据库服务器)”,我们仅仅是用来学习和测试,默认就行,单击“next”继续,如图所示:
(10)、在出现的配置界面中选择mysql数据库的用途,“MultifunctionalDatabase(通用多功能型)”、“TransactionalDatabaseOnly(服务器类型)”、“Non-TransactionalDatabaseOnly(非事务处理型)”,这里我选择的是第一项,通用安装,单击“next”继续配置,如图所示:
(11)、在出现的界面中,进行对InnoDBTablespace进行配置,就是为InnoDB数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,如图所示:
(12)、在打开的页面中,选择mysql的访问量,同时连接的数目,“DecisionSupport(DSS)/OLAP(20个左右)”、“OnlineTransactionProcessing(OLTP)(500个左右)”、“ManualSetting(手动设置,设置为15个)这里选择手动设置,单击“next”继续,如图所示:
(13)、在打开的页面中设置是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,这也是连接java的操作,默认的端口是3306,并启用严格的语法设置,单击“next”继续,如图所示:
(14)、在打开的字符编码的页面中,设置mysql要使用的字符编码,第一个是西文编码,第二个是多字节的通用utf8编码,第三个是手动,我们选择utf-8或者是gbk,单击“next”,继续配置,如图所示:
(15)、在打开的页面中选择是否将mysql安装为windows服务,还可以指定ServiceName(服务标识名称),是否将mysql的bin目录加入到WindowsPATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql–uusername–ppassword;”就可以了,单击“next”继续配置,如图所示:
(16)、在打开的页面中设置是否要修改默认root用户(超级管理员)的密码(默认为空),“Newrootpassword”,如果要修改,就在此填入新密码,并启用root远程访问的功能,不要创建匿名用户,单击“next”继续配置,如图所示:
(17)、到这里所有的配置操作都已经完成,单击Execute按钮执行配置,如图所示:
(18)、过了几分钟,出现如下的提示界面就代表MySQL配置已经结束了,并提示了成功的信息。
(19)、在服务中将mysql数据库启动,并在命令窗口中输入“mysql–hlocalhost–uroot-p”,接着在出现的提示中输入用户的密码,如图所示:
从图中可以看到mysql数据库在启动之后,成功的登录了,在此我们可以对数据库进行操作了。
具体步骤也可参考此链接:
2.在数据库中存储模拟的GPS位置信息
可以使用mysql可视化工具进行建表和存储数据(这里不做介绍),主要介绍下使用命令行进行建表和存储数据,在运行中输入cmd打开命令行;
在命令窗口中输入“mysql–hlocalhost–uroot-p”,接着在出现的提示中输入用户的密码,如图所示:
从图中可以看到mysql数据库在启动之后,成功的登录了;
然后输入usemydb;使用创建的mydb数据库;
输入showtables;语句,查看数据库中所有表信息;
创建一张表名为GPS含有一个ID和一个GPS字段的表,如图所示:
再创建一张表名为savegps,含有ID和GPS两个字段的表,如图所示:
在GPS表中存入三组数据,30.2263817373,120.0299807650;29.5149540000,120.9003580000;40.0069050000,116.3350970000如图所示:
至此,模拟的GPS数据已经存入数据库中。
3.安装配置对应的mysql数据源:
我们这边提供的mysql数据库版本为5.5.20,对应可用的数据源为MyOBDC-3.51.11-2win1.exe;这个数据源为32位数据源;32位系统可以直接在控制面板-管理工具-ODBC数据源中配置,64位系统若在控制面板中找不到32位的ODBC数据源则在C:
\Windows\SysWOW64中打开odbcad32.exe进行配置;
打开ODBC数据源到系统DSN中
点击添加选中MySQLODBC3.51Driver,再点击完成
填写完对应信息后,点击ok;保存设置
此时,数据源就添加完成。
4.开发模拟GPS获取\发送机
如图在VC6.0环境下创建对话框程序,界面设计可以参考图中所示,含有GPS获取按钮和GPS发送按钮,还有定时发送功能,还有一些串口通信按钮可以参考TTY发送/接受程序,这里主要讲VC++从数据库中获取信息和把信息存储到数据库中。
本例中VC++运用ADO技术实现对数据库的访问,以连接MySQL数据库为例。
1)初始化ADO
在应用程序的文件stdafx.h中加入如下语句:
//加入ADO支持库
#import"C:
\ProgramFiles\CommonFiles\System\ado\msado15.dll"no_namespacerename("EOF","adoEOF")
2)创建ADO与数据库源的连接
为了实现ADO与数据库的连接,我们首先要在程序APP类CGET_DATAApp的头文件GET_DATA.h中,添加如下的三个智能指针变量。
_RecordsetPtrm_pRecordset;
_CommandPtrm_pCommand;
_ConnectionPtrm_pConnection;
然后,在应用程序类InitInstance成员函数中初始化OLE/COM库环境,创建ADO连接等操作。
m_pConnection->Open("DSN=mysql;Server=localhost;DATABASE=mydb","root","",adModeUnknown);
这个语句为连接数据库的语句,内容和配置数据源时的信息对应上,DSN为数据源名,Server为服务器名,可以是IP地址(这里是本地数据库),DATABASE为关联的数据库名,后面两个为用户名和密码。
在GET_DATADlg.h中添加三个指针类型的成员变量:
_RecordsetPtrm_pRecordset;
_CommandPtrm_pCommand;
_ConnectionPtrm_pConnection;
在GET_DATADlg.cpp文件中添加代码。
在#endif下面添加如下代码:
extern CGET_DATAApp theApp; // 在此引用应用类中的theApp来获取库连接指针
CStringDisplayGps;//两个全局变量
intRT;
双击获取GPS按钮,在按钮上添加以下函数:
设置定时发送按钮,首先在CGET_DATADlg类向导中添加WM_TIMER函数
在函数中添加代码:
在定时发送和关闭定时发送按钮中添加代码:
编译执行点击获取GPS按钮可以从数据库中获取GPS信息显示在编辑框中,如图所示:
5.设计制作串口通信接受程序,接受GPS信息并存储到数据库中。
设计界面供参考如图所示:
ADO的基本配置如2中所述,然后在ReceiveGps.cpp中添加返回类型为_RecordsetPtr的成员变量ExcuteCommandADO(CStringstrSQL),编写函数代码。
在串口通信函数OnOnCommMscomm()中添加一下代码
voidCReceiveGpsDlg:
:
OnOnCommMscomm()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
intiLast=0;//接受字符个数
CStringstrDis,strTemp,GpsInfo;
VARIANTinput1;//定义VARIANT类型变量
BYTErxdata[2048];//定义存放二进制数据的数组
COleSafeArraysafearray1;//定义COleSafeArray类的实例
UpdateData(true);
switch(m_Comm.GetCommEvent()){
case2:
{
while((m_Comm.GetInBufferCount())>iLast){
iLast=m_Comm.GetInBufferCount();
Sleep(100);
}
//收到iLast个字符
//读取输入缓冲区数据
input1=m_Comm.GetInput();
//将VARAIANT变量赋值给COleSafeArray类的实例
safearray1=input1;
//使用COleSafeArray类的成员函数获取数据长度
longlen1=safearray1.GetOneDimSize();
for(longk=0;k //使用COleSafeArray成员函数将数据写入数组 safearray1.GetElement(&k,rxdata+k); strTemp.Format("%c",rxdata[k]); strDis+=strTemp; //if(rxdata[k]==1101) //strDis+="\12\15\12\15";//换页,启用转换 } if(strDis=='\r') { strDis+="\12\15";//换页,启用转换 } GpsInfo=strDis; m_NewGps.SetWindowText(strDis); strDis+="\12\15\12\15"; m_Display.SetSel(100000,100000); m_Display.ReplaceSel(strDis);//更新显示 UpdateData(false); break; } default: { } } CStringstrSQL; strSQL.Format("INSERTsavegps(gps)VALUES('"+GpsInfo+"')"); theApp.ExcuteCommandADO(strSQL); } 将接受到的数据存储到数据库中。 6.GPS地理位置的读取与显示 1.创建一个java工程 1.1选择【project】 1.2选择【DynamicWebProject】 1.3输入工程名【Computer】 1.4点击【Next】 1.5点击【Next】 1.6选勾【Createweb.xmldeploymentdescriptor】 1.7点击【finish】完成工程的创建 2.导入数据文件 2.1将地图数据文件map复制到WebContent目录下 2.2用文件中的index.jsp覆盖工程中的index.jsp 2.3用文件中的web.xml覆盖共成长WEB-INF下的web.xml 2.4将文件bin中的jar包复制到WEB-INF/lib中,全选 2.5右击,点击【BuildPath】中的【AddBuildPath】,将jar包添加到工程中 3.在src目录下新建包DateBase.Dao 3.1新建类数据库连接类DBConnection,用于连接MySQL的数据库的连接 packageDatabase.dao; importjava.sql.*; /** *@category数据库的连接 *@authorchenkai * */ publicclassDBConnection{ publicstaticConnectiongetConnection(){ Connectioncon=null; try{ Class.forName("com.mysql.jdbc.Driver"); System.out.println("数据库驱动加载成功"); con=DriverManager.getConnection("jdbc: mysql: //localhost: 3306"+ "/mydb? user=root&password=&? useUnicode=true&characterEncoding=utf-8"); System.out.println("数据库连接成功"); }catch(Exceptione){ //TODO: handleexception e.printStackTrace(); } returncon; } } 3.2新建数据库操作类MysqlCrue,用于对MySQL中数据的查询操作 packageDatabase.dao; importjava.sql.*; importjava.util.*; /** *@category数据库的增删改查 *@authorchenkai * */ publicclassMysqlCrud{ Connectionconn=null; PreparedStatementpt=null; ResultSetrs=null; /** *@category数据库的插入和更新操作 *@paramsqlString数据库SQL语句 *@paramparameterString[]查询的限制条件 *@returnflagboolean操作成功返回true,否则为false */ @SuppressWarnings("finally") publicbooleanInsertAndUpdateData(Stringsql,String[]parameter){ booleanflag=false; try{ conn=DBConnection.getConnection(); pt=conn.prepareStatement(sql); if(parameter! =null&¶meter.length>0){ for(inti=0;i pt.setString(i+1,parameter[i]); } } intenter=0; enter=pt.executeUpdate(); if(enter==1){ flag=true; } }catch(Exceptione){ //TODO: handleexception e.printStackTrace(); }finally{ closemysql(); } returnflag; } /** *@category数据库数据查询 *@paramsqlString数据库查询语句 *@paramparameterString[]数据库查询约束条件 *@returnlistsList */ publicList List try{ conn=DBConnection.getConnection(); pt=conn.prepareStatement(sql); if(parameter! =null&¶meter.length>0){ for(inti=0;i pt.setString(i+1,parameter[i]); } } rs=pt.executeQuery(); ResultSetMetaDatarsm=rs.getMetaData(); while(rs.next()){ Map for(inti=0;i map.put(i,rs.getString(i+1)); } lists.add(map); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ closemysql(); } returnlists; } /** *@category数据库数据查询 *@paramsqlString数据库查询语句 *@paramparameterString[]数据库查询约束条件 *@returnlistsList */ publicList List try{ conn=DBConnection.getConnection(); pt=conn.prepareStatement(sql); if(parameter! =null&¶meter.length>0){ for(inti=0;i pt.setInt(i+1,parameter[i]); } } rs=pt.executeQuery(); ResultSetMetaDatarsm=rs.getMetaData(); while(rs.next()){ Map for(inti=0;i map.put(i,rs.getString(i+1)); } lists.add(map); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ closemysq
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机控制 工程 大型 实验 位置 监控 系统