Java桌面蓝牙客户​​端无法找到服务

时间:2015-01-26 15:13:30

标签: java bluetooth sensor bluecove

我是蓝牙编程的新手,所以请记住这一点。

我正在尝试从台式电脑连接到脉冲传感器,特别是Zephyr HxM BT。我没有使用任何特定于设备的驱动程序,我使用的Java蓝牙库是Bluecove,而我的蓝牙堆栈是BlueSoleil。

根据我的理解,我的进展方式是

1)扫描BT设备

public void startSearch() throws BluetoothStateException{
    System.out.println("Inquiry started");
    localdevice.getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, this);
}

这很好用,它会发现我的脉冲带并打电话

public void deviceDiscovered(RemoteDevice arg0, DeviceClass arg1)

2)在设备中搜索服务

一旦设备被发现,它应该被添加到DiscoveryAgent的缓存设备列表中,这是我的第一个问题,因为即使我已经发现缓存(和预先知道的设备)总是空的我的皮带。

所以我现在这样做的方法是保留我自己的设备列表,或者直接从deviceDiscovered开始服务搜索。

我仍然有点不确定我是否使用了正确的参数,但是阅读了BT设备手册和DiscoveryAgent.searchServices上的javax.bluetooth文档:

public int searchServices(int[] attrSet,
                      UUID[] uuidSet,
                      RemoteDevice btDev,
                      DiscoveryListener discListener)
               throws BluetoothStateException

我的代码:

public void searchServices(RemoteDevice device){
    UUID[] uuidSet = new UUID[1];
    uuidSet[0]=new UUID("1101",false); //Serial Port
    System.out.println("Searching for services on " + device.getBluetoothAddress() );
    try{
    agent.searchServices(null,uuidSet, device,this);}
    catch (BluetoothStateException e){
    System.out.println("BluetoothStateException caught.");
    }

    }

我已将attributes参数设置为null,因为文档声明这将使其搜索具有默认属性的服务,但是我还尝试仅使用ServiceID(0x0003)作为属性没运气。

这就是我被困的地方,我将正确的BT设备传递给该功能,它开始搜索但从未给我任何结果,它只是永远搜索我所知道的一切,没有异常,没有调用< / p>

public void servicesDiscovered(int arg0, ServiceRecord[] arg1) 

public void serviceSearchCompleted(int arg0, int arg1)

所以我想我的问题是:  - 难道我做错了什么?有什么建议?   - 连接到BT设备的其他方法是什么,以及什么    我必须知道有关设备的信息吗?

以下是我认为与设备手册相关的一些信息:

  

必须执行以下步骤才能连接到HxM设备。   1)激活想要连接到HxM的设备/计算机的蓝牙服务   2)扫描范围内的蓝牙设备   3)与范围内的HxM设备配对   4)发现配对HxM的服务   5)连接到HxM设备的串口

     

上图显示蓝牙HxM通常通过蓝牙与移动设备通信   链接。 HxM一次只支持一个链路,并使用蓝牙SPP(串行端口配置文件)进行通信   与其他具有以下低级协议的设备:   •115,200波特   •8个数据位   •1个停止位   •无奇偶校验

非常感谢任何建议

编辑:我只想补充一点,我用控制台输入循环测试代码,所以在调用searchServices后程序没有立即终止,它应该有时间完成,除非我误解了async任务

1 个答案:

答案 0 :(得分:0)

我只想更新这个并说我发现了问题,似乎我不得不使用短UUID而不是长。在我认为自己陷入困境之前,我应该尝试过这两种选择,但我认为这不会产生任何影响。