2012-04-15 76 views
0

我正在研究蓝牙协议和实现一个定位系统读取RSSI以dBm从某些设备。系统将实施3个固定站,一个已知的经度和一个移动站。定位将在移动台上完成,每个定位台的接收功率(dBm)和典型位置算法。蓝牙协议和实现一个位置系统与四个设备

为了提高系统的效率,蓝牙设备的一些参数需要改变。此参数可以是:

  • 上固定站扫描时间以减少时间上回应询。

  • 询访问代码得到的只是从选定的设备(我们的3个固定站)

  • 有些人回答到查询。

有一些情况下,可以用来做取决于使用TECNOLOGIES(其中一些是有限的):

  • 修复台使用Linux OS(没有问题,修改参数),使用Android的移动电台(似乎只具有蓝牙功能,但蓝牙设置很难或无法修改)。 见:http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html

  • 运行Linux操作系统,和C所有气象台++移动台(似乎是很容易从shell脚本运行hcitool用于修复站修改我们的设置,但似乎很难对C++得到实现的源代码RSSI与我们需要的数值以dBm为链接来固定移动台上的电台)。

  • 讨厌的方式。所有运行Linux操作系统和shell脚本的工作站,在shell脚本下运行的移动站在发起查询后从hcidump的输出重定向解析来自RSSI的值。

这似乎是很难找到与此相关的方案有用的信息。也许你们中的一些人可以帮助选择最佳方案并描述应该如何实施。

(很抱歉,如果东西它不是在一个更好的方式解释..我的英语很糟糕。)

感谢。

回答

0

对不起,我没有关注你写的所有内容,但我认为第一步是到固定站的HCI层。这是相当直接的完成,并给你一个适当的控制。

正如您所提到的,hcitool非常有用,但使用什么工具或语言并不重要。您可以从任何语言访问HCI命令。

例如,我在ALIX盒子上用Voyage Linux做了这样的事情。 Voyage是基于debian的,所以现在的问题是加载BlueZ,PyBluez和Python。 Python可以很容易地快速建立一个解决方案,如果需要的话可以稍后转换为C++。 (更多here。)

但是,这只是一个例子 - 使用任何你喜欢的堆栈,只要你可以在HCI层获得。(通过HCI层需要您使用特定的芯片组并将代码直接加载到蓝牙芯片组中。)

在移动设备上,您可能会受到严重限制:如果您尝试潜在的真实世界实施。如果这仅仅是为了实验室,你应该得到使用标准Bluez堆栈的扎根Android设备,然后就像在固定设备上一样,你可以在HCI接口获得。毕竟,Android只是Linux,所以如果你有root用户,你可以做你想做的。