2011-11-06 184 views
4

我想要获得一个简单的python脚本在我的Andorid手机上运行(使用SL4A)连接到BlueSMiRF蓝牙调制解调器(基于RN41设备),但是无论我尝试什么,当我尝试连接时出现以下错误。Android的蓝牙连接问题

java.io.IOException: Unable to start Service Discovery 

- 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上)如下所示。它只是将字符从一个端口转发到另一个端口。串行9600连接到我的笔记本电脑,接口Serial1在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); 
    } 
} 

连接到BlueSMiRF我可以用腻子通过键入$$$访问blueSMiRF的命令模式。一切似乎都没问题。我对服务类和设备类的设置只有轻微的担忧。这些设置为出厂默认值0x0000和0x1f00 respectivley,我想知道服务类是否可能需要设置为0x1101(UUID为SSP)。

其他信息: Android版本2.3.3 SL4A R4

+0

您可能想尝试询问Py4A邮件列表或检查Py4A问题。 – Velociraptors

回答

0

开关RX-TX的blueSMiRF时,它应与Arduino板交谈。

如果您能够通过PC连接到blueSMiRF,它将RX-TX设置为arduino板。

电脑blueSMiRF设置:
PC TX - > Arduino的RX - > blueSMiRF RX
PC RX < - Arduino的TX < - blueSMiRF TX

的Arduino到blueSMiRF设置:
的Arduino RX - > blueSMiRF TX
Arduino的TX < - blueSMiRF RX

0

PyBluez模块在一般情况下运行良好,我已将它与SL4A一起使用,没有任何问题。你可能会有更好的运气,并完全跳过Java。

PyBluez不是一个纯Python模块,因此它必须进行编译,但已经完成,最近的版本可以从Py4A站点的downloads部分获得。这是我个人使用的副本,没有任何问题。

只需将副本下载到您的droid,打开Python4Android应用程序,点击导入模块,然后选择PyBluez蛋。