.net手机软件开发(六)OBEX应用——文件传输部分

(六) OBEX应用——文件传输部分

在手机数据传输方面基本OBEX应用分为

l 文件传输

l IrMC同步

文件传输又可以细分为以下基本操作

l 初始化连接

l 断开连接

l 设置路径

l 取得目录信息

l 创建目录

l 上传下载文件

l 删除文件或空目录

在笔者的软件当中设计了OBEX这个类,里面包含了以上所有的基本操作。另外针对M55的服务端的特殊性又设计了更名、取得磁盘空间信息、移动、拷贝文件的功能。具体请参考源代码。

下面具体讲述各个操作的细节。

l 初始化连接

初始化连接包括了使手机进入OBEX状态再到发送Connect指令的一系列过程。具体流程参考下图。

ATÆAT^SQWE=0ÆAT^SQWE=3ÆConnectÆ连接到Folder-Listing Service

其中AT^SQWE=0和AT^SQWE=3是西门子特有的隐藏的AT指令,甚至在官方的AT指令集里面都没有提到。其作用是初始化手机到OBEX模式。

发送Connect指令收到手机回复以后确定Max Packet Length等参数。最后连接到Folder-Listing Service进行文件操作。如果需要IrMC同步的话,在Connect后直接连接到IrMC Sync Service即可,手机立刻进入同步模式,所有的应用程序退出。

在笔者的程序中当中首先使用AT指令确定手机当前的工作,如果超时,尝试发送+++并等待1秒钟以便手机从不正常的OBEX状态中退出。然后在此发送AT,成功后即进行文件操作,否则引发一个错误。

l 断开连接

这里的断开连接是指从OBEX模式退出到AT状态中。在AT指令中,连续发送三个0x2B然后等待一秒钟以上即可退出数据模式进入常规AT模式。

l 设置路径

程序中使用SetPath操作设置路径。需要注意的是,可以设计两种风格的过程:一种使用绝对路径,另一种使用相对路径。

对于手机而言,经笔者实践证明,使用绝对路径要比使用相对路径方便,而且更准确,但效率上稍逊,特别是在多层目录的情况下。由于手机没有能够返回当前路径的方法,所以相对路径总难以控制,只有通过程序控制,极容易出现错误。所以建议使用绝对路径。

如果使用绝对路径,那么路径名将呈现\path1\path2这种形式。首先回到根目录,然后一级一级的到达目的。在笔者的OBEX类当中,可以看到BacktoRoot这个过程。其作用就是把当前程序路径切换到根目录以免引起混乱。

l 取得目录信息

要取得一个目录的文件信息可以用发送Get指令。该Get指令需要一个TypeHeader,其值为x-obex/folder-listing

随后服务端会返回一个xml文件,包含了整个目录的信息。例如子目录名、文件名、大小、最后修改时间。再通过xml解析后就会得到目录信息。

l 创建目录

当SetPath的Flags的Bit1设为1并且无法找到目录时,服务端会创建这个目录并进入。

请注意,再次使用SetPath并将Flags的Bit0设为1返回上层目录,否则容易引起混乱。

l 上传下载文件

使用Put和Get命令可以实现上传和下载文件。注意所有的文件操作都在SetPath所指定的目录下进行。

使用Put命令实现上传时,至少需要提供NameHeader,BodyHeader,一般还要提供LengthHeader,DateTimeHeader。大文件传输需要正确处理BodyHeader,不能超出了服务端最大所能接收的Packet的大小,否则会出现错误。

需要注意的是如果当前文件存在,那么Put命令不会覆盖已有的文件而是追加,导致错误。传输文件之前需要首先删除同名文件。

使用Get命令实现下载时,只需要提供NameHeader即可。具体例子参考上一节。

l 删除文件或空目录

使用Put命令,其NameHeader指定为文件名或目录名并将BodyHeader设置为空即可。

非空目录无法删除,会返回错误。

西门子手机还有移动、拷贝等功能,具体实现方法请参阅OBEX源代码。

时间: 2024-11-05 12:25:46

.net手机软件开发(六)OBEX应用——文件传输部分的相关文章

Android手机软件开发 课程 教学 大纲

<专业考证培训及考证>课程教学大纲 课程编号:024015    授课学时: 80       学分数: 4    适用专业:通信技术 一.课程的性质和任务 课程的性质: <专业考证培训及考证>课程是通信技术专业的专业必修课.它面向软件设计与开发.软件技术支持以及软件测试三个岗位,主要讲解<Java程序设计>.<Android手机软件开发>等课程,在<Android软件开发>技术的基础上再加以提升,从而使学生能够更好地适应就业岗位. 课程的任务:

手机软件开发工程师的薪水一般多少

问题描述 公司想招聘一名手机软件开发工程师,不知道现在这个工种的月薪一般是多少,请大家说说 解决方案 解决方案二:1000-10000解决方案三:楼上的回答也太牛了吧4000-7000吧解决方案四:高级的一般15K解决方案五:围观解决方案六:应该是说不一样的软件层次(偏应用还是偏底层),薪水也不一样的吧.解决方案七:3000解决方案八:2000起,上不封顶.解决方案九:但凡有点经验的一般在5k-10k之间吧解决方案十:工资好高啊~~~~解决方案十一:看技术了解决方案十二:手机开发工程师也分很多中

手机软件开发

问题描述 去一家公司面试,他是做手机软件开发的,我以前没有接触过手机软件开发,公司要我回来先自己熟悉手机软件开发.请问一下我该从哪一方面入手,用什么开发工具,能给我推荐几本教程吗? 解决方案 解决方案二:那要看你们公司用什么平台什么工具做了.一般做手机软件的赛班的比较多吧,也有J2ME和BREW之类的,国内的话还有MTK这种的.解决方案三:把我的BLOG翻一遍,你就会获得很多手机软件开发的知识http://blog.csdn.net/mailbomb解决方案四:路过.我也是新手,刚进公司不到一个

.net手机软件开发(5)——OBEX介绍

(一) OBEX介绍 一.什么是OBEX,它有什么用途? OBEX全称为Object Exchange,中文对象交换,所以称之为对象交换协议.它在此软件当中有着核心地位,文件传输和IrMC同步都会使用到它. OBEX协议构建在IrDA架构的上层. OBEX协议通过简单的使用"PUT"和"GET"命令实现在不同的设备.不同的平台之间方便.高效的交换信息.支持的设备广泛,例如PC,PDA,电话,摄像头,自动答录机,计算器,数据采集器,手表等等. OBEX协议定义了一种柔

提前认识软件开发(29) 数据库脚本文件的布局

"没有规矩,不成方圆",规范数据库脚本文件的代码布局具有以下重要意义: (1) 可表现出代码良好的逻辑结构,提高代码的准确性.连续性.可读性及可维护性. (2) 有利于提高产品的开发质量和效率,并降低开发成本. (3) 对于开发人员来说,养成良好的脚本编写习惯有助于提高个人的数据库脚本编程水平,进而提高脚本编程效率. 可见,统一的.良好的脚本代码布局和风格不仅仅是个人主观美学或形式上的问题,而且影响到产品的质量,并涉及到自身脚本编程能力的提高. 1. 脚本布局顺序概述 在实际的软件开发

如何组建一个手机软件开发团队

问题描述 本人从事技术管理工作,若干年不从事技术开发了,最近公司要求我组建一个最简易型的手机开发小组,公司的意思是开发一些简单实用的手机软件给广大手机网民免费使用,本着少投入试探性介入手机软件市场的心态做做,也就是花钱同时呢做的软件还要能够在各种智能手机上跑的起来,我现在遇到一个困惑:我是该招聘一个JAVAME的人还是招聘JAVAME和C/C++各一名呢,如果JAVAME开发的产品就能在各种智能手机上都能运行的话我们就不要再招聘个C/C++了,毕竟我们只是做些小的手机软件并不开发游戏,对速度要求

让你提前认识软件开发(17):makefile文件的书写及应用

第1部分 重新认识C语言 makefile文件的书写及应用   [文章摘要]         makefile用于Linux下整个工程的编译,对于Linux下的C/C++语言的编译是至关重要的.        本文以实际的C源程序为例子,介绍如何使用makefile来编译Linux下的C语言工程,为相关开发工作的开展提供了参考.   [关键词]         makefile  C语言  Linux  编译  开发   一.什么是makefile?         makefile是什么?如果

我一直对手机软件开发和有兴趣,但是不知道该看那些书,麻烦大神指点!!!不甚感激

问题描述 最好是能给出要看的书的次序,,,本人有JAVA基本语法知识,和C/C++知识!!!麻烦了 解决方案 那我给推荐基本书吧,obj-c 基本开发教程,iphone 基础开发教程,iphone 开发秘籍,这三本书就够了解决方案二:看你是做android ,iPhone,还是win7开发吧android 直接看android开发都行,现在国内没有什么值得的书,很多都是翻译官网的.看你情况,如果习惯看api直接参考就可以,如果不习惯,随便买一本都差不多,都是从那里翻译来的.iphone还得obj

手机网络应用客户端软件开发实践简介

网络应用与客户端软件 说到移动网络应用,前几年大家首先想到的就是WAP应用.最近随着市场上手机的可编程能力越来越强,手机软件开发平台和产业链的逐渐成熟,手机上的网络应用软件逐渐多了起来,如移动QQ.PICA.掌讯通等等.这些客户端软件凭着丰富的应用.以用户为中心的体验.良好的业务感知度逐渐成为WAP业务之后的又一类重要网络应用.目前的移动软件开发已经逐渐从传统的嵌入式开发中相对独立出来, 主要指手机上的上层应用软件开发,最近也成为了软件行业的新兴热点. 作为业务运营的手机网络应用客户端软件要求能