简介
使用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();
    }
}
效果如下
查找蓝牙设备
 
 连接
 
向蓝牙模块发送数据


接收蓝牙模块数据

补充中
。。。休息



















![[Android JNI] --- JNI基础](https://img-blog.csdnimg.cn/9e20d1eaabaf422b8ca41d0fe4889886.png)