在 android 上使用 Qt 蓝牙连接到 arduino

Use Qt Bluetooth on android to connect to an arduino

我在做一个项目,我需要通过蓝牙连接 arduino Uno 和平板电脑 Android。

我搜索了两个星期如何使用 Qt 库。 目前我使用自定义库 ( http://qt-project.org/forums/viewreply/193094/ ),但是这个库没有任何信号,所以我必须使用计时器来检查数据是否在串行缓冲区上。

我想使用 "official" Qt 库访问 signals/slots 系统。

目前我尝试将我的 arduino 设置为主从,android 据此设置,但没有任何效果。 我想在 android 上实现的目标:

启动应用程序

连接到已配对的 arduino(知道地址)

从arduino板接收到消息时得到一个信号

我想做的一件事是使用 QBluetoothSocket 连接到 arduino(arduino 作为从机,android 作为服务器)但是 QBluetoothSocket 似乎只在 android 的从机模式下工作。 QBluetoothServer 不能让我从我的 Qt 应用程序连接到 arduino。

感谢帮助!

编辑:我试试这个:

    socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol);
qDebug() << "Socket créé";
socket->connectToService(QBluetoothAddress("00:13:EF:00:06:4F"), QBluetoothUuid(serviceUuid), QIODevice::ReadWrite);
qDebug() << "Tentative de connection";

但我得到了这个:

W/System.err( 4861): java.io.IOException: Service discovery failed W/System.err( 4861): at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:462) W/System.err( 4861): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:240) W/System.err( 4861): at dalvik.system.NativeStart.run(Native Method) W/Qt ( 4861): (null):0 ((null)): qt.bluetooth.android: Falling back to workaround. W/Qt ( 4861): (null):0 ((null)): qt.bluetooth.android: Using found rfcomm channel -1 W/Qt ( 4861): (null):0 ((null)): qt.bluetooth.android: Invoke Resulted with error.

终于成功了!

我必须使用这个 uuid :

static const QString serviceUuid(QStringLiteral("00001101-0000-1000-8000-00805F9B34FB"));

因为Bt盾有默认的。上面的代码现在可以工作了。