我正在尝试在我的Andorid手机上运行一个简单的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);
}
}
我可以通过键入blueSMiRF
来使用Putty访问$$$
的命令模式。一切似乎都没问题。我对服务类和设备类的设置只有轻微的担忧。它们分别设置为0x0000
和0x1f00
的出厂默认值,我想知道服务类是否需要设置为0x1101
(SSP的UUID)。
其他信息: Android版本2.3.3 SL4A r4
答案 0 :(得分:0)
当蓝调用板与arduino板通话时,切换RXS-TX。
如果您能够通过PC连接到blueSMiRF,它将RX-TX设置为arduino-board。
PC到blueSMiRF设置:
PC TX - > Arduino RX - > blueSMiRF RX
PC RX< -Arduino TX< - blueSMiRF TX
Arduino到blueSMiRF设置:
Arduino RX - > blueSMiRF TX
Arduino TX< - blueSMiRF RX
答案 1 :(得分:0)
PyBluez模块一般运行良好,我已经将它与SL4A一起使用,没有任何问题。你可能有更好的运气,只需使用它并完全跳过Java。
PyBluez不是纯Python模块,因此必须进行编译,但这已经完成,并且可以从Py4A网站的downloads部分获得最新版本。这是我个人使用的副本,没有任何问题。
只需将副本下载到您的机器人,打开Python4Android应用程序,点击导入模块,然后选择PyBluez蛋。