〔大学论文〕公交车管理系统上位机设计与实现(含word文档) .pdf

上传人:李主任 文档编号:3697208 上传时间:2019-09-20 格式:PDF 页数:130 大小:725.16KB
返回 下载 相关 举报
〔大学论文〕公交车管理系统上位机设计与实现(含word文档) .pdf_第1页
第1页 / 共130页
〔大学论文〕公交车管理系统上位机设计与实现(含word文档) .pdf_第2页
第2页 / 共130页
〔大学论文〕公交车管理系统上位机设计与实现(含word文档) .pdf_第3页
第3页 / 共130页
〔大学论文〕公交车管理系统上位机设计与实现(含word文档) .pdf_第4页
第4页 / 共130页
〔大学论文〕公交车管理系统上位机设计与实现(含word文档) .pdf_第5页
第5页 / 共130页
亲,该文档总共130页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《〔大学论文〕公交车管理系统上位机设计与实现(含word文档) .pdf》由会员分享,可在线阅读,更多相关《〔大学论文〕公交车管理系统上位机设计与实现(含word文档) .pdf(130页珍藏版)》请在三一文库上搜索。

1、2002002002009 9 9 9 届本科毕业论文(设计)届本科毕业论文(设计)届本科毕业论文(设计)届本科毕业论文(设计) 论文题目:论文题目:论文题目:论文题目:公交车管理系统上位机设计公交车管理系统上位机设计公交车管理系统上位机设计公交车管理系统上位机设计与实现与实现与实现与实现 摘摘摘摘要要要要 本文介绍了公交车管理系统上位机硬件和软件的设计。 该系统利 用 GSM 收发模块、GSM 通信网络、Visual Basic 语言编程和微控制 技术, 通过串口 RS-232C 与上位机通信并建立 GSM 通信网络的数据 通道,以短消息作为数据传输方式,开发出基于 GSM-SMS 的控制系

2、 统。采用上位机较为友好的人机界面,用集成化的管理理念,对信息 屏终端通过 GSM 模块进行远程管理,具有费用低廉,不受距离远近 和地势起伏的限制,方便可靠,灵活快捷的特点,且用 VB 语言编程 具有较友好的用户操作界面,易学易用。 关键词:关键词:关键词:关键词: GSM 模块,RS-232C, SMS TheTheTheThe DesignDesignDesignDesign ofofofof thethethethe B B B Busususus StopStopStopStop S S S Systemystemystemystem A A A Automaticallyutomat

3、icallyutomaticallyutomatically R R R Reportseportseportseports PCPCPCPC AbstractAbstractAbstractAbstract This article introduces the design of the management system bus PC hardware and software.The system uses GSM transceiver, GSM communication network, Visual Basic programming language and micro-co

4、ntrol technology, through the serial RS-232 communication with the host computer and the establishment of the GSM communication network data path to the short message as a data transfer method, developed based on GSM -SMS control system. PC using a more friendly interface, with integrated management

5、 of information through the GSM module screen terminal remote management, with a low-cost, distance and terrain from the ups and downs of the restrictions, convenient and reliable, flexible and efficient characteristics, VB programming language and with a more user-friendly interface, easy to learn

6、and use. KeyKeyKeyKey words:words:words:words: GSM Modem, RS-232C, SMS 目目录录 1 引言.1 1.1 公交车自动报站系统上位机的发展现状2 1.2 GSM 系统3 2 设计要求.4 3 方案论证.4 3.1 无线传输方案选择 4 3.2 编程语言方案选择 6 3.3 NMEA 协议.7 4 系统结构及工作原理.8 4.2 GSM 模块9 4.3 RS-232C 串口通信11 4.4AT 命令集14 4.5 确认站点.16 4.6 PDU 模式及中文短信息的编码. 18 5 上位机管理系统设计.22 5.1 Visual B

7、asic 简介 23 5.2 数据库结构设计.24 5.2.1 系统需求分析.24 5.2.2 基本信息管理模块 25 5.2.3 用户管理及权限控制功能集合 26 2 6 上位机数据处理部分.27 6. 1 MSCOMM 通讯控件的使用.27 6.2 上位机软件设计31 6.2.1 数据通讯部分程序设计 32 6.2.2 PC 机与 GSM 通信.33 6.2.3 数据管理部分程序设计 35 7 小结.36 致谢.36 参考文献.38 附录一 位置坐标.40 附录二 程序清单.42 1 1 1 1 1 引言引言引言引言 公交车已经成为一般工薪族和学生族出门必须的交通工具, 目前 公交车上采用

8、的公交报站系统具有语音和显示报站的基本功能, 但由 于报站时采用司机手动切换,一方面增加了司机的劳动强度,另一方 面由于司机的误报或漏报,造成乘客误下或漏下,对于公交运营产生 了很大负面影响,更会对乘客造成很多不必要的影响。作为一个城市 的公交企业,既要代表政府体现当地城市的形象,又要尽一切力量减 少政府投资,创造良好的社会效益和经济效益。而传统的公交运营系 统的装备和管理模式较难达到这两者的完美结合。 随着科学技术的发 展,公交应用系统带给公交企业的将不仅是形象的提升,也是效益的 增长。为此,研究公交车自动报站系统是非常必要的。 公交车自动报站系统是采用全球定位系统(GPS)进行数据采集,

9、实时解算车辆当时的经度、 纬度等信息,获得公交车的实时坐标,将其 发送到上位机与站牌坐标相比较,公交车驶入站牌一定距离范围内时, 不用人工干预,系统自动进行控制下位机站牌,提供站牌温磬提示服 务。 在这个高速发展的社会中, 信息技术、 通信技术、 电子控制技术、 系统综合技术等的快速发展,使得各个电子系统不断向智能化、人性 化、多元化、节能化方向发展,智能化的交通运输系统也已加入了这 个高度发达的科技时代潮流。 自动报站系统的建立不仅大大提高运输 的效率、改善了交通环境,并且也提高了交通的安全性。 公交车自动报站系统上位机设计是通过关键基础理论模型的研 2 究,从而将信息技术、通信技术、电子控

10、制技术和系统综合技术等有 效地应用于交通运输系统,从而建立起大范围内发挥作用的实时、 准 确、 高效的交通运输管理系统。 自动报站系统利用现代科学技术在人、 车、路之间建立起智能的联系。借助系统的智能,车辆可以在道路上 安全、高效的行驶,依靠智能化手段将车辆运行行程调整到最佳, 在 极大地提高运输效率的同时,充分保障交通安全、提高能源利用率, 最终实现人、车、路的和谐统一1。 本品用以 Visual Basic 汇编语言为基础编写发送界面的软件的上 位机(PC 机) , 实现从 GSM 模块提取由公交车发送的位置信息, 进行 处理后再由 GSM 模块发送到站牌下位机(单片机),并由下位机所控制

11、的 LED 点阵显示 屏显示出来。 1.11.11.11.1 公交车自动报站系统上位机的发展现状公交车自动报站系统上位机的发展现状公交车自动报站系统上位机的发展现状公交车自动报站系统上位机的发展现状 目前国内各大城市常见公交车自动报站信息发布系统的搭建和 信息内容的更新方式,多采用传统技术手段,每个报站系统只是一个 孤立的单体,内容需要专门人员,即便通过计算机控制,实际上也只 是一个孤立的系统,无论是信息录入、终端管理还是自动糊程度都很 低,部署和使用成本也非常高,更别说网络化的信息传输和信息服务 了。 本系统通过上位机较为友好的人机界面, 采用集成化的管理理念, 对信息屏终端通过 GSM 模

12、块进行远程管理,具有费用低廉,不受距 离远近和地势起伏的限制,方便可靠,灵活快捷的特点,非常适合站 牌信息发布系统。GSM 网络主要提供语音、短消息、数据等多种业 3 务。 其 SMS 短消息通讯方式采用通常的无线 GSM 短消息模块就能实 现短消息的传输。SMS 以其连接简单,频谱利用率高、费用低廉、 覆盖面广、保密性好、抗干扰能力强、实现方便等优点,得到广泛的 应用。因此站牌信息发布系统上位机和控制终端之间可以通过 SMS 基于 GSM 公共网进行数据和相关的命令传送,从而实现了远程信息 的发布和管理。 1.21.21.21.2 GSMGSMGSMGSM 系统系统系统系统 在很多监控领域,

13、各种监控设备大多还是有线方式传输,当距离 遥远时,有线方式监控设备的安装、维护非常不方便,因为监控端远 离采集端,铺设电缆的投入是巨大的。通过无线方式来交换数据, 则 可以有效地避免这些问题。 GSM(Global System for Mobile Communication,全球移动通讯系 统)网络是目前国内覆盖最广,应用最普遍的无线通信网络,利用 GSM 网络构建远程检测系统时, 完全可以利用现成的 GSM 无线网络 而无须再建新基站。 GSM是基于时分多址技术的移动通讯系统,是目前发展比较成 熟、完善、应用最为广泛的通讯系统。目前已建成的覆盖全国的GSM 数字蜂窝移动通讯网(主要包括中

14、国移动和中国联通两家大型运营 商) , 是我国公众移动通讯网的主要方式, 它主要提供话音、 短信息、 数据等多种业务。其中基于GSM-SMS(Short Message System,短消 息或短信)功能可以开发出传输各种检测、监控数据信号和控制命令 的数据通讯系统2。由于GSM网络在全球范围内实现了联网和漫游, 4 不需组建专用通讯网络,就可以完成远程数据通讯,而且具有较好的 实时性,所以GSM网络的应用越来越广泛。 利用GSM网络短消息业务(SMS)实现监测领域的应用具有以下 优点:通信网络覆盖面广,网络设施完备,实施与运行费用低,可以 实现在无人值守情况、环境恶劣、超远距离的情况下控制信

15、息的收集 和传送。 2 2 2 2 设计要求设计要求设计要求设计要求 系统的具体设计要求为: (1)人机界面友好:方便用户进行常用的管理操作。 (2)运行稳定:采用最新技术保证系统能准确的进行数据的发 送与接收。 (3)历史记录管理:能对历史记录进行再现,方便汇总。 (4)安全保密:系统可设置登录权限,对信息进行访问控制。 (5)数据恢复:可以将数据记录进行存档,在遇到灾难性故障 时不至于数据丢失。 基于以上的要求,所设计的系统必须有以下结构模块:GSM 收 发模块、数据库管理模块、串口通讯模块、系统运行平台。 3 3 3 3 方案论证方案论证方案论证方案论证 3 3 3 3.1 .1 .1

16、.1 无线传输方案选择无线传输方案选择无线传输方案选择无线传输方案选择 目前的无线通道的数据传输方案主要分为两种, 一种是通过专用 网进行数据传输,如RF(Radio Frequency,射频)数据传输电台和无 5 线局域网(WLAN) ;一种是通过公共无线通信网络,如GSM/GPRS 网络的成熟度较高、覆盖面较广,因而GSM/GPRS网络被选为该无线 通道总体方案的通信基础。 而基于GSM/GPRS网络的数据传输通常有 四种方式,一种是基于短消息的数据传输。第二种是基于DATA方式 (注:一种以电路交换为基础的传输方式)的数据传输;第三种是通 过 语 音 方 式 进 行 数 据 传 输 ;

17、最 后 就 是 通 过 IP ( INTERNET PROTOCOL,因特网协议)方式的数据传输。下面对四种基于 GSM/GPRS网络的无线数据传输方式的各自特点作简单的介绍。 基于 短消息的数据传输是通过短消息作为数据传输的载体,利用AT指令 对通信模块控制,然后将数据按照短消息的格式发送给目标机。目标 机接收到短消息后,利用AT指令将短消息读出并将信息还原,这样 就完成一次数据通信。基于短消息的数据传输方式的特点是资费较 低,组网/使用方面,但数据容量较低(0 Y Y N N 开始 GSM模块初始化 打 开 串 口 与 GSM 通信建立 成功? 接收提取信息 是否有效? 访问数据库 提 取

18、 车 号 提取站牌坐标 50 0 Then Me.Caption = PickAllSMS1(strReceived, obj_ArySMSList) Else Me.Caption = PickAllSMS(strReceived, obj_ArySMSList) End If On Error Resume Next nU = UBound(obj_ArySMSList) If nU 0 Then For n = 1TonU If lenpc 0 Then SMSNo.Text = obj_ArySMSList(n).SourceNo SMSTime.Text = Format(obj_A

19、rySMSList(n).ReachDate, 47 “YYYY-MM-DD“) idxDst = idxDst + 1 End If 将该字节剩下的左边部分,作为残余数据保存起来 iLeft = BitRightShift(iSrc(idxSrc), idxChar) End If Next idxSrc Dim nTmpAs Long Dim strTmp As String Encode7BitASC = “ For nTmp = 0ToidxDst strTmp = Hex(iArrayRtn(nTmp) If Len(strTmp) “ “ Then strTmpB = strTmp

20、B Password=sa;User ID=sa;Initial Catalog=StudentFiles;Data Source=localhost;“ 一次执行connect操作可以访问数据库的次数 Public Const CONNECT_LOOP_MAX = 10 = 标记数据库是否连接 = Private IsConnectAs Boolean = 标记执行Connect()函数后,访问数据库的次数 = Private Connect_NumAs Integer Private cnnAsADODB.Connection连接数据库的Connection对象 Private rsAsA

21、DODB.Recordset保存结果集的Recordset对象 100 连接数据库 Private Sub Connect() 如果连接标记为真,则返回。否则会出错 If IsConnect = True Then Exit Sub End If 关键New用于创建新对象cnn Set cnn = New ADODB.Connection 设置连接字符串ConnectionString属性 cnn.ConnectionString = conn 打开到数据库的连接 cnn.Open 判断连接的状态 If cnn.State = CONNECT_LOOP_MAX Then Connect_Num

22、 = 0 Disconnect End If End Sub 强制关闭api方式访问的数据库,计数器复位 Public Sub DBapi_Disconnect() Connect_Num = 0 Disconnect End Sub 执行数据库操作语句 Public Sub SQLExt(ByVal TmpSQLstmtAs String) 创建Command对象cmd Dim cmd As NewADODB.Command 连接到数据库 DB_Connect 设置cmd的ActiveConnection属性,指定与其关联的数据库连接 Set cmd.ActiveConnection = c

23、nn 设置要执行的命令文本 103 cmd.CommandText = TmpSQLstmt MsgBox TmpSQLstmt 执行命令 cmd.Execute 清空cmd对象 Set cmd = Nothing 断开与数据库的连接 DB_Disconnect End Sub 执行数据库查询语句 Public Function QueryExt(ByVal TmpSQLstmtAs String)As ADODB.Recordset 创建Recordset对象rst Dim rstAs NewADODB.Recordset 连接到数据库 DB_Connect 设置rst的ActiveConn

24、ection属性,指定与其关联的数据库连接 Set rst.ActiveConnection = cnn 设置游标类型 rst.CursorType = adOpenDynamic 104 设置锁定类型 rst.LockType = adLockOptimistic 打开记录集 rst.Open TmpSQLstmt 返回记录集 Set QueryExt = rst End Function Public SubAdd_RouteToTree(TreeView1As TreeView, _ ByVal TmpKeyAs String) Dim Bh As Long Dim TmpNodeAs

25、Node 当前选择结点的关键字 Dim CurKeyAs String 临时数组 Dim TmpArr_RouteName()As String Dim TmpArr_RouteId()As Long ReDim TmpArr_RouteName(0) ReDim TmpArr_RouteId(0) 从关键字中读取当前的路线编号 Bh = Val(Right(TmpKey, Len(TmpKey) - 1) 获取当前路线信息 105 MyRoute.GetInfo (Bh) 读取当前路线的下一级路线数据 MyRoute.Load_Route_ByUpper (Bh) 将下一级路线数据赋值到临时

26、数组中 i = 0 Do WhileArr_RouteName(i) “ 生成路线对应的关键字,格式为“字母a”路线编号 CurKey = “a“ + Trim(Str(TmpArr_RouteId(i) 如果当前路线有下一级,则显示文件夹图标 If MyRoute.HaveSon(TmpArr_RouteId(i) = True Then Set TmpNode = TreeView1.Nodes.Add(TmpKey, _ tvwChild, CurKey, TmpArr_RouteName(i), 1, 3) 106 TmpNode.ExpandedImage = 2 否则显示叶结点图标

27、 Else Set TmpNode = TreeView1.Nodes.Add(TmpKey, _ tvwChild, CurKey, TmpArr_RouteName(i), 4, 5) End If FocusRouteName、 FocusRouteBh和FocusRouteKey分别表示希望 选中的路线的名称、编号和关键字 If FocusRouteName 0And TmpArr_RouteId(i) = FocusRouteBh Then TmpNode.Selected = True Focus RouteKey = CurKey End If If FocusRouteKey

28、“And CurKey = Focus RouteKey Then TmpNode.Selected = True End If 以当前路线为参数递归调用 107 CallAdd_ RouteToTree(TreeView1, CurKey) i = i + 1 Loop End Sub Public Function In_Single(KeyAsciiAs Integer)As Boolean Dim Ch_Accept_Single(20)As String 可以接受的字符数组 Ch_Accept_Single(0) = “0“ Ch_Accept_Single(1) = “1“ Ch_

29、Accept_Single(2) = “2“ Ch_Accept_Single(3) = “3“ Ch_Accept_Single(4) = “4“ Ch_Accept_Single(5) = “5“ Ch_Accept_Single(6) = “6“ Ch_Accept_Single(7) = “7“ Ch_Accept_Single(8) = “8“ Ch_Accept_Single(9) = “9“ Ch_Accept_Single(10) = “.“ Ch_Accept_Single(11) = “-“ Ch_Accept_Single(12) = Chr(8) 检查输入字符是否在数组

30、中 108 In_Single = False For i = 0To12 If Chr(KeyAscii) = Ch_Accept_Single(i) Then In_Single = True End If Next End Function Public Function In_Int(KeyAsciiAs Integer)As Boolean Dim Ch_Accept_Int(20)As String 可以接受的字符数组 Ch_Accept_Int(0) = “0“ Ch_Accept_Int(1) = “1“ Ch_Accept_Int(2) = “2“ Ch_Accept_Int

31、(3) = “3“ Ch_Accept_Int(4) = “4“ Ch_Accept_Int(5) = “5“ Ch_Accept_Int(6) = “6“ Ch_Accept_Int(7) = “7“ Ch_Accept_Int(8) = “8“ Ch_Accept_Int(9) = “9“ Ch_Accept_Int(10) = Chr(8) 109 检查输入字符是否在数组中 In_Int = False For i = 0To10 If Chr(KeyAscii) = Ch_Accept_Int(i) Then In_Int = True End If Next End Function

32、 Public Function InCombo(ByVal StrAs String, _ ByVal Combo1As ComboBox)As Boolean i = 0 Do While i 0 Then ReDim byteChunk(LeftOver) byteChunk() =Adodc1.Recordset.Fields(2).GetChunk(LeftOver) Put SourceFile, , byteChunk() End If For i = 1ToNumBlocks ReDim byteChunk(BlockSize) byteChunk() =Adodc1.Reco

33、rdset.Fields(2).GetChunk(BlockSize) Put SourceFile, , byteChunk() Next i Close SourceFile 将文件装入到Image1控件中 Image1.Picture = LoadPicture(TempFile) 删除临时文件 113 Kill (TempFile) End Sub Public Sub SaveImage(ByVal ImageFileAs String, _ Adodc1AsAdodc) IfAdodc1.Recordset.BOF = True OrAdodc1.Recordset.EOF = T

34、rue Then Exit Sub End If If ImageFile = “ Then Exit Sub End If 提供一个尚未使用的文件号 SourceFile = FreeFile 打开文件 Open ImageFile For BinaryAccess ReadAs SourceFile 得到文件长度 FileLength = LOF(SourceFile) 判断文件是否存在 If FileLength = 0 Then Close SourceFile 114 MsgBox DiskFile /SQL 操作语句 OleDbConnectionmy=newOleDbConnec

35、tion (MainForm.DataConString); OleDbCommand myCmd = new OleDbCommand (mySQL, my); /打开数据库连接 my.Open (); (2)ADO 方式查询特定记录 void ShowAll(string strSql) 121 this.listView1.Items.Clear(); OleDbConnection my=new OleDbConnection(Mm.DString); OleDbCommand myCmd = new OleDbCommand(strSql,my); /打开数据库连接 my.Open(

36、); OleDbDataReader myReader; myReader = myCmd.ExecuteReader(); /获取数据之前,必须不断的调 Read 方法,它负责前进到 下一条记录。 int i = 1; try while (myReader.Read() ListViewItem item = new ListViewItem(); item.SubItems0.Text = i.ToString(); item.SubItems.Add(myReader.GetDateTime(1).ToSho rtDateString() + “ “ + myReader.GetDat

37、eTime(1).ToShortTimeString(); item.SubItems.Add(myReader.GetString(2); 122 item.SubItems.Add(myReader.GetString(3); this.listView1.Items.Add(item); i+; catch (OleDbException ex) MessageBox.Show(ex.ToString(); Finally/安全起见,最终执行 /关闭 SqlDataReader myReader.Close (); /关闭与数据库的连接 myConnection.Close(); (3)

38、ADO 方式添加记录 /添加记录 OleDbConnectionmy=newOleDbConnection (MainForm.DataConstring); String strsql = “insert into GSM_tb (GSM_Number, GSM_Memo) 123 values (“ + this.textBox1.Text + “,“ + this.textBox2.Text + “)“; OleDbCommand myCmd = new OleDbCommand (strsql, my); myCmd.Connection.Open (); Try myCmd.Exec

39、uteNonQuery (); Catch (OleDbException ex) MessageBox.Show(“添加记录错误!“+ ex.Message.ToString (); myCmd.Connection.Close (); (4)ADO 方式删除特定记录 Private void DeleData () OleDbConnection Mn; Mn = new OleDbConnection (MainForm.DataConString); String Del =“deleteGSM_tbwhereGSM_Number= NUMBER“; OleDbCommand Mc =

40、 new OleDbCommand (Del, Mn); Mc.Parameters“N“.Value = listView1.Items 0.SubItems 124 1.Text; MyCom.Connection.Open (); Try MyCom.ExecuteNonQuery (); MessageBox.Show(“删除终端信息成功!“, “【信息发布 系统】“,MessageBoxButtons.OK, MessageBoxIcon.Information); Catch (OleDbException ex) MessageBox.Show(“删除数据错误!“+ ex.Message.ToString (); MyCom.Connection.Close ();

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1