目目标:基于
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