admin管理员组

文章数量:1130349

摘要:前段时间用QT写了一个串口调试助手,感觉还可以。因为QT是跨平台的,同样一套代码可以在windows上面跑,也可以在linux上面跑,也可以在安卓手机上面跑。而且不需要修改任何东西,编译器会自动给你生成好,这就非常的方便。既然可以在手机上面跑,那么我把串口改成蓝牙不就是一个蓝牙APP了吗?说干就干,网上关于QT开发蓝牙的已经有相关的资料了,于是乎就综合各方面资料,整合了一个蓝牙APP。

做这个app不需要任何的Java的知识,你只要会QT最基本的C++基础就可以了。关于代码,我会在文章末尾放上链接。只有你手头有蓝牙模块(HC-05)和安卓手机就可以实现蓝牙APP的功能。

一、软硬件平台

1.1 硬件平台

1、蓝牙:HC-05,(淘宝上有卖),它的接口就是跟串口一样的,我们用到了TX,RX,GND,VCC四个引脚。跟下位机或者用CH340G TTL转USB模块接到PC机上。蓝牙工作在串口模式可以通过AT指令调节。具体参考蓝牙配套的说明文档,最主要的就是请将蓝牙设定为从机模式,否则安卓手机搜寻链接不上。

2、安卓手机:我这里测试用了1台安卓手机,一台是华为荣耀V10,安卓版本10。

1.2 软件平台

本项目Qt版本是5.13.7,系统是windows 10 x64

二、软件基本介绍

因为第一次做蓝牙,就做一个非常简单的雏形,实现蓝牙状态检测、蓝牙的开关、蓝牙的扫描和蓝牙配对链接,并且能像串口助手一样完成数据收发。如图,就是本一开始做的最简单的软件界面,本软件基于mainwinodw控件制作,当然你可以选择其他的,更可以自己定义类。

蓝牙打开后通过扫描,会将蓝牙的MAC地址还有名字显示在List中,双击List列表中的蓝牙,就会进入actived信号连接的槽函数,执行蓝牙的配对连接。建立连接之后,就类似串口一样可以进行数据通信了。

三、 蓝牙开发

3.1 项目文件准备

需要用到蓝牙就需要在.pro文件中引入库,需要在.pro文件中加入这句话:

QT += bluetooth

如果没有这句话的话,包含蓝牙目录下的头文件,会提示找不到该文件。之后就是要包含一些蓝牙用到的头文件:

#include <QtBluetooth/qbluetoothglobal.h>
#include <QtBluetooth/qbluetoothlocaldevice.h>
#include <qbluetoothaddress.h>
#include <qbluetoothdevicediscoveryagent.h>
#include <qbluetoothlocaldevice.h>
#include <qbluetoothsocket.h>

请在类中声明定义蓝牙相关句柄:

QBluetoothDeviceDiscoveryAgent *discoveryAgent;//用来对周围蓝牙进行搜寻
QBluetoothLocalDevice *localDevice;//对本地设备进行操作,比如进行设备的打开,设备的关闭等等
QBluetoothSocket *socket;//就是用来进行蓝牙配对链接和数据传输的

第一个discoveryAgent是用来对周围蓝牙进行搜寻,localDevice是对本地设备进行操作,比如进行设备的打开,设备的关闭等等。socket就是用来进行蓝牙配对链接和数据传输的。这里要用到这三个。

3.2 蓝牙开关和可见性设定

在构造函数中,为localDevice使用new运算符分配内存。

localDevice = new QBluetoothLocalDevice();
1) 蓝牙开关

我们如何来对蓝牙进行打开和关闭呢?我在open按钮和close按钮的槽函数中对蓝牙进行开关操作。localDevice->powerOn();方法调用打开本地的蓝牙设备。在打开蓝牙之前检测手机是否已经打开了蓝牙,如果没打开就打开,如果打开了就提示蓝牙已打开。

void MainWindow::on_pushButton_openBLE_clicked()
{
   
   
    if( localDevice->hostMode() == QBluetoothLocalDevice::HostPoweredOff)//开机没有打开蓝牙
    {
   
   
        localDevice->powerOn();//调用打开本地的蓝牙设备
        discoveryAgent->start();//开始扫描蓝牙设备
    }
    else
    {
   
   
         QMessageBox::information(this, tr("成功"), tr(

摘要:前段时间用QT写了一个串口调试助手,感觉还可以。因为QT是跨平台的,同样一套代码可以在windows上面跑,也可以在linux上面跑,也可以在安卓手机上面跑。而且不需要修改任何东西,编译器会自动给你生成好,这就非常的方便。既然可以在手机上面跑,那么我把串口改成蓝牙不就是一个蓝牙APP了吗?说干就干,网上关于QT开发蓝牙的已经有相关的资料了,于是乎就综合各方面资料,整合了一个蓝牙APP。

做这个app不需要任何的Java的知识,你只要会QT最基本的C++基础就可以了。关于代码,我会在文章末尾放上链接。只有你手头有蓝牙模块(HC-05)和安卓手机就可以实现蓝牙APP的功能。

一、软硬件平台

1.1 硬件平台

1、蓝牙:HC-05,(淘宝上有卖),它的接口就是跟串口一样的,我们用到了TX,RX,GND,VCC四个引脚。跟下位机或者用CH340G TTL转USB模块接到PC机上。蓝牙工作在串口模式可以通过AT指令调节。具体参考蓝牙配套的说明文档,最主要的就是请将蓝牙设定为从机模式,否则安卓手机搜寻链接不上。

2、安卓手机:我这里测试用了1台安卓手机,一台是华为荣耀V10,安卓版本10。

1.2 软件平台

本项目Qt版本是5.13.7,系统是windows 10 x64

二、软件基本介绍

因为第一次做蓝牙,就做一个非常简单的雏形,实现蓝牙状态检测、蓝牙的开关、蓝牙的扫描和蓝牙配对链接,并且能像串口助手一样完成数据收发。如图,就是本一开始做的最简单的软件界面,本软件基于mainwinodw控件制作,当然你可以选择其他的,更可以自己定义类。

蓝牙打开后通过扫描,会将蓝牙的MAC地址还有名字显示在List中,双击List列表中的蓝牙,就会进入actived信号连接的槽函数,执行蓝牙的配对连接。建立连接之后,就类似串口一样可以进行数据通信了。

三、 蓝牙开发

3.1 项目文件准备

需要用到蓝牙就需要在.pro文件中引入库,需要在.pro文件中加入这句话:

QT += bluetooth

如果没有这句话的话,包含蓝牙目录下的头文件,会提示找不到该文件。之后就是要包含一些蓝牙用到的头文件:

#include <QtBluetooth/qbluetoothglobal.h>
#include <QtBluetooth/qbluetoothlocaldevice.h>
#include <qbluetoothaddress.h>
#include <qbluetoothdevicediscoveryagent.h>
#include <qbluetoothlocaldevice.h>
#include <qbluetoothsocket.h>

请在类中声明定义蓝牙相关句柄:

QBluetoothDeviceDiscoveryAgent *discoveryAgent;//用来对周围蓝牙进行搜寻
QBluetoothLocalDevice *localDevice;//对本地设备进行操作,比如进行设备的打开,设备的关闭等等
QBluetoothSocket *socket;//就是用来进行蓝牙配对链接和数据传输的

第一个discoveryAgent是用来对周围蓝牙进行搜寻,localDevice是对本地设备进行操作,比如进行设备的打开,设备的关闭等等。socket就是用来进行蓝牙配对链接和数据传输的。这里要用到这三个。

3.2 蓝牙开关和可见性设定

在构造函数中,为localDevice使用new运算符分配内存。

localDevice = new QBluetoothLocalDevice();
1) 蓝牙开关

我们如何来对蓝牙进行打开和关闭呢?我在open按钮和close按钮的槽函数中对蓝牙进行开关操作。localDevice->powerOn();方法调用打开本地的蓝牙设备。在打开蓝牙之前检测手机是否已经打开了蓝牙,如果没打开就打开,如果打开了就提示蓝牙已打开。

void MainWindow::on_pushButton_openBLE_clicked()
{
   
   
    if( localDevice->hostMode() == QBluetoothLocalDevice::HostPoweredOff)//开机没有打开蓝牙
    {
   
   
        localDevice->powerOn();//调用打开本地的蓝牙设备
        discoveryAgent->start();//开始扫描蓝牙设备
    }
    else
    {
   
   
         QMessageBox::information(this, tr("成功"), tr(

本文标签: 蓝牙手机QTApp