简介
使用PC蓝牙和蓝牙透传模块通讯。
准备
QT += core gui bluetooth
QT蓝牙库相关头文件
#include <QtBluetooth/qbluetoothglobal.h>
#include <QtBluetooth/qbluetoothlocaldevice.h>
#include <qbluetoothaddress.h>
#include <qbluetoothdevicediscoveryagent.h>
#include <qbluetoothlocaldevice.h>
#include <qbluetoothsocket.h>
QT蓝牙重要的接口类
QBluetoothDeviceDiscoveryAgent -- 蓝牙搜索类(BLE蓝牙或经典蓝牙都使用此类进行搜索)
QBluetoothLocalDevice -- BLE本地蓝牙设备管理类
QBluetoothSocket -- BLE蓝牙通讯相关
获取本地蓝牙情况
if( localDevice->hostMode() == QBluetoothLocalDevice::HostPoweredOff)//设备没有打开蓝牙
{
localDevice->powerOn();//调用打开本地的蓝牙设备
m_bleDiscoveryAgent->start();//开始扫描蓝牙设备
}
关闭蓝牙
localDevice->setHostMode(QBluetoothLocalDevice::HostPoweredOff);
蓝牙连接处理
需要服务UUID serviceUuid和蓝牙MAC地址address
socket->connectToService(address, QBluetoothUuid(serviceUuid) ,QIODevice::ReadWrite);
发送蓝牙数据处理
QByteArray arrayData;
QString s("aa bb cc dd\n");
socket->write(s.toUtf8());
接收蓝牙数据处理
QBluetoothSocket *socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol);
//接收BLE蓝牙数据触发下面槽函数
connect(socket,SIGNAL(readyRead()),this,SLOT(readBluetoothDataEvent()));
//读取蓝牙数据只需要readALL()
void MainWindow::readBluetoothDataEvent()
{
QByteArray line = socket->readAll();
QString strData = line.toHex();
comStr.append(strData);
if(comStr.length() >= 4)
{
ui->textBrowser->append(comStr + "\n");
comStr.clear();
}
}
效果如下
查找蓝牙设备
连接
向蓝牙模块发送数据
接收蓝牙模块数据
补充中
。。。休息