安卓蓝牙连接问题

4 投票
2 回答
2796 浏览
提问于 2025-04-17 05:46

我正在尝试在我的安卓手机上运行一个简单的Python脚本(使用SL4A),目的是连接一个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连接到BlueSMiRF,波特率为115200。

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的命令模式。一切看起来都正常。我只是对服务类和设备类的设置有些担心。这些设置都是出厂默认值,分别是0x00000x1f00,我在想服务类是否需要设置为0x1101(SSP的UUID)。

其他信息: 安卓版本 2.3.3 SL4A r4

2 个回答

0

PyBluez这个模块总体上运行得不错,我在使用SL4A的时候也没有遇到什么问题。你可以试试直接用这个模块,完全跳过Java部分,可能会更顺利。

不过,PyBluez并不是一个纯粹的Python模块,所以它需要编译才能使用。不过这个问题已经解决了,最近的版本可以在Py4A网站的下载部分找到。我个人就是用这个版本,使用起来没有任何问题。

你只需要把这个版本下载到你的安卓手机上,打开Python4Android应用,点击导入模块,然后选择PyBluez的文件就可以了。

0

当蓝色的蓝牙模块 blueSMiRF 要和 Arduino 板子通信时,需要把 RX 和 TX 线对调一下。

如果你能通过电脑连接到 blueSMiRF,那么它的 RX 和 TX 设置就和 Arduino 板子一样。

电脑到 blueSMiRF 的连接方式是:
电脑的 TX 线连接到 Arduino 的 RX 线,再连接到 blueSMiRF 的 RX 线。
电脑的 RX 线则是连接到 Arduino 的 TX 线,再连接到 blueSMiRF 的 TX 线。

Arduino 到 blueSMiRF 的连接方式是:
Arduino 的 RX 线连接到 blueSMiRF 的 TX 线。
Arduino 的 TX 线连接到 blueSMiRF 的 RX 线。

撰写回答