Android蓝牙连接问题
Posted
技术标签:
【中文标题】Android蓝牙连接问题【英文标题】:Android Bluetooth Connection Problems 【发布时间】:2011-12-23 06:38:49 【问题描述】:我正在尝试在我的 Andorid 手机(使用 SL4A)上运行一个简单的 python 脚本来连接到 BlueSMiRF 蓝牙调制解调器(基于 RN41 设备),但是无论我尝试什么,当我遇到以下错误时我尝试连接。
java.io.IOException: 无法启动服务发现
python脚本如下所示
import android
droid = android.Android()
droid.toggleBluetoothState(True)
result = droid.bluetoothConnect()
#result = droid.bluetoothConnect('00001101-0000-1000-8000-00805f9B34fb')
#result = droid.bluetoothConnect('00001101-0000-1000-8000-00805f9B34fb', '00:06:66:07:AE:44')
print repr(result)
droid.toggleBluetoothState(False)
我已经尝试了bluetoothConnect()
的所有三种变体,如上面的代码所示。如果我尝试前两种连接方法,我也可以在要连接的设备列表中看到blueSMiRF
。
我的 arduino 草图(在 Arduino Mega 上运行)如下所示。它只是将字符从一个端口转发到另一个端口。 Serial
在 9600 连接到我的笔记本电脑,Serial1
在 115200 连接到 BlueSMiRF
。
void setup ()
// initialise serial
Serial.begin(9600);
Serial1.begin(115200);
void loop ()
if (Serial1.available())
char c = Serial1.read();
Serial.print(c);
if (Serial.available())
char c = Serial.read();
Serial1.print(c);
我可以通过输入$$$
来使用Putty 访问blueSMiRF
的命令模式。一切似乎都还好。我只是对服务类和设备类的设置有一点担心。这些分别设置为0x0000
和0x1f00
的出厂默认值,我想知道服务类是否可能需要设置为0x1101
(SSP 的UUID)。
其他信息: 安卓版本 2.3.3 SL4A r4
【问题讨论】:
您可能想尝试在 Py4A 邮件列表中询问或检查 Py4A 问题。 【参考方案1】:当 blueSMiRF 与 arduino 板通信时,为它切换 RX-TX。
如果您能够通过 PC 连接到 blueSMiRF,则它具有 RX-TX 设置作为 arduino 板。
PC 到 blueSMiRF 设置: PC TX --> Arduino RX --> blueSMiRF RX PC RX
Arduino 到 blueSMiRF 设置: Arduino RX --> blueSMiRF TX Arduino TX RX
【讨论】:
【参考方案2】:PyBluez 模块总体上运行良好,我已经将它与 SL4A 一起使用,没有任何问题。使用它并完全跳过 Java 可能会更好。
PyBluez 不是纯 Python 模块,因此必须对其进行编译,但这已经完成,最新版本可从 Py4A 站点的 downloads 部分获得。这是我个人使用的副本,没有任何问题。
只需将副本下载到您的 droid,打开 Python4Android 应用,点击 Import Modules,然后选择 PyBluez egg。
【讨论】:
以上是关于Android蓝牙连接问题的主要内容,如果未能解决你的问题,请参考以下文章