QT-GUI程序设计.ppt_第1页
QT-GUI程序设计.ppt_第2页
QT-GUI程序设计.ppt_第3页
QT-GUI程序设计.ppt_第4页
QT-GUI程序设计.ppt_第5页
免费预览已结束,剩余82页可下载查看

下载本文档

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

文档简介

内容摘要 QT概述QT特性与安装QTCreator使用QT程序设计QT核心机制QT常用类及控件QT物联网平台参数配置程序分析QT串口编程QT编程实战 POS缴费系统设计QTPOS客户端设计POS缴费系统后台设计 什么是QT Qt是一个用C 编写的跨平台开发框架 它包括跨平台类库 集成开发工具和跨平台IDE 一次编码 只需重新编译 便可在不同桌面 不同平台上部署速度快 不需要虚拟机设计界面漂亮 有人认为比VISUALC 强的多 而且简单 QT用途嵌入式设备消费电子桌面系统QT支持的平台 QT用途及支持平台 面向对象 Qt的良好封装机制使得Qt的模块化程度非常高 可重用性较好 对于用户开发来说是非常方便的 Qt提供了一种称为signals slots的安全类型来替代callback 这使得各个元件之间的协同工作变得十分简单 QT模块 Qt由模块构建所有的模块都有一个共同的方案 并由相同的API设计思路构建 QtCore Phonon QtXmlPatterns QtXml QtWebKit QtSvg QtSql QtScript QtOpenVG QtOpenGL QtNetwork QtMultimedia QtGui QT常用模块 QtCore Qt4的基本模块 定义了其他模块使用的Qt核心的非GUI类 所有其他的模块都依赖与该模块 QtGui 定义了图形用户界面类 QtNetwork 定义了Qt的网络编程类 QtSql 定义了访问数据库的类 QtSvg 定义了显示和生成SVG ScalableVectorGraphics 类 QtXml 定义了处理XML eXtensibleMarkupLanguage 语言的类 QtDesigner 定义了扩展Qt设计器 QtDesigner 的类 该模块使得程序员能够为Qt设计器创建自定义的Qt窗口部件插件 widgetplugins 和创建能够访问Qt设计器组件的类 QtUiTools 定义了在应用程序中直接处理ui UserInterface 文件的类 它使得应用程序能够在运行时使用ui文件构建用户界面 QtAssistant 为应用程序提供了加载Qt助手 QtAssistant 以支持在线帮助 onlinehelp 的功能 Qt3Support 定义了同Qt4以前版本Qt3兼容的类 以使得Qt3的程序能够更容易地移植到Qt4 QtTest 定义了对Qt应用程序和库进行单元测试 unittesting 的类 QtScript 该模块提供了对脚本的支持 QTC 扩展 Qt对C 的扩展主要是3个方面 元对象系统Qt用宏 macros 如signal slot 和内省 introspection 扩展了C 包含Q OBJECT宏的文件 h cpp等 需要moc预处理资源系统 qrc文件 需要rcc进行预处理界面系统 ui文件 需要uic进行预处理所有的代码仍然是简明C QT目的 从一份代码构建的跨平台应用简单地 重复 使用API 高开发效率 开放性 使用有趣根据不同平台的本地观感生成相应的本地应用 WindowsmacOSLinux X11 商业与开源 LGPL 免费你的应用程序可以是开源的或者是不开源的对Qt的修改 必须反馈到社区GPL 免费你的应用程序必须是开源的对Qt的修改 必须反馈到社区商业的 收费你的应用程序可以是不开源的对Qt的修改 可以不开源 QT版本 时间win x1119961 019992 020013 020054 0现在4 8QT大版本之间不兼容 同一个大版本之间兼容 比如 3 0和4 0不兼容 4 6和4 7之间是兼容的 QT产品 QT Embedded Qt Embedded是一个完整的自包含基于Linux平台的GUI和嵌入式平台开发工具 包含了早期的版本Qtopia 面向手机 PDA等消费电子产品 不依赖于庞大的Xlib 直接在Linux帧缓冲基础上开发GUI QT桌面版基于Windows Linux QTSDK组成 自4 5版开始 Qt首次以SDK形式发布了Qt套件 并在单独的安装程序中包含了完整的QtSDK 包括 QtCreator 跨平台IDENokia全力打造QtCreator 将以前单独列出的QtDesigner QtAssistant QtLinguist全部整合到QtCreator中 作为QtCreator的一部分 QTSDK组成 QtLibrary是一个拥有超过400C 类 同时不断扩展的库 它封装了用于端到端应用程序开发所需要的所有基础结构 优秀的Qt应用程序接口包括成熟的对象模型 内容丰富的集合类 图形有户界面编程与布局设计功能 数据库编程 网络 XML 国际化 OpenGL集成等 QtDesigner是一个功能强大的GUI布局与窗体构造器 能够在所有支持平台上 以本地化的视图外观与认知 快速开发高性能的用户界面 QtAssistant是一个完全可自定义 重新分配的帮助文件或文档浏览器 又称作Qt助手 QTSDK组成 QtLinguist是一套用来消除国际化工作流程中所带来障碍的工具 又称作Qt语言家 QT开发工具qmake 生成 pro文件makefileuic UICompiler 将ui文件转化成C文件认识的 h文件moc 是一个用来生成一些与信号和槽相关的底层代码的预编译工具rcc 编译资源文件为二进制代码 QT安装 SDK获得从 QT安装 Linux下安装 建议安装到FC14以后版本用root用户登录到系统将安装文件上传到linux下修改文件属性 改成可执行属性 chmod777qt sdk linux x86 opensource 2010 04 bin qt sdk linux x86 opensource 2010 04 bin出现图形画面后 点下一步 直到安装完成 一般会默认装在 opt qtsdk 2010 04目录下 也可以在安装时制定目录 QT安装 Linux下安装完成后修改环境变量在 etc profile文件末尾加上下面四行 exportQTDIR opt qtsdk 2010 04 qtexportPATH QTDIR bin PATHexportLD LIBRARY PATH QTDIR lib LD LIBRARY PATH以上改动注意 不论是PATH还是库路径 全要放在原来值的前面 让系统第一个找到新安装的QT可执行文件 和QT库 第一行是qt这个目录所在的路径 第二行是qmake及uic可执行程序的路径 第三行是一个库的路径 编辑完成后 保存 退出 使环境变量立即生效 执行 source etc profile确定qt是否可用 qmake v 看到qt版本信息 说明安装成功 QT安装 Windows下安装直接双击qt sdk win opensource 2010 04 exe安装文件 点下一步 系统缺省安装在C Qt 2010 04目录下环境变量设置1 编辑Path补上Qt的bin路径 C Qt 2010 04 bin C Qt 2010 04 qt bin C Qt 2010 04 mingw bin即可 其中 X 对应安装Qt的硬盘盘符 我是安装在C盘下的 2 新建环境变量 名称 QTDIR内容 C Qt 2010 04 qt3 新建环境变量 名称 QMAKESPEC内容 C Qt 2010 04 qt mkspecs win32 g QTCteator QtCreator是全新的跨平台集成开发环境 IDE 专为Qt开发人员的需求量身定制 它包括 1 高度智能的代码编辑器支持代码高亮以及自动完成功能 2 Qt4工程向导 ProjectWizard 使用ProjectWizard 用户可以轻松创建基于控制台的应用程序 GUI应用程序以及C 类库等多种类型的工程 3 集成帮助功能在QtCreator中可以查阅相关的Qt文档和示例程序 4 集成QtDesigner功能 5 模块间智能导航 来准确定位文件信息 6 使用qmake进行工程管理 7 集成调试器 QtCteator主界面 QtCreator的组成QtCreator主要由以下组件构成菜单 MenuBar 模式选择器 ModeSelectors 项目浏览器 ProjectInspector 代码编辑器 CodeEditor 输出面板 OutputPane 边栏 Sidebar 快速导航面板 QuickOpenPane QTCreator的模式选择欢迎模式 welcommode 编辑模式 editmode 设计模式 designmode 调试模式 debugmode 项目模式 projects 完成对项目属性的设置帮助模式 helpmode QTCreator的输出模式 1 构建过程和结果 BuildIssues 显示与构建相关的信息 如警告信息 错误信息等 搜索结果 SearchResults 子面板提供了执行搜索动作后的结果输出显示 搜索的范围可以是全局的 也可以是具体局部的 Application应用程序输出的控制台 比如qdebug打印出来的调试信息 Compile编译输出子面板显示编译的错误输出 QT简单应用实例 1 打开Qtcreator 欢迎界面出现两个按钮Openprojects CreateProject 1 选择CteateProject 2 选择QtC Project QtGuiApplicationation 3 这里也可以创建其他类型的工程程序 QT简单应用实例 2 点Choose选择工程所在的目录 同时输入工程的名称C Qt 2010 04 qtprojects目录 工程名称为helloqt点next 下一步 QT简单应用实例 3 注意这个地方输入ClassName和BaseClass选择 BaseClass可以是QMainWindowQWidgetQDialog 即可以使主窗口类 控件类 及对话框类 这里我们选择QMainWindow 也可以选QDialog 点next 直到finish完成 QT简单应用实例 4 此时左面一列 处在Design这个页面上 左面第二列是常用的可视化控件 中间是主窗口 我们可以把控件用鼠标拖动到主界面上 比如我们在主窗口中放一个标签 和一个按钮 如下 IDE最右面的上面是窗口各个部分的控件关系 比如 如果我们不需要菜单的话 我们可以用鼠标右键点击MenuBar 然后选择RemoveMenuBarIDE最右面的下面是当前选中控件关心标签的名称 和标签的TextObjectNameLabelText 输入我们自己的标签 第一个QT程序HelloWorld 可以将标签拉大点再在Buttons里边拉一个按钮上去 将按钮的标签改成OK最后给两个控件设置垂直布局 按住Ctrl选中两个控件 然后点击工具栏中的三个竖线的布局按钮LayoutVertically 布局完成 设置控件tab顺序 Edit Edittaborder 第一个Helloworld程序做好了 选择File saveall保存 QT简单应用实例 6 QT为我们生成了如下文件 Helloqt pro 工程文件Mainwindow ui 控件布局文件 XML形式的文件 最终生成特殊的ui mainwindow h头文件Uic oui mainwindow hmainwindow uiMainwindow h 主窗口类声明的头文件Mainwindow cpp实现mainwindow h中的主类Main cpp qt程序的主程序Mainwindow cpp 主窗口类的实现 所有的代码都在MainWindow cpp里实现的 如果想实现窗口里边的控件动作 需要定义信号和槽机制实现 signal slot 信号和槽机制 是QT编程的主要机制 QT简单应用实例 7 Main cpp include include mainwindow h intmain intargc char argv QApplicationa argc argv MainWindoww 定义的主窗口类的一个实例 w show 把主窗口显示出来returna exec 进入应用类的消息循环 Ui mainwindows h中定义setupUI方法 生成Form中定义的窗口控件 Mainwindow cpp include mainwindow h include ui mainwindow h MainWindow MainWindow QWidget parent QMainWindow parent ui newUi MainWindow ui setupUi this MainWindow MainWindow deleteui 编译 运行 编译 选择菜单Build BuildAll注意点击屏幕输出窗口里的compileoutput 查看编译过程中是否有错误 注意看运行 选择菜单Build Run 或者直接选择IDE最左面一列的下面Run按钮 如果程序有输出 选则Applicationoutput输出窗口 给OK按钮增加一个点击事件的槽函数 在Design画面中 鼠标右键点击OK按钮 出现菜单 然后选择gotoslot 选中Clicked 点击OK按钮 添加槽函数 Mainwindow h中添加函数体声明Mianwindow cpp中增加了空函数体 其中我们添加对程序退出的调用close voidMainWindow on pushButton clicked this close QT跨平台移植 将刚才的Helloqt目录传到Linux下的某一个目录 比如说 root qtproject目录 cdhelloqt采用命令行模式编译如下 1 先生成Linux下的工程文件 那么原来的工程文件helloqt pro会改名成helloqt pro user命令如下 qmake project 2 生成Linux下的Makefile文件 用qmake命令 qmake 3 用Make命令编译工程文件 make 4 运行 helloqt点击OK按钮 程序退出结论 只要重新编译 我们的代码就可以再Linux下运行 体现了QT的跨平台特性 QT程序设计一般方法 1 创建并初始化子窗口部件 2 将子窗口部件放置到布局当中 3 对Tab的顺序进行设置 4 放置信号和槽的连接 5 完成槽的功能 休息讨论时间 QT核心运行机制 Meta ObjectSystem 元对象系统 SignalsandSlots 信号和槽 Qt sPropertySystem QT属性系统 元对象系统 元对象系统是QT对C 的一种扩展 它提供了两个关键服务 信号 槽 运行时的类型信息和动态属性系统 内省机制 元对象系统这样工作 Q OBJECT宏声明一些内省函数 metaObject TR qt matacall 和少量其他的函数 这些函数必须在所有的QObject的子类中被实现 Qt的moc工具负责执行被Q OBJECT宏声明的函数 同时负责执行所有的信号函数 QObject的成员函数 例如connect 和disconnect 使用内省函数来工作 元对象系统组成三要素 QObject类作为每一个需要利用元对象系统的类的基类 QObject是大部分Qt类的基类Q OBJECT宏定义在每一个类的私有数据段 用来启用元对象功能 比如 动态属性 信号和槽元对象编译器moc theMetaObjectComplier moc分析C 源文件 如果它发现在一个头文件 headerfile 中包含Q OBJECT宏定义 然后动态的生成另外一个C 源文件 这个新的源文件包含Q OBJECT的实现代码 这个新的C 源文件也会被编译 链接到这个类的二进制代码中去 因为它也是这个类的完整的一部分 元对象数据 Inadditiontoprovidingthesignalsandslotsmechanismforcommunicationbetweenobjects themainreasonforintroducingthesystem themeta objectcodeprovidesthefollowingadditionalfeatures QObject metaObject returnstheassociatedmeta objectfortheclass QMetaObject className returnstheclassnameasastringatrun time withoutrequiringnativerun timetypeinformation RTTI supportthroughtheC compiler QObject inherits functionreturnswhetheranobjectisaninstanceofaclassthatinheritsaspecifiedclasswithintheQObjectinheritancetree QObject tr andQObject trUtf8 translatestringsforinternationalization QObject setProperty andQObject property dynamicallysetandgetpropertiesbyname QMetaObject newInstance constructsanewinstanceoftheclass moc特征提取过程 classMyClass publicQObject Q OBJECTQ CLASSINFO author JohnDoe public MyClass constFoo Moc编译过程 元数据通过元对象编译器 moc 在编译时组合在一起 moc从头文件里面获得数据 sources cpp executables objectfiles o headers h generatedmoc cpp QtC 生成过程 includes compiles links compiles mocs 元对象系统实现 元对象系统实现基于Qobject类生成子类在子类中调用O OBJECT宏定义信号和槽处理函数使用QObject作为基类而不使用Q OBJECT宏和元对象代码是可以的 但是如果Q OBJECT宏没有被使用 那么这个类声明的信号和槽 以及其他特征描述都不会被调用 信号和槽 1 信号和槽机制 是Qt自行定义的一种应用于对象之间通信的高级接口 当一个特定的事件发生时 一个或几个被指定的信号就被发射 槽则是响应信号的函数 如果存在一个或几个槽和该信号相连接 那在该信号被发射后 这些槽就会立刻被执行 信号和槽并不是标准C C 语言的特性 它是Qt对C 特性的一种扩展 采用信号和槽机制编写的代码不能直接被标准C 编译器编译 而需要借助一个被称为moc MetaObjectCompiler 的Qt工具对信号和槽在编译之前进行预处理 信号和槽 2 信号 一种用于对外通知对象自身状态改变的技术 在Qt中由关键字signals来声明 它的形式类似于一个函数 但是返回值只能是void类型 发射信号的关键字是emit 信号只需要声明不需要实现且只能由本类及其子类发射信号不需要定义访问权限 其权限类似protected 槽 是一种可以用来连接到信号的成员函数 信号发射时 它所连接的相应的槽将被执行 槽也可以作为普通的成员函数来使用 当槽作为普通成员函数使用时 需要定义访问权限 当槽作为响应信号函数使用时 访问权限无效 其权限类似public 信号和槽 3 信号和槽的关系调用关系一个信号和一个槽进行单独连接 几个信号连接在同一个槽上 一个信号和多个槽连接 一个信号和另一个信号进行连接 参数传递 信号和槽通常可以带任意的参数 但要求 它们的参数类型和个数都是一样的如果信号携带的参数比槽的多 则多余的参数将会被忽略 信号和槽携带的参数不能是模版 函数指针 也不能有默认值等 编写通过滑块改变分数的例子 Signal和Slot的声明 1 2 在Qt程序设计中 凡是包含signal和slot的类中都要加上Q OBJECT的定义classStudent publicQObject Q OBJECTpublic Student myMark 0 intmark const returnmyMark publicslots voidsetMark intnewMark signals voidmarkChanged intnewMark private intmyMark Signal和Slot的声明 2 2 signal的发出一般在事件的处理函数中 利用emit发出signal 在下面的例子中在在事件处理结束后发出signalvoidStudent setMark intnewMark if newMark myMark myMark newMark emitmarkChanged myMark Signal和Slot的连接 1 2 在signal和slot声明以后 需要使用connect 函数将它们连接起来 boolQObject connect constQObject sender constchar signal constQObject receiver constchar member static 其中第一个和第三个参数分别指出signal和slot是属于那个对象或组件 Signal和Slot的连接 2 2 在使用connect 函数进行来接的时候 还需要用到SIGNAL 和SLOT 这两个宏 使用方法如下 QLabel label newQLabel QScrollBar scroll newQScrollBar QObject connect scroll SIGNAL valueChanged int label SLOT setNum int Signal和Slot的连接方式 Signal和Slot的自动关联 使用Designer 它很便捷地在接口和用户代码之间提供自动关联 on objectname signalname signalparameters on addButton clicked on deleteButton clicked on listWidget currentItemChanged QListWidgetItem QListWidgetItem 通过调用QMetaObject connectSlotsByName触发 QT常用类 QObject 1 4 QObject是Qt类体系的唯一基类 是Qt各种功能的源头活水 就象MFC中的CObject和Dephi中的TObject对象树 QObject在对象树中组织它们自己 当你以另外一个对象作为父对象来创建一个QObject时 它就被添加到父对象的children 列表中 并且当父对象被删除的时候 它也会被删除 这种机制很好的适合了图形用户界面应用对象的需要 事件 事件是由窗口系统或qt本身对各种事务的反应而产生的 当用户按下 释放一个键或鼠标按钮 一个键盘或鼠标事件被产生 当窗口第一次显示 一个绘图事件产生 从而告知最新的可见窗口需要重绘自身 大多数事件是由于响应用户的动作而产生的 但还有一些 比如定时器等 是由系统独立产生的 QT常用类 QObject内省方法 2 4 QObject的内省函数 metaObject 得到某类的元对象指针className 返回类的名字 inherits 返回值bool 确定是否是某一基类的派生类connect 连接信号和槽函数disconnect 释放信号和槽QObject总结Qt是通过QObject QMetaObject类实现其内省机制 QObject暴露给用户的共有自省方法有objectName inherits isWidgetType 等大多数自省方法是QObject派发给QMetaObject实现 e g QMetaObject className 元对象模型编译器moc负责自省方法的实现更多自省方法定义在QMetaObject 而是为了等信号槽通讯 事件派发等机制 QT常用类 Application 3 4 QApplication和QWidget都是QObject类的子类 QApplication类负责GUI应用程序的控制流和主要的设置 它包括主事件循环体 负责处理和调度所有来自窗口系统和其他资源的事件 并且处理应用程序的开始 结束以及会话管理 还包括系统和应用程序方面的设置 对于一个应用程序来说 建立此类的对象是必不可少的 QT常用类 Widdget 4 4 QWidget类是所有用户接口对象的基类 它继承了QObject类的属性 组件是用户界面的单元组成部分 它接收鼠标 键盘和其它从窗口系统来的事件 并把它自己绘制在盘屏幕上 QWidget类有很多成员函数 但一般不直接使用 而是通过子类继承来使用其函数功能 如 QPushButton QlistBox等都是它的子类 QT事件运行机制 模块部件类 窗口类主窗口类 QMainWindow有工具模式和帮助窗 拖动 关闭 QDockWidget提供工具的使用 QToolBar对话框类 QDialog网络编程设计QTcpSocket QTcpServer QUdpSocketI O相关类QBuffer QFile QFtp QHttp QSocket QTextStream QSetting数据库部件QSqlDatabase脚本部件QScriptClass线程部件QThread日期与时间定时器 QDate QTime QTimer 常用控件 QString和char 之间的互相转换CheckBox 检查框RadioButton 单选按钮QComboBox 组合框lineEdit 单行文本编辑框QSpinBox 步进按钮pusbButton 按钮 QString 中文QT类文档msg boolisNull constboolisEmpty constuintlength constinttoInt bool ok 0 intbase 10 constconstchar ascii const obsolete constchar latin1 constQCStringutf8 constQCStringlocal8Bit const QStringList QStringList定义一个字符串数组主要方法操作符 operator 在列表末尾添加值x 返回这个列表的引用 QStringListComList ComList COM1 COM2 COM3 COM4 COM5 COM6 COM7 COM8 Returnsthenumberofitemsinthelist Size Count checkBox CheckBox常用方法 boolisChecked 返回值为true 表示选中返回值为false 表示未选中setChecked boolb Ifbistruethecheckboxischecked ifbisfalsethecheckboxisunchecked Lable 标签主要掌握一个方法即SetText voidsetText constQString 注意setText参数是QString类型的 char 类型的字符串需要明确编码 调用QString的方法进行转换 例如 ui label 4 setText QString fromLocal8Bit 登录中 就可以正确显示中文了 fromLocal8Bit会根据当前中文编码进行转换 不论是UTF 8还是GBK编码都可以正确转换 QRadioButton和QGroupBox 需要先放一个GroupBox 然后把RadioButton拖到GroupBox中 形成一组 这样就构成了单选按钮 每次只能选中一个 可以在某一个按钮上设置缺省选中的状态 属性checked打钩 常用的方法boolisChecked const 返回值true 选中 false未选中voidsetChecked bool 参数true设置选中转台 false取消选中状态 QComboBox组合下来框 设置组合框中的项目的方法手工添加法 双击组合框 点击 号 添加选项 程序添加AddItem constQString 获取 lineEdit单行文本框 方法 QStringtext constvoidsetText constQString 注意 text的返回值和setText的参数都是QString格式 转换成char 格式的 SpinBox 属性 步长增大或减小按钮 注意最大值最小值和步长属性minimum maximum singlestep常用方法 分别获取当前spinbox的值和设置当前spinbox的值 Intvalue constvoidsetValue intval 信号voidvalueChanged inti voidvalueChanged constQString text 当spinbox的值变化时 会发出以上两个信号 可定义相应的槽函数处理这个信号 QT实战小项目 简易计算器 利用spinbox combox Label 设计一个简单的计算器 放入2个spinbox 分别相应valueChanged int 信号的槽函数 每个槽函数中把2个spinxbox的当前值取出来根据Combox中的操作符 进行2个数的运算将运算结果显示在 号后面的标签中 休息讨论时间 QT网联网平台配置程序 ZigbeeCfg主要功能 利用串口和物联网平台通讯设置zigbee节点的属性 通道PANID号设备类型 协调器 路由器 传感器类型 温度 湿度 红外线 zigbeecfg主要模块 Zigbeecfg h头文件串口线程类classSerialMonitorThread publicQThread public SerialMonitorThread ZigBeeCfg pParent QThread pParent pParent virtualvoidrun private ZigBeeCfg pParent 配置类classZigBeeCfg publicQWidget Q OBJECTpublic ZigBeeCfg QWidget parent 0 ZigBeeCfg i ZigBeeCfg ui Win QextSerialPort myCom QStringgCom intgBaud intgChannel intgPanid intgDevtype intgSensortype privateslots voidon ResetButton clicked Zigbeecfg主要流程 Zigbeecfg 构造函数中初始化各个控件 并创建串口线程pThread newSerialMonitorThread this 点击 连接串口 按钮 按按钮对应的槽函数new一个串口类 并且调用open打开串口 根据串口参数初始化串口 同时启动串口线程 一直在等待接收串口数据 Zigbeecfg和zigbee协议栈平台遵循一定的数据接口约定 比如说串口数据都是以 02开头 长度 命令 数据 选择设备阶段需要配置的信息 点击相应的按钮 把数据发送到zigbee平台Zigbee平台返回处理结果 配置程序进行校验 挑战 将此程序移植到Linux平台 主要是更换串口读写部分win 开头的程序和头文件 换成posix 开头的文件 QT下串口编程 网上下载qtserial类 qextserialport 1 2win alpha zip在windows下只需要使用其中的6个文件 qextserialbase cpp和qextserialbase h qextserialport cpp和qextserialport h win qextserialport cpp和win qextserialport h如果在Linux下只需将win qextserialport cpp和win qextserialport h换为posix qextserialport cpp和posix qextserialport h即可 QT串口类主要方法 qextserialport cpp程序中实现串口打开 关闭 读写 virtualboolopen OpenModemode virtualvoidclose virtualvoidflush virtualqint64readData char data qint64maxSize virtualqint64writeData constchar data qint64maxSize 调试运行zigbeecfg 将zigbeecfg rar解压到C Qt 2010 04 qtprojects目录下 双击zigbeecfg pro即可打开该工程文件如果放的目录不同 需要修改projects属性 POS缴费系统设计 模块划分POS终端前台设计 Linux平台下QT实现可视化界面POS后台设计 Linux平台下服务端程序设计主要功能 模拟POS终端实现查询 缴费 消费三个交易 后台多进程程序设计获得用户卡号和密码及交易金额 发起交易后台及时响应处理交易结果返回给客户端主要技术Linux下串口编程 TCP编程 QT编程 多进程守护程序编程 电力收费系统框图 注 本项目是此系统的子集 电力收费系统架构解析 这是一个电力多元化缴费系统架构图 系统通过终端设备 营业站终端 现金自助设备 POS设备 电话机 采用现金 银行卡 充值卡进行电费缴纳 欠费消张等功能 增加缴费自助渠道 缓解电力营业厅缴费压力 业务流程 终端发起交易报文综合前置收到报文 启用子进程处理交易 前置与综合服务平台进行通讯 实现用户缴费 电费销帐 返回结果给前置 前置响应 终端信息 系统通讯报文约定 1 电文长度 此项长度为4字节 用于指示一段完整电文的长度 它为是整型长度的字符串格式吗 举例来说 一个报文的长度是整型122个字节 那么此处的4个字节就是 0122 此长度是起始到校验和的总长度 因此整个报文的长度是 电文长度 4个字节 2 起始位 一个字节 用以同步终端 收费平台间通讯的数据位 一般定为 02 3 交易数据 涉及应用的具体数据 交易数据由公共部分和私有部分组成 数据的具体组织方式见 交易数据的公共部分 和 交易数据的私有部分 下个页面 4 停止位 一个字节 对应起始位 一般定位 03 5 校验和 一个字节 用以确保终端 收费平台间电文正确传输的手段 计算校验和时不包含起始位和停止位 就是交易数据的校验和 计算方法 异或 数据格式如下图 交易数据设计 公有数据 1 3 交易数据部分的各元素 如果没有特殊说明 都是char类型公有部分数据 有请求部分 和响应部分 交易码 0001 用户信息查询 返回用户名 账户余额0002 账户充值 0003 电费销帐 响应码 00

温馨提示

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

评论

0/150

提交评论