基于JSR82的蓝牙应用开发手记
基于JSR82的蓝牙应用开发手记
文章分类:移动开发 关键字: jsr 82 蓝牙
目目标:基于 JSR82 的蓝牙应用,实现手机和 PC 之间通过蓝牙实现数据交互。 分析:现在支持 JSR82 ,带蓝牙功能的手机还是比较多的。在 PC 机上, Widcomm 和 BlueSoleil 都是很著名的蓝牙软件。通过蓝牙来传输数据,这是没有任何技术阻碍,关键是如何尽快做出来,满足项目要求。 首先,项目组选定了选定了 windows 而不是 linux ,这就限定了我的选择空间。 Windows 从 xp sp2 开始就支持蓝牙适配器,对于开发人员来讲,就需要安装 WindowsXP Platform SDK(URL: [url]http://www.microsoft.com/downloads/details.aspx?FamilyID=eba0128f-a770-45f1-86f3-7ab010b398a3&displaylang=en[/url] ) ,然后透过 Visual Studio.net 8.0 的开发环境来调用蓝牙 API 来实现。这都是微软提供的开发套件。 但是,项目组考虑到可移植性,决定采用 Java 语言进行开发。这样,我就考虑采用 blue cove 实现的 JSR82 来做。 BlueCove 是一个开源的项目,是 JSR-82 的具体实现。透过 SVN client 从 [url]http://www.bluecove.org/[/url] 上下载 bluecove2.0.3 。这个版本已经比较稳定而且功能齐全,支持 Mac OS X, WIDCOMM, BlueSoleil , Microsoft Bluetooth stack , Linux BlueZ 。 Blue Cove 本身并不实现蓝牙协议栈,它利用了 WIDCOMM, BlueSoleil or Microsoft 的 bluetooth stack 。也就是说,你用了蓝牙适配器,安装驱动是你的事情,我的应用软件不会帮你安装驱动的,这很合理。 如果选择 Blue Cove ,就得采用 J2SE 平台进行开发。 基于 Java SE 的开发,需要建立 Java 的开发环境,这里选用 SUN 公司提供的最新的 J2SE 平台, JDK 6.0 , /jdk1.6.0_06 作为 complier 工具。根据 Blue Cove 小组建议,采用 maven2 作为 Java 的 project build 工具, IDE 的环境用 eclipse 3.4 。 Eclipse 将集成 JDK , CVS , maven2 进来,保证使用方便,简要介绍如下: 1 、安装 JDK 后,在系统环境变量中设置好 JAVA_HOME 和 CLASSPATH , eclipse 和 maven2 就可以找到 JDK 。 2 、 Help->software update ,从 [url]http://m2eclipse.sonatype.org/update/[/url] ,引入 maven2 插件。对于 maven2 ,要设置好 M2_HOME 或者是 MAVEN_HOME 的值。 在 eclipse 与 maven2 集成的过程中,一直弹出这样的告警: Eclipse is running in a JRE, but a JDK is required Some Maven plugins may not work when importing projects or updating source folders. 不少人讲要修改 eclipse.ini ,增加一行: -vm C:/Program Files/Java/jdk1.6.0_06/bin/javaw 我加了可总还是出现,呵呵,最后是这样,把 vm 后面的空格换成回车换行就可以了。注意,即使删除掉空格也是不行的,必须要换行。 作为应用程序,必须要有用户界面,不然测试工作都无法进行。哪个是最好的 Java GUI 开发工具呢?经过 google 了一番,确认采用 eclipse+Visual Editor 的组合,进行开发,当然,它是基于 AWT 和 SWING 组件技术的,只不过再增加了一层包装,达到所见即所得,跟 VC 做界面一样。 Eclipse VE 到这里去下载最新版本: [url]http://download.eclipse.org/tools/ve/downloads/[/url] ,安装是很简单的,绿色软件,拷过去就行了。重新打开 eclipse ,重新配置一下工具条。然而尝试着新建一个 java class ,如果允许你 new 一个 visual class ,那就说明插件生效了。 环境搞好了,回过头来看一下需求。项目对蓝牙的需求实际上就是两条: 第一、 任何一方蓝牙都可以主动搜索,发起配对。这个配对过程最好是可以不要,如果一定要配对,希望是可以自动完成。 第二、 基于蓝牙协议栈,为上层提供一个随需随用的数据通道。 仔细研究了一把蓝牙协议栈,发现 SPP 定义了如何设置虚拟串行端口及如何连接两个 蓝牙 设备,这个东西就是在蓝牙 PS 的基础上实现了一个串口仿真协议。查看安装好 widcomm 和 bluesoleil 的计算机,可以发现增加了很多虚拟 COM 口,如下所示: 提一下, Blue cove 是没有实现 SPP 协议的,幸好我们也不用。 那这样的话,我们就可以在 COM 口的基础上,利用 Java communications API ,实现一个类似于标准的 RS232 串行通讯协议,提供给上层用。到这里,工作就比较清晰了: 1 、基于 blue Cove ,实现蓝牙的搜索,和配对过程。 2 、基于 java comm. API ,实现 RS232 通讯,并提供接口给上层使用。即使只是搜索到蓝牙设备,通过 RS232 也可以直接发数据过去 (PUSH 操作 ) ,这一点需要验证,根据协议研究是可以实现的。 当然,还要对上述功能进行测试。这就要用 VE 来编写界面了。这个测试软件需要实现如下功能: 本地蓝牙配置;搜索远端蓝牙并列表;主动配对;接受配对请求; 配置 RS232 口参数;发送数据;接收数据并打印出来,保存下来。
转载: http://freeman1974.blog.51cto.com/396609/85691
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
