人机交互图形客户端研究及开发毕业论文.doc_第1页
人机交互图形客户端研究及开发毕业论文.doc_第2页
人机交互图形客户端研究及开发毕业论文.doc_第3页
人机交互图形客户端研究及开发毕业论文.doc_第4页
人机交互图形客户端研究及开发毕业论文.doc_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人机交互图形客户端研究及开发毕业论文人机交互图形客户端研究及开发毕业论文 目目 录录 摘要 I ABSTRACT II 引 言 1 第一章 绪论 2 1 1 论文研究背景 2 1 2 国内和国外发展程度及当前状况 3 第二章 需求分析 4 2 1 客户端程序需求分析 4 第三章 概要设计 6 3 1 人机交互界面客户端程序的总体设计与思路 6 3 2 图片播放模块设计 9 3 3 身份信息验证模块设计 9 3 4 用户信息显示模块设计 13 3 5 管理员功能模块设计 15 3 6 历史消费信息记录查询模块设计 16 3 7 充电设置模块设计 17 3 8 硬件检测模块 19 3 9 充电模块设计 22 3 10 充电结束模块设计 25 3 11 本地数据库设计 27 第四章 详细设计 28 4 1 客户端程序主要参数和宏定义的设计 28 4 2 客户端程序主要工程类的设计 30 第五章 系统测试 38 5 1 测试目的 38 5 2 系统主板及外设截图 39 5 3 人机交互界面程序运行测试截图 40 5 4 用户信息界面截图 42 5 5 管理员信息界面截图 42 5 6 历史记录查询模块界面截图 43 5 7 充电模式选择界面截图 44 5 8 硬件检测界面截图 45 5 9 充电界面截图 46 5 10 充电完成界面截图 47 参考文献 48 谢 辞 49 附 录 50 南华大学计算机科学与技术学院毕业设计 论文 第 1 页 共 57 页 引引 言言 当今社会 石油能源日益紧缺 环境日益恶化 特别是在北京出现雾霭天气 以后 燃油汽车的使用变得更加严格 在此情况下 电动汽车作为解决能源 环 境等问题的有效方式 作为一个新兴行业 产业化发展前景非常广阔 国家在经 济 技术 政策 行业标准等方面的日趋成熟 同时 电动汽车产业处在产业的 发展刚刚起步 国家对该产业提供了有效的帮助和大力的支持 推动电动汽车产 业的发展成为十二五期间的重要战略 所以 电动汽车的能源管理和补给基础设 施对电动汽车产业的发展起到了至关重要的作用 在即将走出学校走入社会的我 们 应该给予重视和一些力所能及的研究 因此 我们小组使用 S3c6410 开发板 以及相关外设 模拟出一个电动汽车充电控制系统 南华大学计算机科学与技术学院毕业设计 论文 第 2 页 共 57 页 第第 1 1 章章 绪论绪论 1 11 1 论文研究背景论文研究背景 在全国大力推广电动汽车产业这一良好的大环境下 调用了大量的资源优势 凭借清华大学 中国科学院的专家 学者和其他高科电气工程学院学院 开发了许 多电动汽车交流和直流充电设备 大功率充电器 车载充电器 充电器 以及电池 管理系统 该系统综合了国内外电动汽车充放电技术和管理行业解决方案 电动车 自动充电控制系统是推动电动汽车充电系统产业发展的重要设施之一 在一般情况 下 系统将被固定在路边或停车场 使用一种专用的充电系统上安装界面 自动充 电控制系统将采用电动车辆传导 对车载充电器的电动汽车提供交流电源同时 会 记录消费和安全保护功能和相应的记录 通过够买能进行充电用的 IC 卡槽或专用 卡进行充电消费 自动汽车自动充电系统大致可分为交流的进行充电的控制的系统 和直流进行充电的控制的系统 交流进行充电的控制的系统安装在电动汽车上 以 及交流电网骆上 电动车上的充电器的交流电源的提供电量的装置 在拥有计算费 用功能的同时 直流自动充电的主控系统安装在电动汽车 与交流电线网络的连接 上 电动车电池上的小功率直流电源装置 直流充电器充电桩的功能 可以实时监 测和电池充电状态的控制 同时 直流充电桩可在电荷测量 充电桩连接在电动汽 车充电的配电网的范围内 属于配送电量网络自动化技术经常放在一起同时考虑的 通信方式 通信方式是配送电量网络实现自动化的关键技术也是难点技术 在不同 条件 不同区域中 可用于通信的模式也大有不同 具体到电动汽车自动充电控制 桩体上 其通信方式包括有线通信方式和无线通信方式 电动汽车产业作为绿色交 通的一个广阔的发展前景 未来的普及速度将会非常快 所以其未来市场的前景是 相当巨大的 在全球能源危机和环境危机的背景下 政府积极推动新能源汽车的开 发和应用 因此充电站作为一个重要的发展电动汽车产业的基础设施 具有十分重 要的社会效益和经济效益 目前 电动汽车充电站已经开始在全国范围内建设 南华大学计算机科学与技术学院毕业设计 论文 第 3 页 共 57 页 1 21 2 国内和国外发展程度及当前状况国内和国外发展程度及当前状况 到目前为止 电动车自动充电站主要局限于电动巴士或汽车集团内部的中国电 动汽车充电 充电是不是真的适合不同用户的服务站网络 目前已建或在建的充电 站有如下几个 2006 年 比亚迪总部在深圳的深圳建立了第一个电动汽车充电站 2008 年 北京奥运会的第一个建设中集中国内动力电池充电站 可满足 50 纯电动 车充电需求 2009 年十月 上海市电力总公司完成了在上海投资的电动汽车充电站 该站是一座具有商业运作的电动汽车充电站 2009 年底 北京首都创业集团完成了 第一个包含完整的智能微电网北京纯电动汽车在健翔桥建设示范充电站 2009 年 12 月 31 日 第一批中国南方电网运行的电动汽车充电站 桩 在深圳建成并投入 运行 为 2 个充电站的建设规模 134 个充电桩 2010 年 3 月 31 日 国家电网公 司唐山南湖充电站建成并投入运营 是中国第一个国家电网典型设计的充电站 可 以同时为 10 个电动汽车充电操作按快充慢两种充电类型 美国在加利福尼亚州 弗吉尼亚州 建立了充电设施等场所 加利福尼亚的建 设力度最大 以 北美的空间项目 和三藩加利福尼亚 奥克兰和圣若泽 市政厅 建筑 2012 在城市商业建筑的所有居民 停车场和政府建筑安装充电桩 以促进 电荷车司机 该公司还将在该地区建设电池更换站 以方便长途司机更换电池 计 划总投资 1000000000 美元的项目 此外 第一太阳能公司在美国的加利福尼亚 101 公路建设 5 个充电站 240 V 70 的收费服务的成本 可以充满电特斯拉汽车公司 在 3 5 小时内 2009 日本有超过 100 个充电站 其中 60 集中在东京地区 日本 政府表示 为电动汽车的普及 将在三年内建设 1000 多个收费站 东京电力公司 将头部的依据和基础建设的一个封闭的 2010 北京将建设 200 多个充电站 预计 三年后将增加到超过 1000 在东京充电桩是比较流行的 建筑的路边到处 5 年神 奈川县毗邻东京计划在道路上的行驶使至少 3000 辆电动汽车 在英国 一直是伦 敦 60 免费汽车充电桩驱动电动汽车的城市 人们可以方便地在住宅附近 办公建 筑在一条繁忙的街道上或附近找到一个充电桩 享受不收费停车服务 南华大学计算机科学与技术学院毕业设计 论文 第 4 页 共 57 页 第第 2 2 章章 需求分析需求分析 2 12 1 客户端程序需求分析客户端程序需求分析 充电控制器采用三星 S3C6410 ARM11 芯片作为核心控制芯片 集成了 ARM 开发 板 tiny6410 配备 7 英寸液晶触摸屏实现人机交互和数据交换 控制器和信用卡读 卡机通信 信息 卡背面写数据 用户识别卡 控制卡 管理员卡 并给出主要 卡不同的操作权限 控制器具有保护功能的必要 包括雷击 漏电 短路 过流 过压 连锁故障 温度控制 具有运算功能的控制器 相应的定时功能 并将转变 为以 485 米的数据接口接收的充电量 最终控制人控制接触器的通断 实现对充电 过程的控制 需要控制的充电插头 开关 插头的监测 控制和记录用于无线通信 的检修门开放式控制器 数据远程传输 完成充电控制器和后端服务器通信 传输 的数据包括历史记录计费 计费信息 计费数据 同时 信息可以储存本地的控制 器 热敏打印机连接 打印数据 控制器和电度表采用 RS485 通信接口连接 07 版本 645 协议的实时采集电表数据 并计算费用 根据表的数据量在充电 充电接 口实时显示 系统架构如下图所示 用户 QT 系统程序 GUI 层 Arm Linux 操作系 统 操作系统层 桩体硬件设备 硬件设备层 控制芯片 图 2 1 系统架构图 根据分析 自动充电控制系统的流程图如下 南华大学计算机科学与技术学院毕业设计 论文 第 5 页 共 57 页 图 2 2 系统控制程序流程图 开始 用户插入卡 余额是否足够提醒用户充值 打开插座门 连接插头 检测插头链接状态 充电 实时显示充电信息 暂停充电 判断故障级 别 分级处理 再插卡 结算 数据保存 上传 事件记 录 退出 结束本次充电 20后显示初始画面 故障 显示卡号 提示输入密码 显示卡内信息及电价信息 查询历史充电记录 设置本次充电信息 刷卡扣费 按 充电记录 键 按 充电设置 键 按 返回 键 自动充满按金额充电按电量充电按时间充电 重设本次充电信息 结束本次充电 自愈型故障处理后 设备 安全性故障 掉电 雷击等致命性故障 显示本次充电信息 账户余额 打印凭条 按 打印凭条 键 提示拔掉插头关闭插座门 南华大学计算机科学与技术学院毕业设计 论文 第 6 页 共 57 页 第第 3 3 章章 概要设计概要设计 3 13 1 人机交互界面客户端程序的总体设计与思路人机交互界面客户端程序的总体设计与思路 按照功能需求 以及程序流程图的设计 系统程序分为以下九个模块进行开发 模块一 图片播放模块 说明 程序启动后 如没有发生任何事件 15 秒后自动播放图片 当有事件发生以 后 例如有人刷卡或者是对屏幕进行触屏操作 程序就会回到欢迎界面 模块二 身份验证模块 说明 当用户进行刷卡操作以后 程序进入登陆界面 要求用户输入密码进行身份 验证 身份验证模块会有用户卡的互斥 即同一张不能在不同的充电桩上同时使用 卡的死锁 用户连续输入密码错误 5 次以后系统将卡死锁 用户无法进行正常消 费 等功能的实现 模块三 用户信息显示模块 说明 按照需求 用户将被分为普通用户和管理员用户两种级别 当用户进入信息 显示模块以后 普通用户会看到当前用户余额以及电价信息 往下会进入充电设置 模块或历史记录查询模块 管理员用户往下进入到管理员信息模块 模块四 管理员信息模块 说明 这个模块只有管理员才能进入 进入这个模块以后 管理员会查看到桩体的 安装信息 电价信息以及桩体的历史故障信息 模块五 历史记录查询模块 说明 普通用户才可进入的模块 用户可以查询近一周 一个月 三个月的消费记 录 并打印 模块六 充电设置模块 该模块会预先读取电表的当前值并显示 供用户充电完成后进行对比参考 充电设置有四种充电模式的设置 1 自动充电模式 系统将预扣除 300 元 当充电金 额达到 300 或者电充满的情况下进入充电结束模块 南华大学计算机科学与技术学院毕业设计 论文 第 7 页 共 57 页 2 按金额充电模式 系统将提供用户一个输入框 输入金额进行充电 当充电金 额达到的情况下进入充电结束模块 3 按电量充电模式 输入电量进行充电 当充电电量达到的情况下进入充电结束 模块 4 按时间进行充电 系统预扣除 300 元 当充电金额达到 300 或者到达充电结束 时间的情况下进入充电结束模块 模块七 硬件检测模块 分为充电开始前检测和充电中检测 充电前检测 充电前 对 电平 插头 系统 硬件进行检测 全部正常后会进入 充电模块 充电中检测 充电中 对 电平 插头 系统 硬件进行检测 若在充电过程中硬件 出现异常就会进入充电结束模块 模块八 充电模块 该模块用两个功能 1 根据用户选择的不同充电模式会将充电数据进行实时显示 2 将充电记录实时记录进入本地数据库 以防意外断电后 无法进入充电 结束模块进行数据上传 模块九 充电结束模块 正常充电结束 显示充电的详细信息 信息的上传 用户可打印本次消费信息 异常充电结束 将消费信息记录在本地数据库中 系统重启时 将读取本地数据库 数据 并将其上传给服务器 根据以上模块的设计 控制系统的界面流程图如下 南华大学计算机科学与技术学院毕业设计 论文 第 8 页 共 57 页 开始 欢迎界面 15 秒内是否 发生事 件 登陆界面 图片播放模 块 发生事件 身份验证模块 身份验证 是否成 功 用户信息显示模块 是否是管理 员 管理员信息模块 历史记录查询模块 充电设置模块 充 电 模 块 硬 件 检 测 模 块 充电结束模块 图 3 1 系统控制程序模块流程图 南华大学计算机科学与技术学院毕业设计 论文 第 9 页 共 57 页 图 3 1 系统控制程序模块流程图 3 23 2 图片播放模块设计图片播放模块设计 程序欢迎界 面 15 秒内没有屏幕点击事件 发生 启动线程 该线程每 3 秒会生成一张图 片的 路径名 然后发出一个信号 信号同时携带了这个路径名 接受到信号并得到 这个图片路径名 播放图片 发生屏幕点击事 件 线程暂停 图 3 2 图片播放模块设计流程图 设计说明 由于在 Qt 中 非 GUI 次线程不能够有对 GUI 的操作 所以设计这个线 程只是用来发出信号 而并不是直接播放图片 当主线程接受到信号以后实现对图 片的显示动作 这样可以减少次线程的内存开销 保证程序的稳定性 程序启动后 如没有发生任何事件 15 秒后自动播放图片 当有事件发生以后 例如有人刷卡或 者是对屏幕进行触屏操作 程序就会回到欢迎界面 3 33 3 身份信息验证模块设计身份信息验证模块设计 这个模块需要用到服务器程序与系统程序的通信才能完成 服务器与客户端的 通信协议之前已有相关文档作了详细的说明 在本模块说明中就不再说明了 本模 南华大学计算机科学与技术学院毕业设计 论文 第 10 页 共 57 页 块中主要说明的是在服务器接收到系统程序有关身份验证的请求以后是如何解析命 令字并进行回复的 而系统程序在接收到服务器返回的结果以后又是如何将结果解 析并显示在界面上的 用户进行刷卡动作 刷卡机读取用户卡号后将卡号发送给系 统进入登陆界面 开始本模块 流程图如下 南华大学计算机科学与技术学院毕业设计 论文 第 11 页 共 57 页 开始 接受到查询请求 解析命令字 是否是身份 验证请求 遍历第一数组 将请求解锁的 卡号从数组中 剔除 解析出请求命令卡 号 查询死锁数 据表里是否 有该卡号的 记录 死锁数据表中存有的卡号是在用户连续输 入密码错误 5 次以后 系统会将该用户的 卡号记录进死锁数据表中 发回该卡号被死锁的信 息 用户信息数据表的查询是依据卡号和密码 来进行查询的 而卡号只有是已经经过卡 密验证以后才能由读卡器读出来 即只有 定制的卡读卡器才会读出卡号 所以如 果查询无记录表明是用户密码错误导致 查询用户信息数 据表有无记录 遍历 第二 数组 删除记 录 Y 遍历第一数 组 Y Y 返回卡被锁定的信 息 N 返回该卡号的用户名及余额等 信息 N N N 返回卡密错误的信 息 遍历第 二数组 N 第二数组增加该 卡号的记录并错 误次数记录为 1 Y 查看错误次 数 4 错误次数 1 将该卡号写进死锁数据表 Y Y Y N 是否解 锁请求 Y 图 3 3 身份信息验证模块后台服务器部分设计流程图 补充说明 系统程序向服务器发送身份验证请求以后 等待服务器发送回来的信 南华大学计算机科学与技术学院毕业设计 论文 第 12 页 共 57 页 息 根据后台服务器返回的信息得知卡号是处于死锁 互斥 还是密码不正确 或 者通过信息验证等 至于卡的互斥 死锁 以及密码验证的实现 这里不做说明 用户输入密码 获取用户输入的密码 密码长 度是否 6 位 N提示用户密码 长度不足 Y 向服务器发用户身份验证请求 接受服务器返回的结果 提示用户已 连续 5 次密 码输入错误 卡已经被死 锁 提示用户卡 已经被系统 锁定 不能在 两个设备上 同时使用同 一张卡 提示用户 密码输入 错误 请 重新输入 用户操作结束后从本地数据库读取卡号向服务器发送解锁请求 将卡号存入本地 数据库 其他模块操作 图 3 4 身份信息验证模块系统程序部分设计流程图 南华大学计算机科学与技术学院毕业设计 论文 第 13 页 共 57 页 3 43 4 用户信息显示模块设计用户信息显示模块设计 当用户通过身份验证以后 后台服务器会发送用户的相关信息以及电价信息过 来 系统程序会根据当前的时间段显示当前电价的信息 用户将被分为普通用户和 管理员用户两种级别 当用户进入信息显示模块以后 普通用户会看到当前用户余 额以及电价信息 往下会进入充电设置模块或历史记录查询模块 管理员用户往下 进入到管理员信息模块 服务器程序 返回用户信息 接收到电价查询请求 查询数据库 得到信息 向系统程序返回信息 图 3 5 用户信息验证模块后台服务器程序部分设计流程图 南华大学计算机科学与技术学院毕业设计 论文 第 14 页 共 57 页 系统程序 接收到服务器返回的用户信息 解析用户信息 判断该用户是 否为管理员用 户 查询本地数据库 得到桩体设备的编 号 Y 显示管理员卡卡号 姓名 桩体编号信 息 进入管理员信息模块 N 向服务器发送电价信 息查询请求 接收电价信息 显示用户卡号 余额 用户姓名等基本信息 以及 3 个时段的电价信息 判断当前属于哪个时段 显示当前时段及当前电价 历史记录查询模 块 充电设置模块 图 3 6 用户信息验证模块后台主控程序部分设计流程图 南华大学计算机科学与技术学院毕业设计 论文 第 15 页 共 57 页 3 53 5 管理员功能模块设计管理员功能模块设计 登陆界面 管理员基本信息界面 显示桩体 详细信息 包括桩体 设备的编 号 安装 日期等信 息 查询本地 设备信息 表 查询桩体信息查询电价 信息 向服务器发 送电价查询 请求 接收信息 判断当前时 段 显示 3 个时段电 价信息及当前时 段 当前电价信 息 查询设备故障 信息 查询本地故障 信息表 显示桩体 故障代码 以及故障 发生的日 期 图 3 7 管理员功能模块程序部分设计流程图 如上图所示 南华大学计算机科学与技术学院毕业设计 论文 第 16 页 共 57 页 管理员模块提供三个功能 1 查询桩体信息 2 查询电价信息 3 查询设备故障信息 3 6 3 6 历史消费信息记录查询模块设计历史消费信息记录查询模块设计 这个模块主要会涉及到历史消费记录数据表的设计 所以需要说明一下 在表中一个名为 history time 的表项也是记录消费结束时间的 不同的是记录的 是从 1970 年 1 月 1 日 00 00 00 到充电结束时间的秒数 当用户要查询历史记录时 系统会根据用户查询的是近一周 近一个月还是三个月 用当前的 history time 减去相应时间段 依据相减后的时间再向服务器发送查询请求 就可以得到不同时 间段的消费记录 这个查询原理在这里说明过后 以下流程图中就不再细说了 用户信息界 面 历史记录查询界 面 获取用户想要查询的时间段 向服务器发送历史记录查询 请求 接收服务器返回的历史记录 信息 历史记录显示界面 打印记录 服务器程序 接收到系统程序发送的查询请 求 是否为历史记 录查询请求 解析命令字 Y 查询数据库 返回查询信息 图 3 8 历史消费信息记录查询模块程序设计流程图 南华大学计算机科学与技术学院毕业设计 论文 第 17 页 共 57 页 3 7 3 7 充电设置模块设计充电设置模块设计 按照需求分析 充电模式分为四种 自动充满 图 3 9 自动充满模式界面截图 当用户选择这个模式以后 系统会预扣除 300 元 在用户进入到用户信息界 面以后 系统会将用户的当前账户余额存储起来 如果用户余额不足 300 后 系统会弹余额不足的提示 并返回充电设置界面 如果用户余额满足要求 则 在用户点击刷卡预付费以后 会弹出提示界面 显示将要充电的费用 要求用 户刷卡确定 按金额充电 图 3 10 按金额充电模式界面截图 当用户选择这个模式 输入想要充电的金额 同样会对用户余额进行判定 南华大学计算机科学与技术学院毕业设计 论文 第 18 页 共 57 页 如果用户余额不足输入金额后 系统会弹余额不足的提示 并返回充电设置界 面 如果用户余额满足要求 则在用户点击刷卡预付费以后 会弹出提示界面 显示将要充电的费用 要求用户刷卡确定 按电量充电 图 3 11 按电量充电模式界面截图 当用户选择这个模式 输入想要充电的度数 系统会根据当前时段的电价 对充电度数的需要花费的金额进行一次预判 如果用户余额不足输入金额后 系统会弹余额不足的提示 并返回充电设置界面 如果用户余额满足要求 则 在用户点击刷卡预付费以后 会弹出提示界面 显示将要充电的度数 要求用 户刷卡确定 按时间充电 图 3 12 按时间充电模式界面截图 在系统启动时 程序会自动将充电开始时刻的时间设置为比先当前时间多 南华大学计算机科学与技术学院毕业设计 论文 第 19 页 共 57 页 30 分钟 充电结束时刻的时间比当前时间多 90 分钟 当用户选择这个模式后 会按照上面的设置再重新设置一次 当用户自己设置时间后 系统会进行判定 规定开始时间不能超多当前时间 12 个小时 开始时间小于当前时间 则判定为 次日时间 结束时间不能超过开始时间 8 个小时 若用户设置错误 系统会弹 出提示 并自动重设 当用户设置正确点击刷卡预付费以后 同样会弹出提示 界面 显示充电开始时间和结束时间 用户确定后会提示系统将预扣除 300 元 后面的处理同上 程序流程图设计如下 充电设置界 面 选择充电模式 余额是否足够 自 动 按 金 额 按 电 量 按时间 设置是否正确 刷卡确定预付费 图 3 13 充电模式选择程序流程图 3 83 8 硬件检测模块硬件检测模块 在进入充电以前 程序会对系统硬件进行一次安全检查 包括对电平 系统异 常 以及充电插头是否连接等进行检测 当检查通过以后 进入充电模块 控制器 具备必要的保护功能 包括雷击 漏电 短路 过电流 过电压 连锁失效 温度 控制等 控制器最终需控制接触器的通断 实现对充电过程的控制 需控制充电插 头的通断 监控插头的状态 需控制和记录维修门的开启 硬件检查模块的流程图设 计如下 该模块分为两个部分 南华大学计算机科学与技术学院毕业设计 论文 第 20 页 共 57 页 充电前检测流程图 硬件检测线程流程图 硬件检测线程启 动 设置 3 个状态量 分别用来记录电平状态 插头连接状态以及系统异常状态 将这三 个状态量的初始值置为 0 检测电平状态 是否正常 电平状态量值 1 Y N 电平状态量值 是否大于 2 发出电平正 常信号 Y 检测系统是否异常 是否正常 N Y 系统异常状态量 1 系统异常状态量 值是否大于 2 发出系统正常信号 Y N 检测插头是否连 接 是否正常 N 插头已连接状态量 1 插头连接状态量 值是否大于 2 N N Y 发出插头已连接信号 Y 进入充电硬件检测流程 图 3 14 充电前硬件检测线程程序流程图 南华大学计算机科学与技术学院毕业设计 论文 第 21 页 共 57 页 充电前检测流程图 主程序流程图 进入检测电平界面 接受到电平正常信 号 进入检测系统异常界 面 接受到系统正常信 号 进入检测插头连接界 面 接受到插头连接正常信 号 进入充电模块进入充电中硬件检测流程 图 3 15 硬件检测主控程序流程图 进入充电界面 启动充电线 程 进行充电中硬件检测 正常结束充 电 接受到硬件异常信 号 异常结束充电 进入充电结束模块 结束硬件检测流 程 图 3 16 硬件检测主控程序流程图 南华大学计算机科学与技术学院毕业设计 论文 第 22 页 共 57 页 充电中检测流程图 硬件检测线程流程图 充电中硬件检 测 将电平状态 插头连接状态以及系统异常状态这三个状态量重新置为 0 检测电平检测系统检测插头 是否正常是否正常是否正常YYY 电平状态量 1 系统状态量 1 插头状态量 1 NNN 2 2 2 NNN 发出电平异常信 号 发出系统异常信 号 发出插头异常信 号 结束硬件检测流程 YYY 图 3 17 硬件检测线程程序流程图 3 93 9 充电模块设计充电模块设计 在该模块中 会开启一个读电表数值的线程 系统在用户选择充电模式后会用 一个结构体将类型和数据记录 当读电表线程启动以后 线程会根据这个结构体里 记录的类型来向系统程序发送不同的信号 从而使充电界面的显示会不同 南华大学计算机科学与技术学院毕业设计 论文 第 23 页 共 57 页 以下是主程序设计流程图 程序启动 用户信息显示模 块 记录电价信息 充电设置模块 记录用户选择的类型及相关 信息 进入充电流程 主程序动 态显示充 电进度界 面 电表读数 检测线程 充电结束 图 3 18 充电模块主控程序流程图 电表检测线程每 10 秒会读一次电表读数 除了会将这个读数与上一次读数相 减得到差值后根据充电设置类型向主程序发送不同信号外 还会将这次的充电信息 写进本地数据库 以防意外断电后无法及时上传用户的充电信息 以下是电表检测线程的流程图 南华大学计算机科学与技术学院毕业设计 论文 第 24 页 共 57 页 开始 初始化 6 个全局变 量 这 6 个变量用于记录 三个时段的充电度数 及对应的充电金额 在充电结束模块以及 写进本地数据库时会 用到 读取电表读数获得初始电 度值 获取用户选择充电类 型 读取电表值 第一次与初始电度值比较 而 后与上一次读取的电表值进行比较 得到充 电度数 获取电价信 息 判断当前时间属于哪个时段得到当前时段的电价 在对 应时段变量中记录充电度数和充电金额 将 3 个记录度数的变量求和 将 3 个记录充电金额的变 量求和 将得到的数据写进本地数据库 根据充电类型的不同发出不同的 信号 是否达到用户 的期望值 N 发送充电结束信号 Y 图 3 19 充电模块电表检测线程程序流程图 南华大学计算机科学与技术学院毕业设计 论文 第 25 页 共 57 页 补充说明 电价信息按照需求分为三个时段 峰时段 平时段以及谷时段 具体的时 段时间记录在时段表中 程序每次启动时通过向服务器发送请求获得 根据用户选 择不同的充电设置 充电线程会发送不同的信号 当用户选择 自动充电设置 线程在每次会将 3 个充电金额变量求和 如果小于 300 就向主程序 发送包含已充电电量 已充电金额的信号 按金额充电设置 线程会将 3 个充电金额变量求和 如果小于用户的输入值就向主 程序发送已充电金额占用户输入值的百分比 按度数充电设置 线程会将 3 个充电度数变量求和 如果小于用户的输入值就向主 程序发送已充电度数占用户输入值的百分比 按时间充电设置 线程会求取当前时间 如果小于用户期望的结束时间 并且充电 金额小于 300 就会向主程序发送包含当前时间的信号 3 103 10 充电结束模块设计充电结束模块设计 充电结束模块分为两种情况 充电正常结束 系统会将本次消费记录上传服务器 同时删除本地数据库记录的充电记录 成功以 后返回欢迎界面 充电异常结束 系统在重启后会先读取本地数据库的数据 将记录上传给服务器成功后删除本地数 据库记录 并显示登录界面 以下是程序流程图 南华大学计算机科学与技术学院毕业设计 论文 第 26 页 共 57 页 程序进入充电结束模 块 充电正常结 束 获取 6 个全局变量数 值 在充电结束界面显示 各个时段充电信息 以及总的充电信息 将本次充电记录上传 数据库 删除本地数据库充电 记录 打印记 录 返回欢迎界面 充电异常结 束 异常是否导 致程序重启 N Y 程序重新启 动 读取本地数据库数 据 将充电记录上传服务 器 删除本地数据库记录 显示欢迎界面 图 3 20 充电结束模块程序流程图 南华大学计算机科学与技术学院毕业设计 论文 第 27 页 共 57 页 3 113 11 本地数据库设计本地数据库设计 考虑到在进行充电时会发生一些异常情况导致主控制程序死机重启或者与后台 服务器中断连接 而用户此时又正在充电 这时就需要暂时先把用户的卡号信息 消费信息存储于本地数据库 当系统恢复正常后 会读取本地数据库的信息上传给 后台服务器 因为运行在开发板上的最后的程序 那么使用 sqlite3 数据库设计本 地数据库 根据需求分析 1 设计一个名为 deviceNum 的数据表用于保存桩体的编号 2 设计一个名为 cardNum 的数据表 当用户进行刷卡以后 讲该卡号存储在这 个数据表里 为了防止在充电途中因意外断电或系统因异常重启而无法正常完成充 电时 向服务器发送卡的解锁请求 当系统重新启动后 会读取数据表里的卡号 向后台服务器发送解锁请求 3 设计一个名为 ErrInfo 的数据表用于保存每次系统发生异常时的故障代码 故障代码设计如下 ERR 00 黑名单 ERR 01 卡空间配置无效 ERR 02 人员类别信息无效 ERR 03 基本信息扇区密码错误 ERR 04 消费扇区密码错误 ERR 05 基本信息累加和校验失败 ERR 06 限制信息累加和校验失败 ERR 07 用户余额丢失 ERR 08 卡类型错误 ERR 09 设置卡信息数据校验错误 故障代码用于在管理员对系统进行登录时 在故障信息界面进行显示 4 设计一个名为 consumeInfo 的数据表用于在充电时实时记录充电信息 其表项 包括充电日期 卡号 充电电量 充电金额 充电开始时间 充电当前时间 用户 当前余额 该表用于在充电发生异常的情况下 记录好用户的消费信息并保存在本 地 当系统重新启动时 会首先读取本地的消费记录 上传后台服务器 南华大学计算机科学与技术学院毕业设计 论文 第 28 页 共 57 页 第四章第四章 详细设计详细设计 4 14 1 客户端程序参数和宏定义的设计客户端程序参数和宏定义的设计 define AUTO FILE 0 define MONEY FILE 1 define POWER FILE 2 define TIME FILE 3 AUTO FILE 代表自动充电模式 MONEY FILE 代表按金钱充电模式 POWER FILE 代表按电量充电模式 TIME FILE 代表按时间充电模式 当用户确定选择某种充电模式后 便进入下一个模块 下面这 5 个宏 用于记录刷卡的状态 当用户刷卡时 状态会发生状态 用于实现 充电过程中的三次刷卡 define FOR GETCARDID 0 define FOR USERPAY 1 define FOR SETTLEACCOUNTS 2 define FOR BREAK 3 define ACCEPT 0 当程序处于这个状态时 接收刷卡机发送过来 的信息 define PROTECT 1 当程序处于这个状态时 刷卡机向主程序发送 的信息系统将不予理会 当系统处于 FOR GETCARDID 状态时 代表程序处于欢迎界面 刷卡会进入登陆界面 当处于 FOR USERPAY 状态时 代表程序处于刷卡预付费界面 刷卡会进入下一界面 南华大学计算机科学与技术学院毕业设计 论文 第 29 页 共 57 页 当处于 FOR SETTLEACCOUNTS 状态时 代表程序处于刷卡结算界面或者充电界面 刷卡会进入充电结算界面 FOR BREAK 该状态待作功能扩展用 当程序处于 ACCEPT 状态时 接收刷卡机发送过来的信息 当程序处于 PROTECT 状态时 刷卡机向主程序发送的信息系统将不予理会 typedef struct int get tpye double money double power unsigned int time for get clickType 这个结构体是用来存储充电类型的 get tpye 用于记录用户选择的充电模式 以及 不同模式对应的参数 money 金额 power 电量 time 时间 typedef struct int time type QTime startTime QTime endTime double current price time allInfor 这个结构体是用于分时电价的结算 记录充电模式 开始时间 结束时间和当前电 价的 当用户充电时 会处于某个时间值段 峰时 平时 谷时 而这三个时间 段的电价是有可能不一样的 因此需要用用这个结构体来记录充电的开始时间 结 束时间 充电模式 当前电价 用于最后用户消费金额的计算 typedef struct double peakEnergy double valleyEnergy 南华大学计算机科学与技术学院毕业设计 论文 第 30 页 共 57 页 double avergeEnergy double peakCost double valleyCost double avergeCost time costInfor 这个结构体是用于记录充电信息的 分别记录峰 平 谷时的充电电量和充电 金额 define CONNECT PORT 16666 define INITIAL STATE 0 define SENT CMD STATE 1 define DATA SIZE STATE 2 define CONFIRM SIZE STATE 3 define DATA CONTENT STATE 4 define OPTIONAL STATE 5 define EXCEPTION STATE 1 以上的宏用于服务器程序的使用 关于服务器之间的通信协议 进入充电界面时 检测电表数值的线程类 4 24 2 客户端程序主要工程类的设计客户端程序主要工程类的设计 class checkDbiaothread public QThread Q OBJECT public checkDbiaothread QObject parent 0 checkDbiaothread protected void run 线程的运行函数 private 南华大学计算机科学与技术学院毕业设计 论文 第 31 页 共 57 页 double m current power 用于记录当前的电表值 int m percent 用于记录当前充电进度的百分比 QSqlDatabase m db 数据库的对象 用于将每次线程读取的电表值等信息实时记录进本地数据库 QTime m current time 用于记录当前时间 以下成员变量用于记录数据 并用于写进本地数据库 uint m history time QDateTime m datetime double m costEnergy double m costMoney double m balance QObject m parent 由于线程在结束后在主线程里绑定的信号槽会随之失效 因此需要将主线程的 指针在线程初始化的时候传进来 在本线程类的构造函数里进入信号槽的绑定 这 样当新的线程创建后仍然有效 int getTheTime 用于判断当前输入哪个时段的成员函数 signals void percentEnergy int 用于发送百分比进度的信号 当处于按电量 按金额充电的模式下会发出这 个信号 void complite 用于发送充电结束的信号 void connectSqlite QString 由于在此线程里不能对数据库进行操作 因此将数据库的操作语句生成以后以信 号发出去由主线程进行写入操作 南华大学计算机科学与技术学院毕业设计 论文 第 32 页 共 57 页 void autoType double double 当处于自动充电模式下 会发出这个信号 用于充电界面的更新 void timeType QDateTime 当处于按时间充电模式下 会发出这个信号 下面为主控程序连接服务端的函数类 class Client public QObject Q OBJECT public explicit Client QObject parent 0 signals void toReadContent void toCopeDBData 得到服务器返回的信息后发出的信号 private QTcpSocket m tcpsocket 用于创建链接服务器的对象指针 int con state 用于记录当前服务器状态 int m receiveLength 用于记录服务器发送过来的数据长度 char pData 用于接收服务器发送过来的数据的数组指针 int m flag 用于服务器的状态保护变量 若上一次的数据还没有处理完成 新的数据又 发送了过来就要进行数据读取的互斥 QString m strDBQuery 用于接收主程序要发送给服务器的求情命令信息 QString m strDBRecord 南华大学计算机科学与技术学院毕业设计 论文 第 33 页 共 57 页 将服务器发送过来的数据转成 QString 后的存储变量 public slots void connectTcpServer 用于连接服务器的槽函数 void sendDBQuery QString strCmd 向服务器发送请求的函数 void connectedServer 初始化服务器状态 并显示连接建立 void acceptDBData 数据接收完并处理完以后的数据的清理函数 void readMessage 客户端从服务器接收到回复及数据后的处理函数 void sendMessage void sendCmd char pStr 请求信息发送函数 void sendContent const QByteArray void sendLength int length QString dealWithData 得到服务器返回的信息数据并将其返回 充电模式设置界面类函数 class ConfigPage public QWidget Q OBJECT public explicit ConfigPage QWidget parent 0 Qt WindowFlags f 0 ConfigPage Ui ConfigPage getUi void init elect 南华大学计算机科学与技术学院毕业设计 论文 第 34 页 共 57 页 程序初始化时 读取当前电表值 public slots void getcurrentclick 得到当前的充电设置模式 并将相应的信息存储起来 void setValue QString 用于小键盘输入的函数 void resetTime int 当点击按时间充电模式时 自动重置开始时间和结束时间的函数 void dealwithErrSetS Time 当用户开始时间设置错误后 进行的错误处理函数 void dealwithErrSetE Time 当用户结束时间设置错误后 进行错误错里的函数 signals void which click for get clickType 用于发出存储有当前用户设置信息的信号 void time click QDateTime QDateTime 用于发出存储有按时间充电模式的开始时间信息和结束时间信息 void setStartTimeErr 开始时间设置错误时发出的信息 void setEndTimeErr 结束时间设置错误时发出的信息 private Ui ConfigPage ui QTime m time QTime m startTime QTime m endTime 下面为充电完成结算界面类设计 class DonePage public QWidget 南华大学计算机科学与技术学院毕业设计 论文 第 35 页 共 57 页 Q OBJECT public explicit DonePage QWidget parent 0 Qt WindowFlags f 0 DonePage Ui DonePage getUi void init 将充电结束后用户的消息信息进行显示的初始化 private Ui DonePage ui double m Power 用于存储实际充电度数 s double m FactMoney 用于存储实际消费金额 void init elect QString m record 用于接收服务器返回的信息的成员变量 public slots void donepage getDBdata 结束界面除了将用户的充电信息显示在将界面上以外 还会将本次充电的信 息上传给服务器 分别上传两次 一次为更新用户余额信息 void donepage dealWithData 当服务器返回的信息表示数据库更新成以后 程序会调用这个函数将本地数 据库的信息删除 void printSlip 当用户点击打印以后调用这个函数打印消费记录 void done getUnlock 充电结束后 用于向服务器发出解锁卡号的请求 南华大学计算机科学与技术学院毕业设计 论文 第 36 页 共 57 页 signals void donepage get record 界面初始化后发出的信号 由于用户需要在触摸液晶屏上进行密码 充电金额 充电电量 充电开始时间及充 电结束时间的设置 因此需要设计一个数字键盘提供给用户进行输入信息 数字键盘界面类 class KeyBoard public QWidget Q OBJECT public KeyBoard QWidget parent 0 Qt WindowFlags f 0 Ui KeyBoard getUi KeyBoard private Ui KeyBoard ui private slots void digit0Clicked void digit1Clicked void digit2Clicked void digit3Clicked void digit4Clicked void digit5Clicked void digit6Clicked void digit7Clicked void digit8Clicked void digit9Clicked 当不同的数字被点击时 会调用以上不同的槽函数 发出携带不同数值的信号 在文本框上进行不同数值的显示 void enterClicked 南华大学计算机科学与技术学院毕业设计 论文 第 37 页 共 57 页 void pointClicked 小数点键被点击调用的函数 void backspaceClicked 退格键被点击调用的函数 signals void sendValue QString 以上函数被调用后都会发出这么一个信号 根 据按键的不同 信号参数中的数值会不一样 南华大学计算机科学与技术学院毕业设计 论文 第 38 页 共 57 页 第五章第五章 系统测试系统测试 5 15 1 测试目的测试目的 软件测试的目的是从用户角度出发 通过测试发现软件中存在的问题 并 解决所发现的问题 软件测试试图以最少的代价发现软件分析 设计和编码中存在 的各种不同类型的错误 从而提高软件质量 降低软件成本 当然 测试只能发现 程序中有错误 但并不能找出软件中所有的错误 即使实施了非常严格的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论