要求: 我需要连接到远程蓝牙设备&端口并使用设备文件发送数据。 1.首先扫描最近的蓝牙设备 2.连接到远程BT addr&通道并使用设备文件(/ dev / rfcomm0)进行通信
我被困在第二步。我能够通过linux shell
来做到这一点sudo rfcomm connect /dev/rfcomm0 00:11:22:33:44:55 1 &
这是有效的,然后我打开我的python解释器并使用rfcomm0设备文件与远程设备通信。
但我的要求是设备地址可能会发生变化。所以我想通过python程序连接并释放连接。
我尝试使用python子进程。 但问题是它会立即返回一个返回码0,然后在一定的延迟后建立连接。
import subprocess
host = '00:11:22:33:44:55'
port = "1"
subprocess.call(["rfcomm connect",host,port,"&"],shell=True)
我正在寻找是否有任何pyBluez或任何其他python替代方案来实现这一点。
答案 0 :(得分:1)
import subprocess
host = input()
port = 1
cmd = "sudo rfcomm connect /dev/rfcomm0 {} {} &".format(host, port)
conn = subprocess.Popen(cmd, shell=True)
if conn.returncode is None:
print("error in opening connection")
导入子流程模块
从用户(主机)读取蓝牙地址
端口号也可以作为输入读取,我正在考虑默认端口1
cmd =“ sudo rfcomm connect / dev / rfcomm0 {} {}&”。format(host,port)将根据给定的参数创建一个命令
执行命令后,有许多读取输出和错误的方法。进一步了解Popen @ https://docs.python.org/3/library/subprocess.html
答案 1 :(得分:0)
你可以在os模块下运行Shell命令。您可以像这样存储返回值:
from os import system
Returnedstring = system("Shell command")