欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    四轴飞行器无线通讯模块及上位机设计(23页).doc

    • 资源ID:37134635       资源大小:369KB        全文页数:22页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    四轴飞行器无线通讯模块及上位机设计(23页).doc

    -四轴飞行器无线通讯模块及上位机设计-第 22 页四缺少封面和保密协议轴飞行器无线通讯及上位机设计摘要四轴飞行器,又称四旋翼飞行器,因其起飞和降落所需空间少,在障碍物密集环境下的超控性高,以及它飞行姿态保持平稳能力强的优点,在民间和军事领域有广泛的应用前景。其中,小型四轴飞行器的研究近年来趋成熟,并未自动控制,先进传感器技术以及计算机科学等诸多技术领域的融合研究提供了一个平台。本文通过对四轴飞行器的性能指标的分析,明确设计思路及原理,围绕四轴飞行器无线通讯系统、上位机程序等的设计展开讨论,并确定可行方案。最终提出使用以2.4MHz2.4GHz的无线遥控对其四轴飞行器进行通讯,使用的是NRF24L01无线通讯模块,四轴飞行器的上位机则用QT进行设计以达成目的。本次毕业设计主要通过设计上位机控制的飞行器,掌握控制系统的一般设计方法,熟悉常用的元器件,对所学单片机知识进一步强化,了解电路调试仿真的基本方法,培养综合应用所学理论知识来指导设计的能力。关键字:四轴飞行器,无线通讯,计算机科学Quadrotorswireless communications and software designAbstractAxis aircraft, also known as four-rotor aircraft,Rotary-wing air-crafts have many military and civilian applications due to their requiring small areas for taking off and landing,great maneuverability in Obstacle-heavy environment and great ability to maintain the position and orientation.The research of small scale quad rotors,one kind of rotary wing air-crafts,have gradually become mature in recent years,and also provided an important platform for investigations in such fields as the autonomous control,advanced sensor technology and computer science. This paper analyzes the performance of four-axis aircraft, a clear design ideas and principles, around quadrocopter wireless communications system designed PC program like to discuss and identify possible options. Finally proposes the use of a wireless remote control aircraft 2.4MHz its axis of communication, using wireless communication module NRF24L01, four aircraft of the PC is used to achieve the purpose of designing QT.The graduation project is mainly controlled by the PC design aircraft, master control system design methods are generally familiar with common components, to further strengthen the learning MCU knowledge to understand the basic method of circuit simulation and debug, develop comprehensive application theoretical knowledge ability to guide the design.Key words: Quadrocopter, Wireless communication, Computer Science目录第一章 绪论41.1 四轴飞行器的发展和现状41.2 无线通讯概念41.3 上位机概念5第二章 单片机下位机设计72.1 主要芯片72.2 无线模块82.2.1 主要特点82.2.2 引脚功能82.2.3 工作模式102.2.4 工作原理102.2.5 配置字112.2 SPI协议122.3 单片机的通讯技术132.3.1并行通信132.3.2 串行通信142.4 串行通信的方式162.4.1 单工模式162.4.2 半双工模式162.4.2 全双工模式172.3 系统电路设计182.4.1 控制器无线模块182.4.2 四轴飞行器无线模块192.4 下位机程序设计21第三章 基于QT的上位机设计223.1 Qt工具简介223.2 Qt窗口部件233.3 Qt对象模型233.4 Qt的容器类243.5 Qt2D绘图243.5.1基本图形的绘制和填充253.5.2 坐标系统253.5.3 其他绘制26第四章 系统整体调试274.1 系统整体流程设计274.2系统调试294.3 调试结果分析29第五章 结束语30小四 宋体第一章 绪论1.1 四轴飞行器的发展和现状章节标题参考qq群里格式文档四轴飞行器是四桨、非共轴多旋翼飞行器,属于多旋翼飞行器的一种,是一种典型的、完全利用电子控制手段取代机械控制手段的飞行器之一。四轴飞行器的空气动力学原理与传统固定翼飞行器及基于桨距控制的直升机系统有很大的区别:在动力来源上,四轴飞行器直接由旋翼产生升力,而不是由机翼产生升力;在姿态控制上,四轴飞行器不是通过改变机翼或者旋翼的空气动力学结构,而是通过协调各旋翼转速而实现飞行器的姿态控制。四轴飞行器使用电子飞行器控制系统,因而彻底抛弃了传统飞行器复杂的机械控制部件,在相当程度上简化了飞行器结构和重量,也极大的降低了制造成本及装配难度;除此之外,其独特的空气动力学原理也使之具备里垂直起降能力,能够完成对其他飞行器而言非常困难甚至不可能完成的任务。正是由于四旋翼飞行器在机体体积、隐蔽性、垂直起降、定点悬停和低速飞行等方面体现出来的不可置疑的优势,因而在侦查监视、同性中继、电子干扰、武器攻击等军事领域和交通监视和应用价值,已经成为目前除了扑翼飞行器外最有前途、最有潜力的微型飞行器之一。1.2 无线通讯概念无线通讯的原理是电磁波信号可以在空气中可以传播的特性进行信息交换的一种通讯方式。本次毕业设计利用的无线通讯模块是NRF24L01(如图1.1),它是一款新型单片射频收发器件,工作的频率在2.4 GHz2.5 GHz ISM之间。里面包含了频率合成、功率放大、晶体振荡、调制等功能,并具有增强型ShockBurst技术。nRF24L01优点是耗电低,发射时和接收时候的工作电流分别只有9mA跟16mA。NRF24L01具有自动重发丢失数据包的功能和自动产生应答信号的功能。这能够确保信号发射成功。NRF24LO1具有SPI接口 ,可以和具有硬件SPI功能的单片机连接或者单片机I/O口进行模拟。方便与51这类没有硬件SPI的单片机进行连接。图1.1 NRF24L011.3 上位机概念上位机是指可以直接发出操控指令的计算机,一般是PC机,屏幕上显示温度,压强,高度,等信号。下位机是从现在设备或者传感器或取信息的仪器一般是PLC或者单片机。上位机发送指令给下位机,下位机受到指令后执行指令,一般是读取现场设备的状态。就好比PC机发送信号给单片机然后单片机发送信号给四轴飞行器,控制它完成各种动作。同时四轴飞行器也可以转化成相应的数据反馈给上位机。上下位机都需要编程。都有专门的开发系统。在概念上上位机是用来控制和提供服务的,相反来说,下位机是被控制者和被提供服务者。也可以理解为主机和从机的关系,但是上位机和下位机是可以转化的。工控机、上位机、工程师站等都是自控术语,工控机是负责现场控制的机器,从字面上就能看出来,上位机的管理功能要高于工控机,上位机就是工控机的管理机构,可以由工程师或者管理人员来操作,具有对工控机修改参数、简单程序,统计多台工控机数据和报表功能的管理计算机。图1.2上下位机的通讯一般都由下位机来决定,TCP/IP一般是支持的,下位机一般它都具有自己很独特的通讯协议,而它的通讯协议一般都在你买下位机附带的光碟里面,通过观看便可以知道它的通讯协议。实际上它们的通讯协议仅仅是API函数的不同,它们都有支持多语言的功能,也支持高级语言为上位机语言。通常上下位机的通讯可以采用不同的协议可以有串口RS232通信协议或者也可以采用串口RS485通信协议。通信协议可以采用封装好的开发工具就可以实现下位机和上位机之间的通信,但是也可以自己编写驱动类的程序协议编写上下位机之间的通信。本次课题是运用RS232作为上下位机的通信协议来控制上下位机之间的通信。第二章 单片机下位机设计2.1 主要芯片本课题使用的是由INTEL公司生产的STC89C52单片机和意法半导体公司生产的STM32芯片来控制NRF24L01无线模块,STC89C52作为控制器的芯片(如图2.1),而STM32则作为四轴飞行器的主芯片,两者之间通过NRF24L01来通讯。STC89C52芯片是对于单片机初学者来说最适合的一款芯片,简单易学。它具有32个双向的I/O口,3个16位的定时计数器,还具有内部512K的数据储存器8K片内程序储存器,还具有中断功能。具有空闲掉电的模式,这可以之时芯片在部工作时候耗电量更少。STM32是32位的微型控制器,它的功能十分强大,耗能也极低,非常适合四轴飞行器的主芯片。本课题采用的是STM32F103(如图2.1)增强型芯片,它具有72MHz的时钟,2.0到3.3V的供电电压和I/接口的驱动电压。除此之外它也具有低功耗的模式,比如掉电模式,待机模式,和空闲模式。本身自带ADC转换模块,不再需要添加ADC转换芯片,极大的节省了空间同时最多具有112I/O口,这致使它能够实现很复杂的功能。同时具有11个定时器和3个SPI通道。可直接利用其SPI功能与NRF24L01进行通讯。所以是四轴飞行器主芯片的不二之选。 图2.12.2 无线模块NRF24.L01当选取无线模块时候,起初有两个方案,一个是HC-05蓝牙模块,二就是本次最终选择的NRF24L01模块,不选择HC-05蓝牙模块是因为传输距离不够,而且有手机限制。而NRF24L01模块传输距离短则几十米长则上千米,而且价格低廉。它还具有自动重发的功能。而四轴飞行器的无线通讯对距离有很大的要求。所以NRF24L01非常适合作为四轴飞行器的无线通讯模块。2.2.1 主要特点 NRF24L01具有自动应答和自动再发射功能;它的片内会自动生成CRC校验码;数据传输率为l Mb/s或2Mb/s;SPI速率为0 Mb/s10 Mb/s;NRF24L01有125个频道:兼容其他NRF24L01系列的射频模块;1.9 V3.6 V为它的供电电压。2.2.2 引脚功能CE:使能发射或者接收;CSN,SCK,MOSI,MISO,SPI引脚端,微处理器可通过此引脚配置NRF24L01;IRQ:中断标志位;VDD电源输入端;VSS电源地;XC1,XC2:晶振振荡器引脚;ANT1,ANT2:天线接口;VDD_PA:为功率放大器供电,输出为1.8V;IREF:参考电流输入。如图2.2。三个图,使用三个不同的图号:图2.2 图2.3 图2.4图2.22.2.3 工作模式通过配置寄存器可将nRF241L01配置四种工作模式如表一所示。表1 NRF24L01工作模式工作模式PWR_UPPRIM_RXCEFIFO寄存器状态接受模式111发射模式101数据在TX FIFO 寄存器发射模式10 10停留在发送模式,直至数据发送完待机模式101TX FIFO 为空待机模式1-0无数据传输掉电模式0-在调试程序时候可以将它在不工作时候转为待机模式1,在这个模式下它的晶振是不工作的;待机模式2进入的要求是FIFO寄存器为空加上把CE置高;在待机模式下,所有的配置字都会跟着保留。所有模式下掉电模式功耗最小,nRF24L01在此模式下不工作,但配置寄存器的值会保留。2.2.4 工作原理当快要发射信号时候把nRF24L01配置为发射方式:然后将有效数据TX_PLD和节点地址TX_ADDR依照SPI的时序写入NRF24L01的缓冲区当中,当CSN为低时TX_PLD写入缓冲区,并且TX_ADDR写入一次就可以了,然后把CE置成高电平并且要让它持续的时间为10s以上才有效,之后要延迟130s后发射数据;当发射数据后NRF24L01会自动的进入接受模式,等待接受对面发来的应答信号。如果接收到应答信号的话,那么这一次通讯就算是成功了。之后TX_DS会自动的置高,TX FIFO中的TX_PLD会清除。如果没有收到应答信号,NRF24L01会一直重新发射数据,当重发数据的次数达到一定上限,MAX_RT置高,TX FIFO中的数据会保留住等待下次发送;当MAX_RT或TX_DS置高时,IRQ变低,产生中断,通知MCU。发射成功时,CE为低则进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。接收数据时,首先配置为接收模式,接着延迟130s进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。2.2.5 配置字SPI口为同步串行通信接口,最大传输速率为10 Mb/s,传输时先传送低位字节,再传送高位字节。但针对单个字节而言,要先送高位再送低位。相应的状态和数据信息是从MISO输出给MCU。 nRF24L0l所有的配置字都由配置寄存器定义,这些配置寄存器可通过SPI口访问,常用的配置寄存器如表2所示。表2 配置寄存器地址(H)寄存器名称功能00CONFIG设置24L01工作模式01EN_AA设置接收通道及自动应答02EN_RXADDR使能接收通道地址03SETUP_AW设置地址宽度04SETUP_RETR设置自动重发数据时间和次数07STATUS状态寄存器,用来判定工作状态0A0FRX_ADDR_P0P5设置接收通道地址10TX_ADDR设置发送地址(先写低字节)1116RX_PW_P0P5设置接收通道的有效数据宽度2.2 SPI协议SPI是串行、全双工、同步、基于字符通道的四线外围接口。它主要应用与单片机同各外围器件间的通信,或者主机系统中的MCU之间的通信。当处理器的片内I/O功能或存储器不足以供系统使用时,也用SPI扩展I/O功能。这也是扩展I/O功能的最方便,最简单的方法,突出的优点是需要3到4条线就能够实现扩展I/0口功能。主要特点有:(1) 可被编程为主模式或从模式。(2) 支持主、从模式。(3) 全双工,四线同步传输。(4) 支持多主模式。(5) 可编程的相位时钟和极性时钟。(6) 可发送的结束中断标志。SPI协议是四线同步通讯协议。其四条信号线是:MISO,MOSI,SCLK,SPISEL,如图3.1。图2.1在通讯时SPI可以被初始化为主模式或者从模式。当SPI工作在主模式是,SPI产生从模式的SPI使能信号SPISEL和同步时钟信号SCLK:当SPI工作在从模式时,SPI接受外部的SPISEL和SCLK信号。SPISEL信号由SPI的SPISEL端参数,接到SPI的SPISEL端。当SPI工作在主模式时,这个信号端不用,否则会参数错误。这个信号端是用于使能SPI从机。工作在从模式的SPI的SPISEL端,收到低电平信号后,在时钟SCLK节拍下,开始工作。包括发生移位寄存器,接受移位寄存器,发送FIFO,接受FIFO。当工作模式时的SPI的SPISEL端,收到一个高电平后停止工作,不再理会同步时钟信号。(1)MOSI SPI总线主机输出/ 从机输入(SPI Bus Master Output/Slave Input)。(2)MISO SPI总线主机输入/ 从机输出(SPI Bus Master Input/Slave Output)。(3)SCLK SPI时钟信号,由主设备产生。(4)CS 从设备片选信号。2.3 单片机的通讯技术计算机之间的通信方式有并行通信和串行通信两种。在单片机系统中,一般都是采用串行通讯方式,因为它只需要2根线,极大节省了空间。2.3.1并行通信并行通讯特点是每一位都要通过数据线相连,还有询问应答信号线如图2.1所示。黑底框图打印出来非常难看有时间修改为白底黑字,可使用PS等画图工具 图2.18位数据总线的通信系统,一次传送8位数据,需要8根数据线,此外还需若干条控制信号线。这种通信方式只适用于短距离数据传送。并行通信的特点是控制简单、传输速度快,但由于传输线较多,所以长距离传送成本高,而且通信双方的各位同时和发送存在困难。2.3.2 串行通信串行通信是将数据分成一位一位的形式在一条传输线上依次传送,这种传送方式只需要一条数据线、一条公共信号线和若干条控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要传送8次才能完成一个字节数据的传送,如图2.2所示。图2.2串行通信的必要过程是:发送时,需要把并行数据转换成串行数据发送到传输线上,接收时,要把串行数据转换成并行数据,这样计算机才能处理,因为计算机内部的数据总线是并行的。串行通信的特点是传输线少,长距离传送成本低,但数据的传送控制比并行通信复杂。串行通信又分两种方式:异步通信和同步通信。异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程 。在异步通信方式中,数据是以字符(构成的帧)为单位进行传输的,字符与字符之间的间隙是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隙”的整数倍关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。异步通信方式中,一帧信息由四部分组成:起始位、数据位、校验位、停止位,如图2.3所示。 图2.3在异步通信方式中,首先发送起始位,起始位用“0”表示数据传送的开始;然后再发送数据,从低位到高位逐位传送;发送完数据后,再发送检验位(也可以省略);最后发送停止位“1”,表示一帧信息发送完毕。起始位占用一位,用来通知接收设备一个字符要发送,准备接收。线路上不传送数据时,应保持为“1”。接收设备不断检测的状态,若在连续收到“1”以后,又收到一个“0”,就准备接收数据。数据位可根据情况取5位、6位、7位、或8位,但通常情况下为8位,方式时低位在前,高位在后。校检位(通常是奇偶校检)占用一位,在数据传送中也可不用,由用户自己决定。停止位用于向接收设备表示一帧字符信息发送完毕。停止位通常可取1位、1.5位或2位。在异步通信方式中,两相邻字符帧之间可以没有空闲位,也可以若干空闲位,由用户决定。异步通信的特点是不要求收发双方时钟严格一致,实现容易,设备开销小,但每个字符要附加2-3位,用于起始位、校检位和停止位,各帧之间还可能有间隙,因此传输效率不在单片机与单片机之间,单片机与计算机自己通信时,通常采用异步串行通信。同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。在同步通信中,数据开始传送前用同步字符使收发双方取得同步,然后传送数据。同步传送时字符与字符之间没有间隙,也不用起始位与停止位,仅在数据块开始时用同步字符SYN(ASCII码位16H)指示,CRC为校验码。同步通信数据帧格式如图2.4所示。图2.42.4 串行通信的方式2.4.1 单工模式在单工制式下,通信线的一端接发送器,一端接接收器,只允许一个方向的数据传送,不能实现反响传输。如图2.5所示。 图2.52.4.2 半双工模式在半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,使用一条(或一对)传输线,如图2.6所示。半双工制式允许两个方向传输数据,但不能同时传输,需要分时进行,如当S1闭合时,数据从A到B;当S2闭合时,数据从B到A。图2.62.4.2 全双工模式全双工制式通信系统的每端都有发送器和接收器,使用两条(或两对)传输线,允许两个方向同时进行数据传输 ,如图2.7所示。图2.72.3 系统电路设计PC通过USB转串口与STM32相连。PC上位机程序将数据通过USB转串口传给单片机,单片机设置好NRF24L01的工作状态后将数据帧通过SPI接口传给NRF24L01.NRF24L01便会自动发送。PC 51 NRF24L01 NUF24L01 STM32接收端MCU从NRF24L01数据缓冲区获得数据帧后,进行数据完整性校验合格后解帧将数据发往USB,若不合格则令其重发。合格数据通过USB2.0全速接口又上位机程序接收处理。四轴飞行器STM32单片机控制的,STM32单片机通过无线模块与51单片机进行通信,再经过串口和PC机电脑上位机进行通信,这样构成一个整体。2.4.1 控制器无线模块控制器无线模块主芯片是STC89C52单片机,上文已介绍。最小系统由复位模块,电源模块,以及12M晶振构成。电源模块直接引出VCC,GND由串口供电。晶振电路产生时钟频率,单片机中要实现中断功能则必须具有晶振。无线模块NRF24L01硬件接口与51单片机的硬件接口对应为:CE>P1.5;CSN>P1.0;SCK>P1.4;MOSI>P1.1;MOIS>P1.3;IRQ>P1.2。通过51单片机I/O口模拟SPI时序来驱动NRF24L01工作。同时将发送给四轴飞行器的数据通过51单片机控制的显示模块NOKIA5110(如图2.8)显示出来。图2.8NOKIA5110显示模块可以显示15个汉字和30个字符,价格低廉,相比与LCD1602和LCD12864来说性价比更高。除此之外NOKIA5110的I/O接口只有8个,仅仅4跟线就可以驱动。NOKIA5110的速度比LCD1602和LCD12864的速度都要快。NOKIA5110显示屏连接STC89C52的P0口。根据这些硬件关系,利用DXP软件绘制原理图跟PCB图。2.4.2 四轴飞行器无线模块四轴飞行器无线模块主芯片型号STM32103C8T6,上文已介绍。四轴飞行器起飞是一个很复杂的任务。因此所需要的芯片要求功能强大,耗电量小,体形轻薄。STM32芯片完全符合该要求。四轴飞行器无线模块由STM32芯片最小系统、无线模块NRF24L01、显示模块NOKIA5110、电源模块构成。STM32最小系统同STC89C52单片机最小系统一样由复位电路、电源电路、8M晶振电路构成。电源模块加了一个LM1117电压调节器。以便提供3.3V电压给STM32芯片供电。除此之外,还能够给电压要求3.3V的NRF24L01无线模块供电。根据此硬件关系绘制原理图跟PCB图图2.8图2.92.4 下位机程序设计无线模块的数据提取信息并打包发送给串口开始下位机初始化等待数据有数据输入串口数据判断格式正确上位机数据打包入无线模块发送结束下位机的功能就是实时发送四轴飞行器的一些需要直观检测的数据同时还要接收上位机的数据命令将数据发送给四轴飞行器来达到控制命令与接收命令的双重功能。其程序流程图如图3.1所示。图3.1第三章 基于QT的上位机设计Qt上位机软件的设置主要实现的功能是接收下位机单片机的实时数据并且在界面上显示出来并且绘制波形图。同时可以随时发送数据包指令给下位机控制命令。3.1 Qt工具简介在PC机上安装了Qt 4.8.4版本的SDK,包含了几个很有用的工具,分别是Qt Assistant(Qt助手),Qt Designer(Qt 设计师),Qt Exmaples and Demos(Qt演示程序与示例)和Qt Linguist(Qt语言家)。(1)Qt Assistant(助手) Qt Assistant是可配置且可重新发布的文档阅读器。Qt Assistant已经被整合进Qt Creator。它的功能有:定制Qt Assistant并与应用程序一起重新发布;快速查找关键词、全文本搜索、生成索引和书签;同时为多个帮助文档集合建立索引并进行搜索;在本地存放文档或在应用程序中提供在线帮助。(2) Qt Designer(Qt设计师)Qt Designer是强大的跨平台GUI布局和格式构建器。由于使用了与应用程序中将要使用的相同部件,可以使用屏幕上的格式快速设计、创建部件以及对话框。使用Qt Designer创建的界面样式功能齐全可以预览。(3) Qt Exmaples and Demos(Qt演示程序与示例)这里列举了Qt自带的所有示例程序和演示程序。其中,示例程序就是前面讲到的Qt Creator欢迎模式中的示例程序。(4) Qt Linguist(Qt语言家) Qt Linguist提供了一套加速应用程序翻译和国际化的工具。Qt使用单一的源码树和单一的应用程序二进制包就可同时支持多个语言和书写系统,主要功能有:收集所有UI文本并通过简单的应用程序提供翻译人员;语言和字体感知外观;通过智能的合并工具快速为现有应用程序增加新的语言;Unicode编码支持世界上大多数字母;在运行时可切换从左向右或从右向左的语言;在一个文档中混合多种语言。3.2 Qt窗口部件Qt Creator中所有的窗口部件都继承自QWidget。QWidget类是所有用户界面对象的基类,被称为基础窗口部件。本设计中用到的窗口部件有QFrame类、QLabel类、按钮部件QCheckBox、标准按钮QPushButton、行编辑器QLineEdit,文本编辑器QTexEdit类。3.3 Qt对象模型 标准C+在对象模型可以在运行时非常有效地支持对象范式,但是它的静态特性在一些问题领域中不够灵活。图形用户界面编程不仅需要运行时的高效性,还需要高度的灵活性。为此,Qt在标准C+对象模型的基础上添加了一些特性,形成了自己的对象模型。信号和槽用于两个对象之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的最突出特征。在GUI编程中,当改变了一个部件时总是希望其他部件也能了解到该变化。更一般来说,我们希望任何对象都可以和其他对象进行通信。例如,如果用户单击了关闭按钮,则希望可以执行窗口的close()函数来关闭窗口。为了实现对象之间的通信,一些工具包中使用了回调(callback)机制,而在Qt中使用了信号和槽来进行对象间的通信。当一个特殊的事情发生时便可以发射一个信号,比如按钮被单击;而槽函数就是一个函数,他在信号发射后被调用来响应这个信号。Qt的部件类中已经定义了一些信号和槽,但是更多的做法是子类化这个部件,然后添加自己的信号和槽来实现想要的功能。声明一个信号要用关键字signals,在signals前面不能使public,privateProtected等限定符,因为只有定义该信号的类及其子类才可以发射该信号。而且信号只用声明也不能对于它进行定义实现。还要注意,信号没有返回值,只能是void类型的。然后是声明一个槽,声明一个槽需要使用slots关键字。一个槽可以是private,public,protected类型的,槽也可以声明为虚函数,这与普通的成员函数是一样的,也可以像调用一个普通函数一样来调用槽。槽的最大特点就是可以和信号关联。对与信号和槽必须使用SIGNAL()和SLOT()宏,它们可以将其参数转化为const char*类型。3.4 Qt的容器类(1)Qt库基于模版的容器类这些容器类可以用来存储指定类型的项目,例如,如果需要一个QString类型的可变大小的数组,那么使用QVector。Qt提供了一些顺序容器:Qlist、QLinkedList、QVector、QStack和QQueue。因为这些容器都是一个接一个线性存储的,所以被成为顺序容器。对于大多数应用程序而言,使用最多的就是QList,虽然它是作为一个数组列表,但是它在头部和尾部进行添加操作是很快速的。如果需要使用一个链表,那么可以使用QLinkedList;如果希望数据项可以占用连续的内存空间,可以使用QVector。而QStack和QQueue作为便捷类,分别提供了先进后出(LIFO)和先进先出(FIFO)语义。(2)遍历容器类遍历一个容器可以使用迭代器(iterators)来完成,迭代器提供了一个统一的方法来访问容器中的项目。Qt的容器类提供了两种类型的迭代器:JAVA风格迭代器和STL风格迭代器。如果只是按顺序遍历一个容器中的项目,那么还可以使用Qt的foreah关键字。每一个容器类都有两个JAVA风格迭代器数据类型:一个提供只读访问一个提供读写访问。STL风格迭代器兼容Qt和STL的通用算法,而且在速度上进行了优化。对于每一个容器类,都有两个STL风格迭代器类型:一个提供了只读访问另一个提供了读和写访问。3.5 Qt2D绘图Qt中提供了强大的2D绘图系统,可以使用使用相同的API在屏幕和绘图设备上进行绘制,主要基于QPainter、QPaintDevice和QPaintEngine这3个类。其中QPainter用来绘图操作;QPaintDvice提供绘图设备,是一个二维空间的抽象,可以使用QPainter在其上进行绘制;QPainteEngine提供了一些接口,可以用于QPainter在不同的设备上进行绘制。它们三者的关系如图3.2所示。QPainterdeiceQPainterengieQPainter图3.23.5.1基本图形的绘制和填充绘制系统中由QPainter来完成具体的绘制操作,提供了大量高度优化的函数来完成GUI的编程所需的大部分绘制工作。QPainter可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形还可以用来绘制文本和图QPainter可以在继承自QPaintDevice类的任何对象上进行绘制操作。QPainter一般在一个部件重绘事件的处理函数中绘制,首先要建立QPainter对象,再进行图形的绘制,最后销毁QPainter对象。3.5.2 坐标系统Qt的坐标系统是由QPainter类控制的,而QPainter是在绘图设备上绘制的。绘图设备类QPainterDevice是所有可以绘制的对象的基类,它的子类主QWidget、QPixmap、QPicture、QImage和QPainter等。一个绘图设备的默认坐标系统中原点(0,0)在其坐上角,x坐标向右增长,y坐标向下增长。在基于像素的设备上,默认的单位是一个像素,而在打印机上的默认单位是一个点(1/72英寸)。QPainter的逻辑坐标与绘图设备的物理坐标之间的映射由QPainter的变换矩阵、窗口和视口处理。逻辑坐标与物理坐标是默认一致的。QPainter也支持坐标变换例如旋转和缩放。(1)基本变换默认的,QPainter在相关的设备的坐标系统上进行操作,但是完全支持仿射(affine)坐标变换。绘图时可以使用QPainter:scale()函数缩放坐标系统,使用QPainter:rotate()函数顺时针旋转坐标系统,使用QPainter:translate()函数平移坐标系统,可以使用QPainter:shear()围绕原点来扭曲坐标系统。坐标系统的2D变换由QTransform类实现,可以使用前面提到的那些便捷的函数进行坐标变换,当然也可以通过QTransorm类实现;而且QTransform类对象可以存储多个变换操作,当同样的变换需要多次使用时,建议使用QTransform类对象。坐标系统的变换是通过变换矩阵实现的,可以在平面上交换一个点到另一个点。进行所有变换操作的变换矩阵都可以使用QPainter:worldTransform()函数获得,如果要设置一个变换矩阵,可以使用QPainter:setWorldTransform()函数,这两个函数也可以分别使用QPainter:transformation()和使用QPainter:setTransform()函数来代替。(2)窗口视口转换使用QPainter绘制时会使用到逻辑坐标,然后再转换为绘图设备的理坐标。逻辑坐标到物理坐标的映射由QPainter的worldTransform()函数、QPainter的viewport()以及window()函数进行处理。其中,视口表示物理坐标下制定的一个任意矩形,而窗口表示逻辑坐标下的相同矩形。默认的,逻辑坐标和物理坐标是重合的,都相当于绘图设备上的矩形。3.5.3 其他绘制(1)绘制文字除了绘制图形之外,还可以使用QPainter:drawText()函数来绘制文字,也可以使用QPainter:setFont()设置文字所用的字体,使用QPainter:fontInfo()函数可以获得字体的信息,它返回QFontInfo类对象。在绘制文字时会默认使用抗锯齿。(2)绘制路径如果要绘制一个复杂的图形,尤其是要重复绘制这样的图形,那么可以使用QPainterPath()来进行绘制。QPainterPath类为绘制操作提供了一个容器,可以用来创建图形并且进行重复使用。一个绘图路径就是有多个矩形、椭圆、线条或者曲线等组成的对象,一个路径可以是封闭的,例如矩形和椭圆;也可以是非封闭的,例如线条和曲线。(3)绘制图像Qt提供了4个类来处理图像数据:QImage、QPixmap、QBitmap和QPicture,都是常用的绘图设备。其中QImage主要用来进行处理I/O处理,对I/O处理操作进行优化,而且也可以用来直接访问和操作像素;QPixmap主要用来在屏幕上

    注意事项

    本文(四轴飞行器无线通讯模块及上位机设计(23页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开