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

来源:互联网 发布:泰州网络推广 编辑:程序博客网 时间:2024/06/02 23:20

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

文章分类:移动开发 关键字: jsr 82 蓝牙

目目标:基于JSR82的蓝牙应用,实现手机和PC之间通过蓝牙实现数据交互。
 
分析:现在支持JSR82,带蓝牙功能的手机还是比较多的。在PC机上,WidcommBlueSoleil都是很著名的蓝牙软件。通过蓝牙来传输数据,这是没有任何技术阻碍,关键是如何尽快做出来,满足项目要求。
 
首先,项目组选定了选定了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 stackLinux BlueZBlue Cove本身并不实现蓝牙协议栈,它利用了 WIDCOMM, BlueSoleil or Microsoftbluetooth stack。也就是说,你用了蓝牙适配器,安装驱动是你的事情,我的应用软件不会帮你安装驱动的,这很合理。
如果选择Blue Cove,就得采用J2SE平台进行开发。
基于Java SE的开发,需要建立Java的开发环境,这里选用SUN公司提供的最新的J2SE平台,JDK 6.0/jdk1.6.0_06作为complier工具。根据Blue Cove小组建议,采用maven2作为Javaproject build工具,IDE的环境用eclipse 3.4
Eclipse将集成JDKCVSmaven2进来,保证使用方便,简要介绍如下:
1、安装JDK后,在系统环境变量中设置好JAVA_HOMECLASSPATHeclipsemaven2就可以找到JDK
2Help->software update,从[url]http://m2eclipse.sonatype.org/update/[/url],引入maven2插件。对于maven2,要设置好M2_HOME或者是MAVEN_HOME的值。
eclipsemaven2集成的过程中,一直弹出这样的告警:
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的组合,进行开发,当然,它是基于AWTSWING组件技术的,只不过再增加了一层包装,达到所见即所得,跟VC做界面一样。Eclipse VE到这里去下载最新版本:[url]http://download.eclipse.org/tools/ve/downloads/[/url],安装是很简单的,绿色软件,拷过去就行了。重新打开eclipse,重新配置一下工具条。然而尝试着新建一个java class,如果允许你new一个visual class,那就说明插件生效了。
环境搞好了,回过头来看一下需求。项目对蓝牙的需求实际上就是两条:
第一、    任何一方蓝牙都可以主动搜索,发起配对。这个配对过程最好是可以不要,如果一定要配对,希望是可以自动完成。
第二、    基于蓝牙协议栈,为上层提供一个随需随用的数据通道。
仔细研究了一把蓝牙协议栈,发现SPP 定义了如何设置虚拟串行端口及如何连接两个蓝牙设备,这个东西就是在蓝牙PS的基础上实现了一个串口仿真协议。查看安装好widcommbluesoleil的计算机,可以发现增加了很多虚拟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

原创粉丝点击