当前位置:文档之家› 毕业论文(设计)文本规范范例(理工科)

毕业论文(设计)文本规范范例(理工科)

毕业论文(设计)

题目无线电机调速装置

系部电子信息工程系

专业电子信息工程年级 2007级

学生姓名符星彪

学号 070611001 指导教师李智

无线电机调速装置

电子信息工程专业

学生符星彪指导教师李智

【摘要】在电气时代的今天,电动机在工农业生产、人们日常生活中起着十分重要的作用。直流电机是最常见的一种电机,在各领域中得到广泛应用。研究直流电机的控制和测量方法,对提高控制精度和响应速度、节约能源等都具有重要意义。电机调速问题一直是自动化领域比较重要的问题之一。不同领域对于电机的调速性能有着不同的要求,因此,不同的调速方法有着不同的应用场合。

章设计了以单片机AT89C51和L298控制的直流电机脉宽调制(PWM)调速系统。主要介绍了用单片机软件实现PWM调整电机转速的基本方法,给出了程序流程图、KeiIC5l 程序以及Proteus的仿真结果。硬件电路实现了对电机的正转、反转、急停、加速、减速的控制,以及PWM的占空比在四位LED上的实时显示。

【关键词】单片机AT89C51 直流电机脉宽调制(PWM) LED显示

PWM Regulating Speeding System of DC Motor

Based On AT89C51 Microcontroller

【Abstract】In electrical time's today, the electric motor in the industry and agriculture production, the people daily life is playing the very vital role. The direct current machine is the

most common one kind of electrical machinery, obtains the widespread application in various domains. The research direct current machine's control and the measuring technique, to increase the control precision and the speed of response, the frugal energy and so on have the important meaning. A problem about speed-modulation of DC motor is very important in the field automatic. The requests to the effect after the speed-modulation of the DC motor are different in different fields. Then, different speed-modulation ways are using in different fields.

A kind of speed regulation system of Pulse Width Modulation(PWM)for DC motor composedof microcontroller AT89C51 and L298 was designed.The basic methods of PWM regulating DC motor speed are explained.Programs in KeilC51,program flow chart and a simulation result in Proteus are presented.Clockwise and anticlockwise rotation,quick stop,acceleration and deceleration of themotor are achieved in hard circuit.PWM duty cycles are shown on four LEDs.

【Key words】Single Chip microcontroller; DC Motor; Pulse width Modulation; LED Display

目录

绪论 (1)

1. 开发概述 (2)

1.1背景 (2)

1.2课题来源 (4)

1.3国内外研究现状 (4)

1.4论文主要工作 (7)

1.5论文结构 (7)

2. 相关技术概念 (8)

2.1关于Qt (8)

2.2 OAuth协议 (9)

2.3 豆瓣API (11)

2.4 cookies (11)

3. qDou的设计 (12)

3.1概要设计 (12)

3.1.1程序流程图 (13)

3.1.2模块框架图 (14)

3.1.3系统数据流程图 (14)

3.1.4系统数据结构设计 (14)

3.2系统界面设计 (18)

3.2.1 MVC模型 (18)

3.2.2 qDou中的MVC模型 (19)

3.2.3 C++向qml扩展 (20)

3.2.4 qml中调用 C++形式函数 (21)

3.3 qDou认证 (21)

3.3.1获取未授权的Request Token (22)

3.3.2请求用户授权Request Token (22)

3.3.3使用授权后的Request Token换取Access Token (22)

3.3.4使用 Access Token 访问或修改受保护资源 (23)

3.4利用NetworkAccessManager在本地储存Cookies (23)

3.4.1 NetworkCookiejar与NetworkCookie的关系 (23)

3.4.2将Cookies导入Webkit (24)

3.5 PhotoView (豆瓣关系可视化) (24)

3.5.1基于GraphicsView (24)

3.5.2豆瓣用户信息的获取数据的获取...................................................................... .25

4. 实现运行 (25)

5. 测试 (26)

总结以及展望 (28)

参考文献 (29)

附录 (32)

致谢. (33)

绪论

在实际应用中,电动机作为把电能转化为机械能的主要设备,一是要有较高的能量转换效率;二是可以根据生产工艺的需要,调整电动机的转速。电动机的调速性能如何对提高产品质量、提高劳动生产效率和节约电能有着直接的决定性影响。因此,调速技术一直是研究的热点。

直流电机由于具有速度控制容易,启动制能性能良好,且能在宽范围内平滑调速等特点而在电力、冶金、机械制造等工业部门中得到广泛的应用。直流电动机转速的控制方法可以分为两类:励磁控制法与电枢电压控制法。励磁控制法控制磁通,其控制功率虽然小但低速时受到磁饱和的限制,高速时受到换向火花和换向器结构强度的限制,而且由于励磁线圈电感较大动态响应较差。所以常用的控制方法是改变电枢端电压调速的电枢电压控制法。

传统的改变端电压的方法是通过调节电阻来实现的,但这种调压方法效率低。随着电力电子技术的发展。创造了许多新的电枢电压控制方法。其中脉宽调制是一种常用的调速方法。其基本原理就是改变电机电枢电压的接通和断开的时间比来控制马达的速度,在脉宽调速系统中当电机通电时,其速度增加,电机断开时其速度降低。只要按照一定的规律来改变通断电时间,就可使电机的速度保持在一稳定值上。

引言

在电气时代的今天,电动机在工农业生产、人们日常生活中起着十分重要的作用。直流电机是最常见的一种电机,在各领域中得到广泛应用。研究直流电机的控制和测量方法,对提高控制精度和响应速度、节约能源等都具有重要意义。电机调速问题一直是自动化领域比较重要的问题之一。不同领域对于电机的调速性能有着不同的要求,因此,不同的调速方法有着不同的应用场合。随着科技的发展,PWM 调速成为电机调速的新方式,并凭借它的开关频率高、低速运行稳定、动态性能优良、效率高等优点,在电机调速中被普遍运用。利用单片机对直流电机进行直接的控制具有准确的自动调节作用.

第1章直流调速系统的方案设计

1直流电动机

1.1 直流电动机特性

直流电动机具有良好的线性调速特性,简单的线控制性能,优异的动态特性.目前仍是大多数调速控制电动机的最佳选择.如今,随着计算机软件和硬件技术的快速发展,在许多领域都有许多的成熟的仿真软件在应用.

1.2 直流电动机的基本工作原理

直流电动机由永久磁铁、电枢、换向器等组成,如图1-1.5所示,上下是两个固定的永久磁铁,上面是N极,下面是S极,磁力从N到S。两级之间是一段可旋转的导体abcd,成为电枢。电枢的ab段与cd段分别接入两个互不接触半圆形金属片上,这两个金属片称为换向器。

在AB两端加入一个上正下负的直流电压,电流由a到b,由c到d。根据左手定则,ab两段在自上而下的磁力线的作用下,向左移动,cd段向右移动。在两个力的作用下,abcd电枢开始逆时针旋转,因为换向器和电枢固定在一起,它也跟着转动。当电枢转过180°时,cd在上方,ab段在下方,电流由d到c,由b到a。根据左手定则,cd段在由自上而下的磁力线的作用下,向左移动,ab段向右移动,及电枢继续往逆时针旋转方向旋转。当电枢在转过180°后,电机继续重复的转动。如果把AB端的电压方向反过来,电枢将顺时针旋转,原理同上。

社交网站在手机应用上有着良好的发展前景。

尽管资本在不断注入,国内SNS网站无一例外地面临着收入和盈利的挑战。无论是豆瓣网的“电子商务+广告”模式,还是开心网、人人网的广告模式,将用户的点击换成真金白银都存在不小的难度。对此,杨勃表示,豆瓣网不同的产品生命周期有不同的盈利目标,而营收增长很快的社区估计会是下一个实现盈利的产品。

1.3 直流电动的主要参数

额定功率Pn:在额定电流电压下,电机负载能力。

额定电压Ue:长期运行时的电压。

额定电流Ie:长期运行时的电流。

额定转速n:单位时间内电机转动的快慢。

励磁电流If:施加到电机线圈上的电流。

1.4 直流电动机的调速技术

1.4.1 调速范围

调速范围是指在一定的负载转矩下,电动机可能运行的最大转速n

max与最小的

的转速n

min之比,即

D=n

max/

n

min

1.4.2 直流电动机调速原理

直流电机的转速计算公式如下:n=(U-IR)/Kφ,其中U为电枢端电压,I为电枢电流,R为电枢电路总电阻,φ为每极磁通量,K为电动机结构参数。可以看出,转速和U、I有关,并且可控量只有这两个,我们可以通过调节这两个量来改变转速。我们知道,I 可以通过改变电压进行改变,而我们常提到的PWM控制也就是用来调节电压波形的常用方法,这里我们也就是用PWM控制来进行电机转速调节的。通过单片机输出一定频率的方波,方波的占空比大小绝对平均电压的大小,也决定了电机的转速大小。

1.4.3 调速时的容许输出

调速时的容许输出是指电动机在得到充分利用的情况下,在调速过程中轴能够输出的功率和转矩。

2.0直流电动机的调速方法

1.2 课题来源

毕业设计,选择此课题的原因有二:

1.豆瓣网作为一个有特色的社交网站,却没有一款出色的移动客户端,在已有的客户端

上有支持Andriod和iphone的,但是功能简单,相对粗糙,各个功能没有整合。豆瓣现在并不像Twiiter或者facebook那样在国外的受众面达到很广的程度,它主要还是面向的是国内的用户,而在国内众多使用NOKIA手机的豆瓣用户中唯独也缺少支持Symbian Os的豆瓣手机客户端,这未免有些遗憾。在加上随着3G的到来,整个行业都在向移动终端上转移,在不受约束的移动终端上的社交网络必将会火起来。

2.自己对Qt比较熟悉,在界面和嵌入式上深知Qt都有很大的优势,Qt也是Symbian标

准的应用开发平台而在选择课题期间,正好Qt发布了4.7技术预览版,下一代的控件是专门为移动平台打造的,所以想借这个机会一面来完成自己的毕业设计,一面掌握Declarative UI(Qml),同时自己也可以腾出时间来学习一下Symbian Os。毕竟NOKIA 收购Trolltech之后,基本上算是押宝在Qt上了,而且从Symbian 3开始,Qt将作为

标准的开发平台,这对擅长Qt做开发的我来说,也是一个好的机会。

1.3国内外研究现状

开放API(OpenAPI)是SaaS(Software as a Service,软件即服务)模式下常见的一种应用,网站的服务商将自己的网站服务封装成一系列API(Application Programming Interface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,所开放的API就被称作OpenAPI(开放API)。

网站提供开放平台的API后,可以吸引一些第三方的开发人员在该平台上开发商业应用,平台提供商可以获得更多的流量与市场份额,第三方开发者不需要庞大的硬件与技术投资就可以轻松快捷的创业,从而达到双赢的目的,开放API是大平台发展、共享的途径,让开发者开发一个有价值应用,付出的成本更少,成功的机会更多。今天,OpenAPI作为互联网在线服务的发展基础,已经成为越来越多互联网企业发展服务的必然选择。

Twitter的开放之路。

OpenAPI的典型成功范例是Google Maps API和Twitter,Google Maps有Google这样的大公司支持,成功当然并不奇怪,但是Twitter的成功就很能说明问题。事实上,如果Twitter仅仅是一个网页形式的微博客的话,Jaiku就可以轻松的将其打败,Twitter 根本不可能取得今天的成就。

Twitter的活力就在于开放API,Twitter的成功和开放API密不可分。Twitter的开放API可以激发个人创作的积极性,引来了大量的第三方应用,这些第三方应用同时又扩大了Twitter原有的功能,让Twitter更好用,从而极大丰富了Twitter平台自身的功用和乐趣,现在,Twitter超过一半的流量都是来自第三方API。

随着Twitter的OpenAPI发布数量不断增加,运营过程中也开始暴露出一些问题。OpenAPI的巨大的访问量引起了Twitter种种性能问题,使得Twitter的稳定性大为降低,为了支持大量的外部API,Twitter宕机频繁,这估计是几乎所有Twitter用户都遇到过的现象。但即使如此,Twitter也没有放弃对OpenAPI的支持。因为开放API是历史的潮流,是必然的趋势,顺之者昌,逆之者亡,Twitter之所以击败众多各式各样的微博客网站,开放API功不可没。

由于社交网络在国内起步较晚,大都处于照搬,照抄的模式(校内,开心,各大门户网站的微博),这些很拙劣的Facebook模仿者,他完全没有领会社交网络的本质,完全用自己做社区软件的思路去做一套Facebook,搞出来的UCHome压根就是一个社区网站,说通俗一点就是一个BBS。

在加之有一道很大的“墙”,看似保护了本地的互联网企业的发展,但是实质却阻碍了社交化的融合和发展。导致了我们国家的社交网络发展缓慢,缺少核心竞争力,所以一直处于跟风的状态.同时国内大型社交网站开放API的时间也较晚,所以相应的附加功能或者不同平台上的开发相对滞后,这都造成了国人没法最快,更好的使用和了解最先进的

互联网技术.豆瓣是算是比较开明的一家中国互联网企业,也是最先开放API的几个之一。独特的运营机制加上网站区分于普通的社交网站的鲜明性,是其独树一帜.在开放API之后,出现的最多的形式是浏览器与插件绑定,第三方应用诸如andriod客户端,豆花(iPhone 客户端)等一批针对移动终端的小软件,但是功能简单(有的只实现广播消息),用户体验差,在智能机大行其道的当下,已不符合当前形式下移动用户的需要.用户不仅需要的是一套功能强大集于一身的口袋软件,而且需要的是能有完美体验的UI。这才是当前移动设备不断发展,相关技术也同步支持的大趋势。随着3G的发展,传统PC向上网本,平板电脑的过渡,桌面上应用向移动转移,这也应该是以后软件发展的一个方向,同时开发数据,开放API也是网站做大做强,聚众的另一个手段。

国内的一些Twitter模仿者最初也尝试开放API,但一切好东西到了中国,没有不走样的,腾讯为了发展腾讯滔滔,就曾经屏蔽过饭否的QQ机器人,饭否虽然吃过这种苦头,然后一旦发展成为国内微博客的领先者,就干起了同样的事情,远的是屏蔽叽歪的IP,使得叽歪用户无法同步信息到饭否,近的是前些天饭否屏蔽嘀咕的IP,使得嘀咕用户无法将信息同步到饭否。

饭否的想法大概是,自己好不容易发展了这么多用户,忽然旁边跳出来一个新的竞争对手,通过OpenAPI实现了比自己更多的功能,因此为了阻止用户的流失,必须屏蔽掉竞争对手的API调用,否则,用户都跟别人跑了,自己不成了“赔了夫人,又折兵”了。

KESO曾经说过,网站不能靠限制用户离开来留住用户,越开放越让用户放心。服务商把心思花在套牢用户,而不是改善服务上,是一种很不上流的做法。老子说,大智若愚,大巧若拙。看起来很傻、很笨的做法,可能恰恰是最聪明的。同样是为了留住用户,两种做法的境界截然不同,效果当然也肯定不一样。你越自信,用户对你也就越有信心。

道理虽然简单,但是封闭意识仍然是国内网站的主流思想,生怕自己的用户跑到竞争对手那里。其实,每个用户都是有自己的头脑和思想的,你对用户好,用户自然会对你好,服务是死的,用户是活的,通过限制的方法来阻止用户的离去,最终会伤了忠实用户的心。

Facebook 成功了,而且不是小成。当初 Facebook 以校园为基础,掀起真人社交网络的时候,就引来了大量的跟风者。这个跟风还不是中国人民的专利,是全世界都在跟风。记得前段时间就有人列出了各种语言的Facebook 跟风网站。

后来,Facebook 开始开放了API,引来了大量的第三方应用在Facebook上驻扎。这甚至引起了Google这个互联网老“新秀”的警惕。开放API似乎也会开始逐步成为一种风潮。

但是,谁想做平台?谁能做平台?谁想做内容?谁能做内容?

Facebook的这种开放API,模式很简单,我出用户,你出内容。一起给用户服务。我不动你的内容,你别想动我的用户。有钱大家一起赚。

当然了,Facebook 作为平台,就像赌场里坐庄的一样。是有先天优势的。而这个先天优势,当然也是基于他前期的庞大用户基础,以及用户已经对这个平台有足够的粘性而建立起来的。

Facebook的这个模式,一眼都看的出来,作为平台的 Facebook 牢牢的占据了产业的上游。而内容服务商,是处于产业的中下游,在各种方面,都受制于Facebook。就像中国移动一跺脚,SP就死一片一样。哪天Facebook打个喷嚏,这些 Facebook 的内容提供商也都得感冒不可。谁不想占据产业的上游呢?很显然,把自己做成平台,成为了不少“类Facebook”网站的目标。

不过,平台可不是怎么好建的,平台首先就必须有牢固的用户基础和对用户足够的吸引力,否则,一开放,用户都跟别人跑了,不成了“赔了夫人,又折兵”了。另外,也有人说校内也要开放API了。

现在在WEB2.0领域,“老当益壮”的搜狐,也开始发力了。搜狐的博客搞了一个SOW,好像是有想做平台的意思。但是好像博客这个东西,也不是特别是和做平台,而且从现在看,开放的还不够。仅仅是一个 input 而已。

做不了平台,咱们就做内容吧。做内容,首先就要有内容,而且还有卖点,有技术。并且要有除了用户资源之外的“核心竞争力”。否则,有了内容,也很可能给别人做嫁衣。帮别人探路。

豆瓣也开放了API,没有深入研究,应该就是走内容服务商的样子吧。不过,豆瓣最核心的竞争力在什么地方?不是图书资料,甚至不是豆瓣拥有多么强大的技术优势。而是在用户,是在豆瓣拥有一大群很多网站所不拥有的“大量的、优质的用户群”。作为这样的网站,他适合做一个平台的内容服务商吗?或者说,他会心甘情愿的去站到一个产业的下游来觅食呢?……

开放API,是必然的趋势。但是,这个产业链的建立和健全,任重道远。尤其是在中国——这个对创意、对知识产权相对漠视的国度。

1.4 论文主要工作

qDou将主要是采用Qt的Graphics View框架编写,部分框架运用Declarative UI(Qt 的下一代控件),在与豆瓣官方数据接口的交换上,利用豆瓣提供的Api key,通过OAuth 协议进行对豆瓣数据的访问,修改以及提交。

UI方面:关于Declarative UI,是基于Graphics View框架打造的下一代控件。主要针对于移动平台上,比如手机或者上网本,并且具有独特的Flick特性,使其本身通过很简单的接口调用便可具有平滑,动态变换的UI,同时加上Declarative本身所采用的Qml语言是基于ECMAScript。这种比较松散的声明性编程语言使得懂得JavaScript或者ActionScript的编程人员,也可写出漂亮的应用程序。由于Declarative UI的属性绑定(Property Binding),对网络访问的透明(Network Transparency: 内部自动加载请求资源)以及良好的C++扩展(Extending QML),使得其不仅可适用手机上的开发,同时利用良好的C++扩展特性也可打造丰富的pc平台上的应用。

数据方面: 豆瓣提供了第三方API,通过xml文件来进行交互,而对数据进行修改,

提交的,需要适用OAuth协议进行授权,关于OAUTH协议,它为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,所以在编写qDou界面的同时,还需一个OAuth的C++版本,将OAuth与Declarative UI融合才是一个可以部署到Pc(Window ,Linux ,Mac)和移动终端上(Symbian,Maemo)上的豆瓣客户端。

本篇论文,主要目的是为了探讨QML部署到Symbian以及Maemo上的可行性,为移动终端上的社交软件的打造提供一个思路。

1.5论文结构

绪论介绍社交网络现在,国内外的社交网络发展的现状以及为什么开发移动终端上的客户端以及编写qDou的初衷豆瓣。

第二章概述以及相关技术的概念。

第三章 qDou编写所采用的相关技术。

第四章实现运行情况,以及各个模块的截图。

第五章 qDou在模拟器或者移动终端上测试的数据。

编写后的总结,提升的空间,对Declarative UI的认识以及这次编写qDou中自己编码上的一些认识。

参考文献

附录

致谢

2相关技术概念

本章将主要介绍qDou中用到的相关技术的一些背景,概念,以及发展的现状。

2.1关于Qt

Qt是一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。

自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,KDE是所有主要的Linux发行版的一个标准组件。在支持linux的同时,windows,mac,Symbian,Maeomo,你都可以通过代码的一次书写以及完成多个平台的移植。比如 Qtopia Qtembeded。

现在Qt的最新的版本为4.7。Qt 4.7的最重要的补充就是Qt Quick(Qt的用户界面

创建工具包),“高层次的UI技术,允许开发人员和UI设计师一起工作,以创建动画,触摸功能的用户界面,轻量级的应用程序”。三新技术组合到一起,形成了Qt快速创建用户界面工具包:它包括QML(Qt的元对象的语言 - 声明式语言),Qt Creator IDE中的新工具(包括一个可视化编辑器,让设计人员和开发者用一个迭代法在相同的代码上工作)和QtDeclarative(Qt的一个新的模块,它允许一个说明性编程方法)。使Qt更容易的被那些对C + +不是特别熟悉开发人员和设计师使用。

一个增强的Qt Creator IDE,其中包括一个先进的C + +代码编辑器,项目建设管理工具,可视化调试器等工具。QML(“Qt的元对象语言”),一个易于使用的,声明性语言。用来描述一个程序的用户界面:包括看起来是什么样子,以及它如何表现。QML是一个被指定为一个用户界面与性能的对象树。 JavaScript是用来作为QML的脚本语言。Qt库中的一个新的模块名为QtDeclarative,它提供了一个声明框架,用于创建高度动态的,可定制用户界面。

Qt的4.7还包括一个Qt WebKit组件的更新,以提供更加稳定和更好的性能。新版本也是首次发布,由Qt的持续集成系统控制,该系统控制合并成Qt新功能的过程。它的目的是防止新的错误,提高稳定性和加快发布时间表。因为Qt的不断发展,这将是非常重要的。

Symbian的智能安装程序可以更容易地将Qt应用部署到Symbian手机上,特别是在现有的没有安装Qt库的手机(Qt只在Symbian ^ 3成为了标准)。有了智能安装程序,开发人员不必担心包括Qt或他们应用程序对SIS文件的依赖。他们也不需要告诉用户安装额外的关文或检查Qt库的相关的安装问题。

使用智能安装程序,开发人员可以打包Symbian的Qt应用程序。当用户安装了一个.SIS文件(直接或来自像Ovi Store那样的配送点)智能安装组件将检查什么样的依赖关系是需要的(如Qt,Qt WebKit,Open C),如果有必要的话可以从网上下载并安装它们。关键的好处是,它可以确保手机获得最新版本的Qt和它的依赖关系(确保应用程序能够在最佳状态工作),而且还大大减少了SIS文件的大小,因为它不再需要包含在.SIS文件的依赖关系。这就好比ubuntu下的软件管理apt-get命令,直接从网站上下载相关的。

2.2 oAuth协议

OAuth为用户提供了一种可以不共享密码而授权第三方来访问其资源的方法。它超越了传统的客户机/服务器认证的模型,客户端的用户使用信用证书来访问服务器上的资源。OAuth为这种模型引入了一种新的第三方角色:资源所有者。在OAuth模型中,作为不是资源所有者的客户端请求访问在服务器上的资源,而资源的访问权限是由资源所有者控制的。客户必须首先向资源所有者申请许可以便访问这些资源,而这许可就以某种令牌的形式来匹配对私密信息的共享。

在弄清楚OAUTH流程之前,我们先了解下OAUTH的一些术语的定义:

OAUTH相关的三个URL:

Request Token URL: 获取未授权的Request Token服务地址;

User Authorization URL: 获取用户授权的Request Token服务地址;

Access Token URL: 用授权的Request Token换取Access Token的服务地址;

OAUTH相关的参数定义:

oauth_consumer_key: 使用者的ID,OAUTH服务的直接使用者是开发者开发出来的应用。所以该参数值的获取一般是要去OAUTH服务提供商处注册一个应用,再获取该应用的oauth_consumer_key。如Yahoo该值的注册地址为:

https://https://www.doczj.com/doc/06969561.html,/dashboard/

oauth_consumer_secret:oauth_consumer_key对应的密钥。

oauth_signature_method: 请求串的签名方法,应用每次向OAUTH三个服务地址发送请求时,必须对请求进行签名。签名的方法有:HMAC-SHA1、RSA-SHA1与PLAINTEXT等三种。oauth_signature: 用上面的签名方法对请求的签名。

oauth_timestamp: 发起请求的时间戳,其值是距1970 00:00:00 GMT的秒数,必须是大于0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。

oauth_nonce: 随机生成的字符串,用于防止请求的重放,防止外界的非法攻击。

oauth_version: OAUTH的版本号,可选,其值必须为1.0。

OAUTH HTTP响应代码:

HTTP 400 Bad Request 请求错误 Duplicated OAuth Protocol Parameter 参数重复HTTP 401 Unauthorized 未授权 Unsupported parameter 参数错误

Invalid Consumer Key 非法key Invalid / expired Token 失效或者非法的token Invalid signature 签名非法 Invalid / used nonce 非法的nonce Unsupported signature method 签名方法错误

Missing required parameter 参数丢失

图2-1 OAuth认证流程

OAuth协议致力于使网站和应用程序(统称为消费方)能够在无须露其认证证书的情况下,通过API访问某个web服务(统称为服务提供方)的受保护资源。更一般地说,OAuth为API 认证提供一个可自由实现且通方法如图2-1:

1. 用户希望在第三网站和应用上使用他在SNS网站上的用户信息,这些第三方网站联系SNS网站,但是由于没有用户认证信息,这时这些用户信息是不允许访问的。

2. SNS网站把用户的浏览器重定向到SNS网站的登录页面。

3. 如果用户没有登录,用户向普通登录一样,输入用户名和密码完成登录。如果用户已经登录(使用记录Cookie的方式),会出现一个页面,问用户是否允许共享他的SNS 信息给第三方网站。

4. 一旦用户选择信任第三方网站,SNS网站将把Web浏览器重定向到第三方网站或者第三方应用,同时把SNS的用户信息传递过去。

5. 这样第三方网站就可以访问SNS网站的用户信息了。

OAuth的典型案例:如果一个用户拥有两项服务:一项服务是图片在线存储服务A,另一个是图片在线打印服务B。如下图所示。由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,假设这两个用户名各不相同,密码也各不相同。当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?法一:用户可能先将待打印的图片从服务A上下载下来并上传到服务B上打印,这种方式安全但处理比较繁琐,效率低下;法二:用户将在服务A上注册的用户名与密码提供给服务B,服务B使用用户的帐号再去服务A处下载待打印的图片,这种方式效率是提高了,但是安全性大大降低了,服务B可以使用用户的用户名与密码去服务A上查看甚至篡改用户的资源。

很多公司和个人都尝试解决这类问题,包括Google、Yahoo、Microsoft,这也促使OAUTH项目组的产生。OAuth是由Blaine Cook、Chris Messina、Larry Halff 及David Recordon共同发起的,目的在于为API访问授权提供一个开放的标准。OAuth规范的1.0版于2007年12月4日发布。通过官方网址:https://www.doczj.com/doc/06969561.html,可以阅读更多的相关信息。

2.3 豆瓣API

豆瓣API是豆瓣为第三方开发人员提供的编程接口。利用豆瓣API,你可以在你的网站或程序中使用豆瓣的数据和功能。

为了保护豆瓣用户的数据;防止API被滥用或恶意使用,豆瓣要求每个API的使用者

申请一个API Key, 而每个API Key唯一标识一个API使用者。你可以在申请页面获得API Key,在页面中填写必要信息后提交,你会得到你的API Key,例如

c4579586f41a90372f762cb65c78be5d

在之后的API使用过程中,你需要在请求中包括apikey参数,例如

https://www.doczj.com/doc/06969561.html,/people/1345767?apikey={apikey}

如果只是想试验一下API,豆瓣也允许在不申请API Key的情况下进行API调用。不过在这种情况下,API调用被限制为每分钟请求不超过10次。使用API Key时,对访问的限制较为宽松,为每分钟40次,超过限制的话会被封禁。

2.4 Cookies

Cookie是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。

假设在用户请求访问您的网站http:// https://www.doczj.com/doc/06969561.html, 上的某个页面时,您的应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie。用户的浏览器在获得页面的同时还得到了这个 Cookie,并且将它保存在用户硬盘上的某个文件夹中。以后,如果用户再次访问豆瓣网的时候,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie。如果该 Cookie 存在,浏览器就将它与页面请求一起发送到您的站点,您的应用程序就能确定该用户上一次访问站点的日期和时间。您可以根据这些信息向用户发送一条消息,也可以检查过期时间或执行其他有用的功能。

Cookie 是与 Web 站点而不是与具体页面关联的,所以无论用户请求浏览站点中的哪个页面,浏览器和服务器都将交换豆瓣的 Cookie 信息。用户访问其他站点时,每个站点都可能会向用户浏览器发送一个Cookie,以保存用户的信息,比如e-mail,登录账号,用户对于相应界面的设置,而浏览器会将所有这些 Cookie 分别保存。

Cookies分为会话性质的cookie和持久化的cookie,存放在浏览器内存中,当你在用代码向客户端写入cookies的时候,如果没有指定过期时间,那么cookie是存放在浏览器的内存里面的,它会随着浏览器的关闭而自动消失,不会持久化在硬盘上,也就是你在浏览器的临时文件里找不到。(Sessionid就是存放在这类cookie中)。

而持久化的cookie,存放在硬盘上,当你指定了cookie的过期时间,那么,在客户端(一般为浏览器)写入cookie的时候就会存放在临时文件夹中,IE中的cookies 而针对webkit是没有限制的,你可以在你的客户端手动的编写相应的cookies储存,因为如果cookies量一大的话,那么你每次访问页面,都会去匹配。这样的话效率太低,访问页面也会变得太慢。

3 qDou的设计

本章将详细叙述qDou设计过程,包含具体的程序流程,数据流程,数据结构,OAuth 在qDou中一步一步完成认证的过程。Qml中mvc架构,photoview中的GraphicsView框架,在qDou中储存本地cookies。

3.1 概要设计

UI方面:关于Declarative UI,是基于Graphics View框架打造的下一代控件。主要针对于移动平台上,比如手机或者上网本,并且具有独特的Flick特性,使其本身通过很简单的接口调用便可具有平滑,动态变换的UI,同时加上Declarative本身所采用的Qml语言是基于ECMAScript。这种比较松散的声明性编程语言使得懂得JavaScript或者ActionScript的编程人员,也可写出漂亮的应用程序。由于Declarative UI的属性绑定(Property Binding),对网络访问的透明(Network Transparency: 内部自动加载请求资源)以及良好的C++扩展(Extending QML),使得其不仅可适用手机上的开发,同时利用良好的C++扩展特性也可打造丰富的pc平台上的应用。对于简单的手机应用来说,在不使用C++扩展的情况下,已经能满足开发者的需求,但是对于qDou来说,由于豆瓣API支持OAuth 协议,为了更好的使用遵循协议要求和第三方开发的规范,使qDou在支持QML的同时能够支持C++,也是必要的,同时这种语言采用的是MVC结构。

数据方面: 豆瓣提供了第三方API,通过xml文件来进行交互,而对数据进行修改,提交的,需要适用OAuth协议进行授权,关于OAUTH协议,它为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权。

3.1.1 程序流程图

图 3-1程序流程图3.1.2 模块框架图

图3-2模块框架图

3.1.3系统数据流程图

图3-3数据流程图

3.1.4 系统数据结构设计

豆瓣提供的数据时一个xml文件,而要在qml中使用xml文件,特别是较大的数据模型的时候,快速的访问特定字段的功能,这时需要的是一个数据库语言,qml中不支持sql 而是xuqery。

对于软件架构师和开发人员而言,XQuery 提高了生产率,增加了敏捷性。XQuery 最适合于 XML,就像 SQL 最适合于关系数据。 XQuery 为需要访问、挑选、集成和转换一个或多个 XML 集合的应用程序提供了类似于 SQL 的查询能力。虽然 XML 的狂热者可能将世界上的一切都看成是用 XML 标签编码的,单关系数据库模型仍然根深蒂固,世界上大部分数字数据是用由行和列组成的表来进行编码的。SQL 不会很快地消失。相反已经出现 XQuery 扩展,将 SQL 调用的结果看作是 XML 文档集合的一部分。

简单的说XQuery 相对于 XML,等同于 SQL 相对于数据库。XQuery 被设计用来查询 XML 数据。

qDou中涉及的数据项有:

用户信息:用户编号、用户名称、签名、城市、用户头像图片地址

书籍:图书编号、书籍名称、作者、ISBN、页数、定价、出版社、装帧、出版年、评级

电影:电影编号、电影名称、导演、编剧、主演、语言、上映时间、制片国家/地区、imdb 链接、评级

音乐: 音乐编号、音乐名称、表演者、唱片数、ISRC(中国)、发行时间、版本特性、出版者、介质、评级

收藏条目:条目编号、名称、对应收藏条目的图片地址、收藏者简评、评级

好友条目:好友编号、用户头像图片地址、好友姓名、签名、城市

广播条目: 广播编号、广播类型、广播信息

评论条目:评论编号、评论类型、评论者名称、评论者头像地址、简评

添加收藏条目:收藏条目编号、收藏类型、收藏名称、收藏原因、评级

1.名称:用户信息表(表3.1)

表名称标识:douban-user

数据来源:通过OAuth协议授权的用户登录成功后获得的数据表

表3.1用户信息表

名称字段名称类型主键非空用户编号UserID 数字Yes Yes 用户名称db:uid 文本No Yes 签名Isadmin 文本No No 城市db:location 文本No No 用户头像图片地址link rel="icon" 文本No No 2.名称:书籍表(表3.2)

表名称标识:douban-book

数据来源:获得特定书籍的名称

表3.2书籍表

名称字段名称类型主键非空图书编号ItemID 数字Yes Yes 书籍名称ItemName 文本No Yes 作者Author 文本No Yes ISBN Isbn 文本No No 页数Page 数字No No 定价Price 数字No No 出版社Publish 文本No No 装帧Binding 文本No No 出版年Date 日期No No 评级Rating 数字No Yes 3.名称:电影表(表3.3)

表名称标识: douban-movie

数据来源:获得特定电影的名称

表3.3电影表

名称字段名称类型主键非空电影编号ItemID 数字Yes Yes 电影名称ItemName 文本No Yes 导演director 文本No Yes

编剧author 文本No No 主演cast 文本No No 语言language 数字No No 上映时间year 日期No No 制片国家country 文本No No Imdb链接Date 日期No No 评级Rating 数字No Yes 4.名称:音乐表(表3.4)

表名称标识: douban-music

数据来源:获得特定音乐的名称

表3.4音乐表

名称字段名称类型主键非空音乐编号ItemID 数字Yes Yes 音乐名称Itemname 文本No Yes 表演者Author 文本No Yes 唱片数Number 数字No Yes ISRC Ean 文本No No 发行时间Pubdate 日期No No 版本特性Language 数字No No

表3.4音乐表(续表)

出版商Publisher 文本No No 介质Type 数字No No 评级Date 数字No No 5.名称:收藏条目表(表3.5)

表名称标识:douban-collection

数据来源:用户的收藏列表

表3.5 收藏条目表

名称字段名称类型主键非空条目编号ItemID 数字Yes Yes 名称ItemName 文本No Yes 对应收藏图片地址link rel="icon" 文本No No 收藏者简评Summary 文本No No 评级Rating 数字No Yes 6.名称:好友条目表(表3.6)

表名称标识:douban-friends

数据来源:用户的好友列表

表3.6 好友条目表

名称字段名称类型主键非空好友编号UserID 数字Yes Yes

相关主题
文本预览
相关文档 最新文档