公交车管理系统上位机设计与实现内容摘要:

号码8615939026810,补“F”凑成偶数个00协议标示(TPPID)普通GSM类型,点对点方式08用户信息编码方式(TPDSC)8bit编码01短消息有效期(TPVP)(VP+1)*5分钟06用户信息度(TPUDL)实际长度6个字节4F60597DFF01用户信息(TPUD)“你好。 ”Unicode编码从表3和表4的内容我们可以看出:(1)若基本参数的最高位(TPRP)为0,则没有回复地址的三个段。 从Internet上发出的短消息常常是这种情形。 (2)SMSC号码、手机号码和时间的表示方法,不是按正常顺序顺着来的,而是按照先存放低位字节后存放高位字节的规则形成的,而且要加“F”将奇数补成偶数。 在PDU模式中,可以采用三种编码方式来对发送的内容进行编码,它们是UTFUTF8和UCS2编码。 (1)UTF7编码用于发送普通的ASCII字符,它将一串7位的字符(ASCII码表示形式)编码成8位的二进制数据,每8个字符可“压缩”成7个,UTF7处理 ASCII 字符的时候需要做“补位”处理。 补位规则:将后一字节的从尾取位补在前一字节的头,补满8位。 (2)UTF8编码通常用于发送数据消息,比如图片和铃声等。 (3)如果发送中文字符,则采用UCS2编码方式,每个中文字符用16位二进制数据的Unicode字符编码方式表示,如果是中英文混合的短信,由于英文字符只占1字节,需要补0,成为16位的编码。 例如,“你好。 ”的Unicode编码为4F60597D0021,其中“。 ”的ASCII码为21H,编码后为0021H。 表4 接收PDU串详解分段含义说明08SMSC短信中心地址长度共8个8 位字节(包含91)91SMSC地址格式用国际格式号码(在前面加“+”)683108301705F0SMSC短信中心号码8613800371500字节翻转后补“F”凑成偶数个24基本参数接收、无更多信息、有回复地址0D对方号码长度共13个十进制数(不包含91,“F”)91地址格式用国际格式号码(在前面加“+”)685198830188F6对方号码15893810886,补“F”凑成偶数个00协议标示(TPPID)普通GSM类型,点对点方式08用户信息编码方式(TPDCS)Unicode编码80401001156423时间戳(TPSCTS)080401 10:51:46 时区2306用户信息长度实际长度6个字节4F60597DFF01用户信息内容“你好。 ”5 =00YYNN开 始GSM模块初始化打 开 串 口与GSM通信建立成功。 接收提取信息是否有效。 访问数据库提 取 车 号提取站牌坐标50=50比较距离。 确认提取站牌编号提取其他站牌编号比较编号。 给各站牌发送差值结束上位机管理系统设计 图6 程序处理流程图程序主流程图如图6所示。 软件的一项重要工作是编码比较处理,GSM模块接收并提取到信息后,访问数据库,与站牌坐标进行比较,如果距离大于50M,返回提取下一个站牌坐标,当差值小于等于50M,则提取该站牌编号,并与其它站牌编号进行比较,如果差值小于0,则说明车辆已驶过该站牌,不需要向其发送信息了;当比较值大于1时,则上位机与GSM无线模块通信,向站牌GSM收发模块发送差值。 串口通信与AT命令的设置和使用是程序设计的难点。 系统程序设计采用模块化设计思想,主要分为系统初始化模块、通信模块初始化模块、身份授权及验证模块、数据提取模块、数据比较模块、差值输出模块等组成。 Visual Basic简介本系统上位机的软件部分是用Visual Basic为工具开发的,Visual Basic(VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。 它源自于BASIC编程语言。 它简单易学、效率高、功能强大,而且程序开发人员不必具有复杂的编程基础。 VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。 VB提供了动态数据交换(DDE)编程技术、对象的链接与嵌入(OLE)技术、动态链接库(DLL)技术,可以高效、快速地开发出Windows环境下功能强大,图形界面丰富的应用软件系统[5]。 数据库结构设计数据库是开发管理系统的基石,一个设计良好的数据库可以让程序员在写程序时得心应手,灵活运用各种编程技术对数据进行操作;反之一个设计不良的数据库让程序员无从下手,浪费大量时间在弥补数据库设计的过失上,最后极有可能导致项目的开发失败。 根据本系统的特点,采用中小型单机数据库系统即可满足需求,故选择应用较为广泛的Microsoft SQL Server数据库。 该数据库软件具有较好的Internet集成性,良好的可伸缩性和可用性,以及企业级的数据库功能,易于安装、部署和使用,且面向个人用户,应用广泛,操作简单极为适合本系统的数据管理。 系统需求分析公交车自动报站管理系统的用户是公交调度室的工作人员,实例包括路线信息管理和站牌信息管理,具体功能如下:(1)路线信息的添加、修改、删除和查询。 (2)站牌信息的添加、修改、删除和查询。 (3)路线和站牌的编码管理。 根据系统需求分析总结的用户需求设计系统体系结构。 系统功能模块如图7所示。 自动报站系统管理路线信息管理站牌信息管理等功能添加、修改、删除、查询图7 自动报站系统管理功能模块示意图在功能模块示意图的结构中,每一个节点都是一个最小的功能模块。 每一个功能模块都需要针对不同的表完成相同的数据库操作,即添加记录、修改记录、删除记录、以及查询显示信息等功能。 基本信息管理模块路线编号管理站牌编号管理路线信息管理图8 基本信息管理模块关系图包括路线信息管理和站牌信息管理等功能模块。 此集合中功能模块的关系如图8所示。 路线信息管理模块是整个系统的核心,各个模块都针对路线信息的一个方面进行管理都需要提供路线编号的基本信息作为索引。 用户管理及权限控制功能集合包括用户信息管理、权限控制等模块。 权限控制虽然不是一个独立存在的模块,但是它却贯穿整个系统的运行当中。 在本系统中,用户管理模块的功能比较简单。 在系统初始化时,有两个默认的用户。 系统管理员用户为Admin,普通用户为Users,由程序设计人员手动添加到数据库中。 他们的默认密码为11111。 Admin用户可以创建用户、修改用户信息以及删除用户;普通用户则只能修改自己的用户名和密码。 管理系统只能让具有管理权限的用户登录,这就需要将管理员的信息在数据库中保存起来,在每次登录时对用户输入的信息进行核对,若与数据库中的信息相符合,则认为时合法用户可以使用系统;否则认为是不合法用户对登录请求予以拒绝。 用户管理模块的关系如图9所示。 运行系统后,首先会看到登陆窗体,对用户的身份进行认证。 身份认证可以分为以下两个过程:(1)确认用户是否是有效的系统用户。 (2)确定用户类型。 第一个过程决定用户能否进入系统,第二个过程根据用户的类型决定用户的系统用户信息管理修改Admin用户的密码创建、修改和删除普通用户信息修改自身的用户名和密码Admin用户普通用户 图9 用户管理模块设计操作权限。 如果要对普通用户进行管理,则使用Admin用户登陆;否则建议使用Users用户登陆。 如果还要创建其他用户,可以在用户管理模块中进行创建和管理。 在创建用户时,需要输入要创建的用户名和密码。 Admin用户还可以修改和删除其他普通用户数据。 在本系统中,应该首先增加路线信息,之后才能增加站牌信息。 6 上位机数据处理部分用Visual Basic开发串行通信程序有两种方法:一是利用Windows的API函数。 另一种是采用通信控件MSCOMM来实现。 利用API函数编写串口通信程序较为复杂,其优点是可实现的功能更丰富、应用面更广、更适合于编写较为复杂的低层次通信程序。 MSCOMM用户通信控件提供了通过串口发送和接收数据的串行通信能力,它不但包括了Windows API中关于串行通信的16个函数所完成的全部功能,而且开拓了更多的对象属性,方便用户进行设计,满足不同用户的业务需求,可以较容易地解决串口通信问题。 6. 1 MSCOMM通讯控件的使用MSCOMM通信控件有20多个属性,编程时使用了其中的几种属性。 (1)CDHolding属性CDHolding属性的数据类型是布尔型,格式为:[Form.]CDHolding的值为True时,载波检测线为高电平,表示Modem处于在线状态。 否则,载波检侧线为低电平,表示Modem处于挂机状态,该属性在设计阶段不起作用,其值也不能由程序设计者设置。 (2)Comfort属性Comport属性的数据类型是整型,它用来设置或返回通信端口号。 其使用格式为:[form.][=通信端口号]通信端口号为199之间的一个正整数,缺省值为1。 如果使用一个不存在的通信端口号,则通信控件产生一个错误的端口号68,表示无效的通信设备。 在使用通信端口之前,必须先设定Comport属性的值。 程序中选用PC机的COM1。 (3)DSRHolding属性DSRHolding属性的数据类型是布尔型。 该属性在设计阶段不起作用,在运行阶段只能读取其值。 其使用格式为:[Form.]DSR信号由Modem发送到与之相连的计算机以通知计算机准备处理操作。 当DSR信号线处于高电平时,DSRHolding=True。 当DSR信号线处于低电平时,DSRHolding=False。 (4)InBuferCount属性InBuferCount属性的数据类型是整型,其使用格式为:[form.][=字符数]该属性在设计阶段不起作用,它返回存放在接收缓冲区中的字符个数。 这表示已由Modem接收并已存放在接收缓冲区中的字符数。 通过设置InBuferCount的值为0可以将接收缓冲区清零。 从下位机发送来的数据是有一定的格式的,上位机在读取时必须把每一个数据读完整才能保证读数的正确性。 因此,需在程序中可以通过该属性的值判断Modem缓冲区中的字符数,以确定数据是否完整地传送了过来。 若是,则可读取该数,否则还需等待。 (5)Handshaking属性表5 Handshaking属性设定值设定值值含义ComNone0无硬件握手协议ComXOnXOff1XONXOFF握手协议ComRTS2RTS/CTS握手协议ComRTSXOnXOff3RTS/CTS和XONXOFF握手协议Handshaking属性的数据类型是整型。 其使用格式为:[form.][=协议代码]Handshaking属性的取值如表3所示:(6)InBuferSize属性InBuferSize属性的数据类型是整型,用它来设置或返回接收缓冲区的容量〔以字节为单位)。 其使用格式为:[form.][=字节数]InBuferSize表示接收缓冲区的总容,缺省值为1024字节。 如果出现溢出错误,可再增大接收缓冲区以匹配传输速度。 (7)Input属性Input属性的数据类型是字符串,用以从接收缓冲区中返回和清除一串字符其使用格式为:[form.]该属性在设计阶段不起作用,且只能在运行阶段读取其值。 本软件系统利用该属性从缓冲区中读取下位机传来的数据,并利用该属性可清空缓冲区的特性,清除一些非数据信息。 (8)Input Len属性Input Len属性的数据类型是整型,用以设置和返回input属性从接收缓冲区中可读到的字符数。 其使用格式为:[form.][=字符数]Input Len属性的缺省值为0。 设置Input Len属性的值为0可使通信控件用Input属性读取接收缓冲区的全部内容。 如果在接收缓冲区中由Input Len的值指定的字符串是无效的,一则Input的属性返回一个长度为0的空串。 程序中该属性的值设为0。 (9)Output属性Output属性的数据类型为字符串,用以将一个字符串写入发送缓冲区。 其作用格式为:[form.][=待发送字符串]该属性在设计阶段不起作用。 本软件系统通过该属性向Modem发送AT命令及向下位机发送通信协议。 (10)Port Open属性Port Open属性的数据类型为布尔型,用以设置和返回通信口的状态(开或闭)。 其使用格式为:[form.][=True/False]该属性在设计阶段不起作用。 当Port Open=True时,表示通信端口已打开。 否则关闭通信口。 当应用程序结束运行时,通信控件会自动关闭通信口。 在打开一个通信口之前,必须将Comport设置为一个有效的通信端口号。 程序中利用该属性打开或关闭端口。 (11)Settings属性Settings属性的数据类型是字符型,使用格式为:[form.][=由参数组成的字符串]其中,由参数组成的字符串的格式为“BBBB,P,D,S.BBBB是波特率,P是校验类型,D是数据位,S是停止位。 该字符串的缺省值为9600,N,8,1”。 BBBB的取值范围是:110,300,600,1200,2400,9600(缺省),14400,:E,M,N(缺省),O,:1(缺省),,2。 程序中利用Settings属性来设置所采用的波特率、校验类型、数据位数和停止位位数等参数[6]。 本系统中,利用PC机的串口COM1和TC35i进行通信,PC机应用程序设计采用Visual Basic编写。 用Visual Basic编程时,用控件对串行口进行编程。 在Windows, Windows NT,Windows2000及W。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。