Python替代linux bluetooth命令" rfcomm connect"

时间:2016-06-07 15:27:17

标签: python linux bluetooth rfcomm pybluez

要求: 我需要连接到远程蓝牙设备&端口并使用设备文件发送数据。 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替代方案来实现这一点。

2 个答案:

答案 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")