vCalendar的跨平台系统的设计论文.docx

上传人:b****5 文档编号:6649493 上传时间:2023-01-08 格式:DOCX 页数:28 大小:32.43KB
下载 相关 举报
vCalendar的跨平台系统的设计论文.docx_第1页
第1页 / 共28页
vCalendar的跨平台系统的设计论文.docx_第2页
第2页 / 共28页
vCalendar的跨平台系统的设计论文.docx_第3页
第3页 / 共28页
vCalendar的跨平台系统的设计论文.docx_第4页
第4页 / 共28页
vCalendar的跨平台系统的设计论文.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

vCalendar的跨平台系统的设计论文.docx

《vCalendar的跨平台系统的设计论文.docx》由会员分享,可在线阅读,更多相关《vCalendar的跨平台系统的设计论文.docx(28页珍藏版)》请在冰豆网上搜索。

vCalendar的跨平台系统的设计论文.docx

vCalendar的跨平台系统的设计论文

vCalendar的跨平台系统的设计

摘要

个人数据交换PDI(PersonalDataInterchange)每时每刻都进行着,可以是两个人面对面、通过电话或网络的信息交流,同其他人一起的信息共享。

通过纸质名片,或者电子名片来进行信息的交换。

该课题研究首先围绕vCalendar结构,阐述了什么是vCalendar,产生过程以及应用范围。

对其组织结构和主要字段:

DTSTART、DALARM、DTEND等在结构中作用,以及各属性取值,编码间的转换作了详细分析;然后结合MotorolaL7型号手机,测试出手机特性,功能操作流程、系统编码方式、读取开关、配置信息、数据格式构成等。

可以实现操作有:

下载、新增、修改、删除。

再根据每一功能特性,制定出实现方式。

主要是重写基类接口函数,来达到对该手机型号的支持,再把插件加入到软件架构中,设计出能在PC和手机端通信的软件。

通过该软件可以对手机中的事件、日程安排进行操作,同时也可以同WINDOWS系统进行数据同步。

 

关键词:

事件;日程安排;数据同步;插件

ThedesignofthevCalendar`scross-platformsystem

Abstract

PersonalDataInterchange(PDI)occurseverytime,Twoormoreindividualscommunicateineitherface-to-faceoracrosswireandinternetdata.Suchinterchangesfrequentlyincludetheexchangeofinformalinformation,suchasbusinesscardspapercarsorVcards.

ThetopicisbasedontheconstructionofvCalendar,expoundedwhatisvCanlendar,theprocessof havingitandtheapplications.Especiallyitexplainsthehistologicalstructureandthefunctionforkeyfields-DTSTART,DALARMandDTEND,the valueofeachattributionandthe transformsbetweenthecodes;CombinedwithMotorolaL7togetthepropertyofthemobile-phone,operationflowofthefunctions,methodsofsystemcoding,switchesreading,configurationmessagesandtheformingofdatacompositions,etc.Effectedoperationscouldbe:

downloading,adding,revisinganddeleting,andfulfillingthemethodswiththefunctionalcharacters,Mainpointisre-writingbasicportfunctiontogetthecompatibilityofthemobile.Then,addthex-activitisintothesoftware,obtainthecommunicationsbetweenPCandcell-phone;whichcaneithercontroltheevents,scheduleinforthemobile,ormakethedatasynchronizationwithWindowssystem.

Keywords:

vEvent;vTodo;Datasynchronous;Plugin

目录

论文总页数:

26页

1引言1

1.1课题背景1

1.2国内外研究的现状1

1.3本课题研究的意义1

1.4本课题的研究方法1

2vCalendar1

2.1字符编码1

2.1.1vCalendar对象1

2.1.2编码方式2

2.1.3持续时间2

2.1.4版本3

2.2vEvent和vTodo属性3

2.2.1声音提醒3

2.2.2类别3

2.2.3分类3

2.2.4时间4

2.2.5更改记录4

2.2.6优先级4

3vCalendar实现5

3.1系统架构分析5

3.2.plug分析5

3.3函数实现6

3.3.1配置信息6

3.3.2构造函数实现8

3.3.3数据获取10

3.3.4数据下载11

3.3.5数据新增18

3.3.6数据删除21

3.3.7数据同步21

3.3.8析构函数实现22

结论24

参考文献24

致谢25

声明26

1引言

1.1课题背景

随着信息化网络的便利,数据的及时交互、跨平台交互得到一定程度发展。

尤其3G技术将无限通信与国际互联网等多媒体通信结合,能够处理图像、视频流等多种媒体形式外,个人信息、电子商务等多种信息服务提供,也是新一代网络对业务支持的独特优势。

因此,手机终端软件的设计、以及能适应新技术发展的需要成为各大手机软件设计商热点。

1.2国内外研究的现状

从相关文献资料来看,国外一些手机软件,尤其以NOKIA、MOTOROLA、SIEMENS和SAMSUNG四家全球最大的手机设计商,占据了全球大部分市场,其产品的自主研发性程度很高,尤其对智能手机研发走在前列。

国内的中兴、德信无线通信等手机设计商在国内市场份额较大,对于智能手机系统的研究受到国外厂商的压力较大。

1.3本课题研究的意义

对于手机PC端软件的设计,有助于使手机和PC互连,在PC端完全操作手机,如邮件信息收发、手机功能设置、PC通过手机连入互相网、信息备份与恢复等。

可以从手机端设置转换向PC方向。

与手机生产商的合作,开发出定制软件,功能得到更加增强,本课题主要研究关于事件和日程安排在不同平台上的应用设计,综合各手机操作系统的特点,对跨平台数据中vCalendar应用研究。

1.4本课题的研究方法

该研究方法主要从不同的手机操作系统如:

MTK、OBEX、Linux、WindowsCE;PC操作系统入手。

分析数据在不同平台存在格式,从而为信息新增、数据同步等提供数据段的分析、匹配、格式转换、编码、解码等操作。

2vCalendar

2.1字符编码

以下部分主要简单定了vCalendar的语法构成、语意的解释。

2.1.1vCalendar对象

vCalendar数据流可以包含一个或者多个vCalendar对象,作为每一个vCalenda数据流对象,都会以BEGIN:

VCALENDAR作为分隔字符串:

BEGIN:

VCALENDAR

该标志必须是数据流对象的第一个起始字符串,且为第一行内容出现,标志着内容开始。

vCalendar数据流对象也会以一个ENDVCALENDAR作为结束字符串:

ENDVCALENDAR

vCalendar对象可以比着一个容器类,里面包含有事件和日程安排实体内容,也就是所定义的vEvent和vTodo实体结构,两个实体间区别不是太大,只是对某些字段的支持上有差异。

vEvent事件定义:

一个vEvent事件就是一个日历事件安排的实体,大多都会依赖日历时间,例如:

可以设置节日提醒事件,自己生日提醒事件等,当接受到提醒通知表明该事件发生。

每一个vEvent实体也就是一个vCalendar对象,由开始标志符:

BEGIN:

VEVENT

该标识符号也必须出现在vEvent实体第一行,作为标识开始符,vEvent事件不能同另外一个vEvent事件或者vTodo日程安排嵌套使用,但可以通过关键字符串RELATED-TO来连接两个实体,否则会被系统识别为错误。

vTodo日程安排定义

可以定义日程安排提醒,该实体大多依赖月、天、时、分、秒。

比如一个小时的日程安排,考试时间从10:

00开始到11:

00结束,在从开始到结束的这一个小时后,会接受到通知,表面该日程安排结束。

与vEent事件开始标志一样,需要在日程安排首行出现开始标志符号:

BEGIN:

VTODO

下面是实体内容,然后是日程安排结束标志符号:

END:

VTODO

vTodo不能同另外一个vEvent事件或者vTodo日程安排嵌套使用,但可以通过关键字符串RELATED-TO来连接两个实体,否则会被系统识别为错误。

2.1.2编码方式

大多手机系统都是采用7-BIT编码方式,也可以通过终端来设置所支持的编码,来满足操作的需要,该操作需要通过ENDODING属性来设置,综合常见系统中所使用的编码,可有:

UTF-8,GSM,UCS2

这些国际通用编码方式,在从不同平台数据交换,数据同步时候需要注意编码识别和转换,以便能够适应当前系统的编码方式。

2.1.3持续时间

在vCalendar对象中,有持续事件的定义,时间格式严格遵守ISO8601规范中所定义的时间格式。

对象中如时间需要持续下去,需要使用标识符P

示例:

P3W持续时间为3周

PT5M持续时间为5分钟

PT1H8M持续时间为1小时8分钟

P2Y10M15DT10H30M20S持续时间为2年10个月15天10小时30分20秒

2.1.4版本

该标识主要用来定义手机软件上vCalendar版本号,当用于不同平台数据交换时,需要先判断版本号是否相同,因为可能版本不同,支持的字段不一样,而使同步或者新增数据出错。

该字段用VERSION来标识。

示例:

VERSION:

1.0

该字段在vCalendar对象中必须出现,因此对其支持是强制性的。

2.2vEvent和vTodo属性

以下所定义的属性会出现在vEvent事件和vTodo日程安排中

2.2.1声音提醒

该字段由属性名AALARM来标识,后面跟声音提示文件,通过该属性,可以定义事件或者日程安排发生时,提醒用音频来发出警报声音,

RunTime:

被执行的日期和时间

SnoozeTime:

在执行时间之后,提示将处于休眠状态时间间隔

RepeatCount:

语音提示重复的次数

AudioContent:

提示时要被播放的声音文件

该字段在vCalendar对象属于可选字段

2.2.2类别

该字段由CATEGORIES标识,用来定义vCalendar实体类别,如日程安排为会议、聚餐、电话会议等,当要用到多个类别属性时用分号隔开表示即可。

该属性值可以有如下取值:

APPONTMNET、BUSINESS、EDUCATION、HOLIDAY、MEETING、MISCELLANEOUS、PERSONAL,PHONECALL、SICKDAY、SPECIALOCCASION、TRAVEL、VACATION

2.2.3分类

该字段由CLASS标识,为vCalendar实体定义了访问权限。

手机系统中可以对事件、日程安排设置一定的访问权限,使其内容得到保护,只有合法用户可以查看、修改、增加、删除等操作,非合法用户不能操作,该属性在智能手机系统中体现较明显,如同Windows的权限分配。

但在一些MTK手机系统对该字段不予支持,所以vCalendar实体对其支持也是可选的。

示例:

CLASS:

PUBLIC

上面示例说明,对于该条vCalendar实体,它的访问权限不受控制,使用手机的任何人都可以对其修改等操作。

其余取值可以有:

PUBLIC、PRIVATE、CONFIDENTIAL

2.2.4时间

(1)开始日期、时间

该字段由DTSTART来标识,指定了vCalendar对象开始的日期和时间,属性在vCalendar对象中也是必须给出定义的,日期和事件值可以是本地时间或者UTC时间来表示。

格式在ISO08601中定义,在日期和时间中用T表示,如果是UTC时间表示法,最后用Z结束标志。

示例:

DTSTART:

20070601T120000

(2)提醒日期、时间

该字段由DALARM来标识,指定了vCalendar对象提醒日期和时间,该属性必须在vCalendar对象对象中出现,所以对其支持是强制性的,日期和事件值可以是本地时间或者UTC时间来表示。

格式在ISO08601中定义,在日期和时间中用T加以分隔,如果是UTC时间表示法,最后用Z结束标志。

示例:

DALARM:

20070601T140000

(3)结束日期、时间

该字段由DTEND来标识,指定了vCalendar对象结束的日期和时间,该时间必须晚于提醒、开始。

该属性必须在vCalendar对象对象中出现,所以对其支持是强制性的,日期和事件值可以是本地时间或者UTC时间来表示。

格式在ISO08601中定义,在日期和时间中用T加以分隔,如果是UTC时间表示法,最后用Z结束标志

DTEND:

20070401T235959Z

2.2.5更改记录

该字段由LAST-MODIFIED标识,该属性说明了vCalendar对象被最后修改的日期和时间,该字段也是体现了智能手机设置的方便性,便于对信息修改历史记录的查询。

示例:

LAST-MODIFIED:

20070817T133000

2.2.6优先级

该字段由PRIORTY来标识,属性定义了vCalendar对象的优先级,当定义了多事件同时提醒时,可以通过优先级来设置哪一事件先于其他事件提醒,属性值用数字表示。

示例:

0:

未定义级别

1:

最高优先级

2:

第二优先级

……随数字增加,优先级递减。

PRIORITY:

2

时间优先级别为2

3vCalendar实现

3.1系统架构分析

软件以插件方式构成,即通过新增方式可以扩展软件对新手机的支持界面由Delph开发,底层由C\C++开发。

手机系统虽然可以分为MTK、OBEX、Linux、WindowsCE,但又可以归结为两大类,即以系统支持AT和OBEX命令为分类。

NOKIA类手机完全应用自己独立开发的OBEX系统,属于私有协议,所以实现起来需要分析官方软件的收发数据,然后分析、实现开发出支持NOKIA型号手机。

其余MOTOROLA、SIEMENS、LG等系列手机厂商都是以AT指令方式与手机操作系统交互,有时也会带有私有协议、扩展协议等只有在测试官方软件、现有软件的支持情况分析出来。

所以软件会因AT、OBEX协议不同,而加载Other.base或Nokia.base来对当前手机支持,然后加载支持不同款手机的.plug来对手机指令处理,达到数据的请求和应答。

其中.plug也就是一个Win32下的.dll文件,只是后缀名不同而已。

每一个手机大类中的插件可以支持几款手机、或者经过细微的修改也可以支持,所以也就分了某一大类手机的未知型号的手机插件、通用手机插件等。

3.2plug分析

plug是开发出的支持手机的dll程序,供界面调用,来处理底层数据的通信,由于架构在一个软件可以支持多厂家、多系统、多款手机,所以对插件的归类作了规定。

首先应该以插件所属手机大类如:

Motoralor,然后是具体的手机型号。

由于是一款插件可以支持该类多款手机,所以把插件的手机列表写入到了程序的静态数组,或者本地磁盘.ini文件,作为软件配置信息存在。

当第一次使用软件时候,界面调用plug插件扫描静态数组和配置文件,把手机大类信息、手机型号写入数据库。

以便当手机与PC连接时查询到是否支持,或者加载什么样的插件来初始化软件。

插件主要向外界暴露标准的操作接口,如新增、下载、删除、修改等,具体实现在插件内部,也就是实现基类中的函数接口,或者重写继承过后的函数。

当需要开发出一个插件来支持新型号的手机时候,主要是先通过终端测试,得出手机系统特性,分析出于该类其余手机的相识情况,然后用已知插件测试功能支持情况,如果能用已开发出的插件支持手机,则需要维护静态数据库或者ini配置文件,加入新型号手机进去。

插件主要处理由界面传来的操作命令,向手机发送请求命令和接受手机的应答。

对数据进行封装,从手机的AT命令格式和界面Absfile格式进行匹配转换,都是先接受响应的数据包载缓存中,对串口缓存数据逐条解析,寻找开始、结束字符串。

例如对短信息、电话本、事件、日程等的封装。

然后发送到串口,手机予以响应。

3.3函数实现

插件向外暴露的都是标准的操作接口,都从基类plugBse、absPimCpp继承而来,或者从其他插件功能继承再加以重写。

有些型号手机需要重新实现所有的基类接口,从别的派生类继承实现起来比较困难,这样也是开发量最大的情况。

以下对于数据封装后会以absfile形式存在,也就是虚拟文件,根据实现的函数不同从而具有各自不同的接口,但都以两种方式存在,一种是在本地磁盘建立一个文件,所有对该方式建立的absfile操作,都在操作标准的磁盘文件;另外一种是在内存中申请一动态堆栈区,来保存信息从而实现absfile,然后可以用操作文件方式对该内存区进行数据处理,这也是配置的内存文件。

以下是在开发中实现的接口:

3.3.1配置信息

通过实现getProf函数,给出配置信息到absFile可以在PC与软件连接中,传递给界面一些参数,让界面来根据文件配置加载相应的功能,不仅对于该模块需要实现getProf函数,所有模块都需要根据该模块的特性来重写接口:

intMotoVcs:

:

getProf(AbsFile*prof)

{

intret,titleLen;

charrsp[256];

if(this->vcsProfObj){

prof->printf(prof,"%s",this->vcsProfObj);

AbsFile_dbgOut(prof);

return0;

}

if((ret=enter())<0){

TRACE_LINE();

returnret;

}

//rsp:

..+MDBR:

500,44,64,8,2....OK..

if((ret=AtTe_getAny(this->at,"+MDBR=?

","+MDBR",

"+CME",rsp,sizeof(rsp),NULL))<0)

returnret;

AbsFileMem_reset(this->rspBuf,rsp,sizeof(rsp),ret,0);

if((ret=AtLex_do(this->rspBuf,this->token))!

=AT_ATOM)

return-CNSE_PROT;

//500

if((ret=AtLex_do(this->rspBuf,this->token))!

=AT_NUM)

return-CNSE_PROT;

if((ret=AtLex_do(this->rspBuf,this->token))!

=',')

return-CNSE_PROT;

//44

if((ret=AtLex_do(this->rspBuf,this->token))!

=AT_NUM)

return-CNSE_PROT;

if((ret=AtLex_do(this->rspBuf,this->token))!

=',')

return-CNSE_PROT;

//64

if((ret=AtLex_do(this->rspBuf,this->token))!

=AT_NUM)

return-CNSE_PROT;

titleLen=atoi(StrBuf_buf(this->token));

prof->printf(prof,"[Base]\r\n");

prof->printf(prof,"OpSupp=getInfo,listById,writeById,readById,removeById\r\n");

prof->printf(prof,"[FieldListEvent]\r\n");

prof->printf(prof,"(T)(%d)(UNICODE)=\r\n",titleLen*2);

prof->printf(prof,"(DA)(60)(UNICODE)=\r\n");

prof->printf(prof,"(DS)(60)(UNICODE)=\r\n");

prof->printf(prof,"(DE)(60)(UNICODE)=\r\n");

prof->printf(prof,"(R)(60)(UNICODE)=selList(0,1,2,3,4,6)\r\n";

return0;

}

在absfile中会得到信息:

[Base]

OpSupp=listById,readById,writeById,removeById,getInfo

[FieldListEvent]

(T)(%d)(UNICODE)=

(DA)(60)(UNICODE)=

(DS)(60)(UNICODE)=

(DE)(60)(UNICODE)=

(R)(60)(UNICODE)=selList(0,1,2,3,4,6)

从该配置信息可以看出支持操作有:

下载、读取、新增、删除。

同时也传递给界面所支持的字段有:

T、DA、DS、DE、R和对每一个字段编码方式、字符长度作了约束。

其中selList中选项表示可能的取值。

3.3.2构造函数实现

构造函数中分为该功能模块构造、和操作时的构造,但都是为了能满足对内存堆栈申请、操作时对事件或者日程安排的开关:

(1)功能模块构造:

实现对虚拟文件的堆栈分配、存储信息的堆栈分配,还有相关信息的初始化。

MotoVcs:

:

MotoVcs(ItfMng*itfMng,AtTe*_at,char*_vcsProfObj)

:

PlugBase(itfMng)

{

this->at=_at;

this->rspBuf=AbsFileMem_new(NULL,0,0,0);

this->token=StrBuf_new(128);

this->maxReadPerTime=1;

this->cs[0]='\0';

this->vcsProfObj=_vcsProfObj;

}

(2)功能操作构造:

当要对vEvent或者vTodo操作时候,根据系统的设计,需要设置信息开关+MDBL=1,否则不能读取和其余操作,设置编码方式,但都需要先从手机中读取,然后根据支持操作来设置编码,界面都是统一按照UTF-8编码数据、该款手机优先支持UCS2编码,这些是由手机系统所决定。

intMotoVcs:

:

init()

{

intret;

charbuf[128],*cs;

CnsCh

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1