我想通过蓝牙从我的Android手机(目前使用BlueTerm)与我的覆盆子pi上的python应用程序进行通信。
我试图获得以下内容' Hello World'在我的树莓派上工作的脚本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import pty
import uuid
import bluetooth
def main():
server_sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
server_sock.bind(('', bluetooth.PORT_ANY))
server_sock.listen(1)
port = server_sock.getsockname()[1]
random_uuid = str(uuid.uuid4())
bluetooth.advertise_service(server_sock,
'ShellServer',
service_id=random_uuid,
service_classes=[random_uuid, bluetooth.SERIAL_PORT_CLASS],
profiles=[bluetooth.SERIAL_PORT_PROFILE]
)
print("Waiting for connection on RFCOMM channel {0}".format(port))
while True:
try:
client_sock, (client_addr, client_ch) = server_sock.accept()
except KeyboardInterrupt:
break
print("Accepted connection from {0}".format(client_addr))
client_sock.send("Hello World!")
client_sock.close()
print('Shutting down the server socket...')
server_sock.close()
if __name__ == '__main__':
main()
(基于https://warroom.securestate.com/index.php/spawning-shells-over-bluetooth/的代码)
我按照网络上的教程配对设备:
pi @ raspberrypi~ $ sudo hciconfig hci0 piscan pi @ raspberrypi~ $ sudo bluetooth-agent 1234 Pincode请求设备/ org / bluez / 2152 / hci0 / dev _ [...]
配对似乎有效(设备显示在' sudo bluez-test-device list')。 在另一个终端上,我启动脚本:
pi@raspberrypi /usr/local/bin $ sudo python bluetest.py Waiting for connection on RFCOMM channel 1
我尝试使用BlueTerm进行连接,但这只是给了我消息"无法连接设备"。剧本本身是沉默的; server_sock.accept()永远不会返回。
令人恼火的部分是:完全相同的设置(相同的脚本,相同的手机,相同的配对程序,相同的蓝牙适配器)在我的台式机(Ubuntu 14.04)上按预期工作。
/etc/bluetooth/main.conf和/etc/bluetooth/rfcomm.conf在两台机器上都是相同的。
关于pi的更多信息:
pi@raspberrypi ~ $ cat /etc/*release PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)" NAME="Raspbian GNU/Linux" VERSION_ID="7" VERSION="7 (wheezy)" ID=raspbian ID_LIKE=debian ANSI_COLOR="1;31" HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" pi@raspberrypi ~ $ uname -a Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l GNU/ Linux pi@raspberrypi ~ $ hcitool --version hcitool: unrecognized option '--version' hcitool - HCI Tool ver 4.99 Usage: [...] pi@raspberrypi ~ $ lsusb Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 04d9:1602 Holtek Semiconductor, Inc. Bus 001 Device 005: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) pi@raspberrypi /usr/local/bin $ aptitude versions bluetooth bluez-utils bluez-compat Package bluetooth: i 4.99-2 oldstable 500 Package bluez-compat: i 4.99-2 oldstable 500 Package bluez-utils: p 4.99-2 oldstable 500 [...]
桌面计算机是一个非常标准的Ubuntu 14.04。
为什么脚本在桌面系统上完全按预期工作而不在pi上工作的原因可能是什么?
这是我第一次使用蓝牙和rfcomm,我已经没有想法如何调试它。我非常感谢你的帮助。