基于JSR82的蓝牙应用开发手记

项目目标:基于 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] 上下载 bluecove 2.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 \jdk 1.6.0 _06 作为 complier 工具。根据 Blue Cove 小组建议,采用 maven2 作为 Java project build 工具, IDE 的环境用 eclipse 3.4
Eclipse 将集成 JDK CVS maven2 进来,保证使用方便,简要介绍如下:
1 、安装JDK后,在系统环境变量中设置好JAVA_HOMECLASSPATHeclipsemaven2就可以找到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\jdk 1.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 口参数;发送数据;接收数据并打印出来,保存下来。
 
 
 
 
 

本文出自 “freeman1974” 博客,转载请与作者联系!

你可能感兴趣的:(java,蓝牙,BlueTooth,休闲,vs.net)