带有bluetoothctl的Python脚本失败

带有bluetoothctl的Python脚本失败,python,shell,bluetooth,Python,Shell,Bluetooth,目前正在进行一个项目,我正在尝试与我的RPI3通信到一个BLE设备(仅从设备读取信息)。我正在使用bluez和bluetoothctl。我成功地将RPi连接到设备,并且可以选择属性和读取特征,但是我希望使用python脚本来完成这项工作(无需编写命令) 我的问题是,当我运行我的代码时,它似乎在第一个命令时就卡住了。这是我的代码: import subprocess subprocess.call('bluetoothctl') subprocess.call('connect E5:10

目前正在进行一个项目,我正在尝试与我的RPI3通信到一个BLE设备(仅从设备读取信息)。我正在使用bluez和bluetoothctl。我成功地将RPi连接到设备,并且可以选择属性和读取特征,但是我希望使用python脚本来完成这项工作(无需编写命令)

我的问题是,当我运行我的代码时,它似乎在第一个命令时就卡住了。这是我的代码:

 import subprocess 
 subprocess.call('bluetoothctl')
 subprocess.call('connect E5:10:78:27:B5:22')
结果如下

 pi@raspberrypi:~ $ cd Desktop/bluetooth/
 pi@raspberrypi:~/Desktop/bluetooth $ python main.py
 [NEW] Controller 5C:F3:70:87:7E:2E raspberrypi #1 [default]
 [NEW] Device E5:10:78:27:B5:22 PARKING CONNECTE
 [NEW] Controller B8:27:EB:6B:EC:CE raspberrypi 
 [NEW] Device E5:10:78:27:B5:22 PARKING CONNECTE
 [NEW] Device 0C:8F:FF:59:61:48 Wifi a vendre - 5e l'acces 
 [NEW] Device CF:8E:BE:9C:C1:30 Nordic_UART
 [bluetooth]# 

是否有人有解决方案或其他方法来读取设备的特性?(并可能将其返回到文件中)

我建议您查看,尤其是subprocess.Popen()函数

我不确定bluetoothctl是否是一个在启动时接受参数的程序,或者它是否必须保持运行才能监听传入的命令

如果是第二个,一些未经测试的伪代码可能看起来像:

import subprocess

process = subprocess.Popen(['bluetoothctl'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process.stdin.write('connect E5:10:78:27:B5:22')
process.stdin.flush()
process.wait()
output, errors = process.communicate()

output_to_write_to_file = output.decode()

然后,您所要做的就是在Google上搜索如何用Python将变量的内容写入文件。(这应该不难找到)

我建议您看看,尤其是subprocess.Popen()函数

我不确定bluetoothctl是否是一个在启动时接受参数的程序,或者它是否必须保持运行才能监听传入的命令

如果是第二个,一些未经测试的伪代码可能看起来像:

import subprocess

process = subprocess.Popen(['bluetoothctl'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process.stdin.write('connect E5:10:78:27:B5:22')
process.stdin.flush()
process.wait()
output, errors = process.communicate()

output_to_write_to_file = output.decode()
然后,您所要做的就是在Google上搜索如何用Python将变量的内容写入文件。(这应该不难找到)