蓝牙透传模块芯片有如下两种BLE和SPP协议子集
BLE蓝牙是蓝牙2.0以上的蓝牙模块,属于低功耗蓝牙部分。spp经典蓝牙是蓝牙2.0以下的蓝牙。
spp蓝牙型号有HC-02/HC-04/HC-05/HC-06/HC-07,默认配对密码1234。spp蓝牙协议的模块可以与手机直接配对。
ble蓝牙协议的模块需要通过ble协议的app或小程序进行连接,BLE蓝牙型号有HC-04/HC-08/HC-09/HC-42。
因此在使用QT编程时,spp蓝牙与ble蓝牙有两种不同的通信方式,所需要的配置各不相同.
首先我们来讲解spp经典蓝牙通信方式的一些经典问题:
首先,QT版本开发环境尽量为5.14.2以上,否则编译时会报错qt.bluetooth: Dummy backend running. Qt Bluetooth module is non-functional.
spp经典蓝牙使用socket编程进行客户端与服务器之间的通信(与网络socket相似),可使用MinGW编译器。
若要在Qt中使用蓝牙库需要在.pro文件添加一下一句话
QT += bluetooth
然后我们来讲解一下ble低功耗蓝牙通信方式的一些经典问题:
BLE蓝牙则无法使用socket进行通信。BLE蓝牙下有服务、特征值,所谓的BLE蓝牙通信其实就是对特征值的一个读写操作。QT编译器必须选用MSVC编译器,否则无法扫描出低功耗蓝牙。搜索API中参数需要添加为下列形式:
Discovery->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod);
void MainWindow::addBlueToothDevicesToList(QBluetoothDeviceInfo Info)
{
if(Info.coreConfigurations() & QBluetoothDeviceInfo::LowEnergyCoreConfiguration)
{
QString showStr = QString(Info.name()) + QString("(") + QString(Info.address().toString()) + QString (")");
ui->listWidget->addItem(showStr);
deviceList.append(Info);
}
}
具体例程源码,后续会上传到资源。