dbus-send 在 shell 脚本中不工作
dbus-send not working in shell script
我想要在笔记本电脑 (Debian 8) 和智能手机 (Android) 之间进行蓝牙网络共享。
在 arch linux wiki (https://wiki.archlinux.org/index.php/android_tethering#Tethering_via_Bluetooth) 我找到了这个命令:bus-send --system --type=method_call --dest='org.bluez' '/org/bluez/hci0/dev_C0_EE_FB_20_D7_00' org.bluez.Network1.Connect string:'nap'
当我在普通终端中执行它时,一切正常。出于我的目的,我需要在 QT 应用程序中调用此命令。因此,我创建了一个 shell 脚本。但是当执行脚本时没有任何反应。在新 shell (sh
).
中调用命令时的结果相同
有没有人知道如何让它工作或以其他方式工作?我的普通终端是默认的 Debian 终端,'Root Terminal
'。
谢谢
我使用 QDBus 对象解决了它。首先我创建以下两种方法:
QString MainWindow::getDBusInterface(){
QString interface = "/org/bluez/hci0/dev";
QStringList macParts = ui->selectedMac->text().toUpper().split(":");
for (int i = 0; i < macParts.length(); i++){
interface.append("_").append(macParts[i]); //MAC address to connect to from GUI
}
return interface;
}
和
QDBusMessage MainWindow::sendDBus(QString destination, QString path, QString interface, QString method, QList<QVariant> arguments){
QDBusMessage response;
QDBusConnection system = QDBusConnection::systemBus();
if (!system.isConnected())
{
qFatal("Cannot connect to the D-Bus session bus.");
return response;
}
QDBusMessage message2 = QDBusMessage::createMethodCall(destination, path, interface, method);
message2.setArguments(arguments);
// synchronous call (not recommended, blocking)
response = QDBusConnection::systemBus().call(message2);
qDebug() << "response is: " << response;
return response;
}
最后我打电话给:
QString interface = getDBusInterface();
QList<QVariant> arguments;
arguments.append("nap");
QDBusMessage response = sendDBus("org.bluez",
interface,
"org.bluez.Network1",
"Connect",
arguments);
我想要在笔记本电脑 (Debian 8) 和智能手机 (Android) 之间进行蓝牙网络共享。
在 arch linux wiki (https://wiki.archlinux.org/index.php/android_tethering#Tethering_via_Bluetooth) 我找到了这个命令:bus-send --system --type=method_call --dest='org.bluez' '/org/bluez/hci0/dev_C0_EE_FB_20_D7_00' org.bluez.Network1.Connect string:'nap'
当我在普通终端中执行它时,一切正常。出于我的目的,我需要在 QT 应用程序中调用此命令。因此,我创建了一个 shell 脚本。但是当执行脚本时没有任何反应。在新 shell (sh
).
有没有人知道如何让它工作或以其他方式工作?我的普通终端是默认的 Debian 终端,'Root Terminal
'。
谢谢
我使用 QDBus 对象解决了它。首先我创建以下两种方法:
QString MainWindow::getDBusInterface(){
QString interface = "/org/bluez/hci0/dev";
QStringList macParts = ui->selectedMac->text().toUpper().split(":");
for (int i = 0; i < macParts.length(); i++){
interface.append("_").append(macParts[i]); //MAC address to connect to from GUI
}
return interface;
}
和
QDBusMessage MainWindow::sendDBus(QString destination, QString path, QString interface, QString method, QList<QVariant> arguments){
QDBusMessage response;
QDBusConnection system = QDBusConnection::systemBus();
if (!system.isConnected())
{
qFatal("Cannot connect to the D-Bus session bus.");
return response;
}
QDBusMessage message2 = QDBusMessage::createMethodCall(destination, path, interface, method);
message2.setArguments(arguments);
// synchronous call (not recommended, blocking)
response = QDBusConnection::systemBus().call(message2);
qDebug() << "response is: " << response;
return response;
}
最后我打电话给:
QString interface = getDBusInterface();
QList<QVariant> arguments;
arguments.append("nap");
QDBusMessage response = sendDBus("org.bluez",
interface,
"org.bluez.Network1",
"Connect",
arguments);