计算机控制工程大型实验位置监控系统.docx

上传人:b****7 文档编号:23779396 上传时间:2023-05-20 格式:DOCX 页数:40 大小:1.53MB
下载 相关 举报
计算机控制工程大型实验位置监控系统.docx_第1页
第1页 / 共40页
计算机控制工程大型实验位置监控系统.docx_第2页
第2页 / 共40页
计算机控制工程大型实验位置监控系统.docx_第3页
第3页 / 共40页
计算机控制工程大型实验位置监控系统.docx_第4页
第4页 / 共40页
计算机控制工程大型实验位置监控系统.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

计算机控制工程大型实验位置监控系统.docx

《计算机控制工程大型实验位置监控系统.docx》由会员分享,可在线阅读,更多相关《计算机控制工程大型实验位置监控系统.docx(40页珍藏版)》请在冰豆网上搜索。

计算机控制工程大型实验位置监控系统.docx

计算机控制工程大型实验位置监控系统

实验一位置监控系统

一.实验目的

通过本实验了解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返回一个List的对象

*/

publicListSelectData(Stringsql,String[]parameter){

Listlists=newArrayList();

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()){

Mapmap=newHashMap();

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返回一个List的对象

*/

publicListSelectDataInt(Stringsql,Integer[]parameter){

Listlists=newArrayList();

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()){

Mapmap=newHashMap();

for(inti=0;i

map.put(i,rs.getString(i+1));

}

lists.add(map);

}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

closemysq

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1