QT 之蓝牙BLE编程

news2024/11/19 7:33:18

简介

使用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();
    }
}

效果如下

查找蓝牙设备
在这里插入图片描述
连接
在这里插入图片描述

向蓝牙模块发送数据

在这里插入图片描述

在这里插入图片描述

接收蓝牙模块数据

在这里插入图片描述

补充中

。。。休息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

造船码头行车/电动葫芦控制系统的无线技改

一、应用背景 近年来&#xff0c;我国造船业在高技术船舶研发和建造方面持续取得新突破&#xff0c;据统计截止到2022年&#xff0c;我国造船业完工量、新接订单量、手持订单量三大指标国际市场份额均保持世界前列。连续13年位居全球居首。随着船舶制造的综合能力不断提高&…

微信小程序制作 购物商城首页 【内包含源码】

1、实现效果 手机效果预览,这里的首页使用到了轮播图。页面图片数据可以替换成自己的数据。 2、开发者工具效果图 3、项目的目录结构 4、首页核心代码 4.1 index.js 这里用来存放数据,页面的数据。目前是假数据,也可以调用接口接收真实数据 // index.jsimport {request }…

spring-依赖注入的方式

setter注入-可选依赖注入 简单类型&#xff1a; 1.配置类 2.set方法 引用类型&#xff1a; 构造器注入-强制依赖注入 简单类型&#xff1a; 引用类型&#xff1a; 通过有参构造&#xff0c;获得需要注入的对象 <construct-arg />标签中name属性中填写的时构造方…

数据结构--二叉树的层遍历

数据结构–二叉树的层遍历 算法思想: ①初始化一个辅助 队列 \color{red}队列 队列 ②根结点入队 ③若队列非空&#xff0c;则队头结点出队&#xff0c;访问该结点&#xff0c;并将其左、右孩子插入队尾&#xff08;如果有的话) ④重复③直至队列为空 代码实现 typedef struc…

pycharm的环境配置运行

刚开始用pycharm打开一个项目文件时&#xff0c;由于没有配置文件&#xff0c; 程序是不能运行的 运行的按钮为灰色 此时在项目浏览器中右键点击项目主程序&#xff0c;在下拉菜单中选择运行&#xff0c; 快捷键为ctrlshiftF10在配置中会自动添加以主程序为名称的配置 这时可…

vue3实现折叠面板

总是忘记vue怎么实现折叠面板&#xff0c;记录一下&#xff0c;没有动画样式。 <div class"item-content padding15" style"font-size: 0.875rem;" click"changeCollapse(index)" v-for"(item, index) in collData.dataList" :key&…

mtk log、kernel log、adb log的详细使用

目录 mtk logkernel logadb log 打印MTK log&#xff0c;里面就包含了kernel层的log&#xff0c;像我们adb log打印的是上层应用的log&#xff0c;mtk log打印的则是更底层的log。 那么什么时候需要用到mtk log 呢&#xff1f; 就比如你想抓一些从关机到开机的log&#xff0c;…

基于 SpringBoot + Vue 的前后端分离的高校招生管理系统

【程序员徐师兄】&#xff1a;hello你好我是程序员徐师兄&#xff0c;6年大厂经验。很高兴你能来阅读&#xff0c;希望我们能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新…

AICG - Stable Diffusion 的扩展插件 (Extensions) 的配置与使用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131576762 Prompt: (masterpiece, top quality, best quality, ((standing in centre)), ((1girl, black hair)), ((upper body, symmetrical com…

leetcode 141.环形链表 I - 142.环形链表 II 代码及指针相遇证明问题

⭐️ 环形链表 I 题目描述 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 如果链表中存在环 &#xff0c;则返回 true 。 否则&#xff0c;返回 false 。 思…

Vue项目在IE浏览器页面白屏且报错SCRIPT1010:缺少标识符

背景 &#xff1a;Vue2 项目在谷歌浏览器运行好好的&#xff0c;在 IE 浏览器打开就会出现各种的问题。。 控制台报错 &#xff1a;SCRIPT1010: 缺少标识符 文件&#xff1a;app.403ea2d4.js&#xff0c;行&#xff1a;1&#xff0c;列&#xff1a;180 问题 &#xff1a; 同伴 …

Linux 中查找 IP 地址的方法

概要 在 Linux 系统中&#xff0c;经常需要查找 IP 地址以进行网络配置、故障排除或安全管理。无论是查找本地主机的 IP 地址还是查找其他设备的 IP 地址&#xff0c;本文将介绍三种简单的方法&#xff0c;帮助你在 Linux 中轻松找到所需的 IP 地址。 方法一&#xff1a;使用 i…

Greenplum数据库优化器——Join类型

join 类型语法支持 from语句允许JOIN表达式和表名列表&#xff0c;将joined_table从table_ref中分离出来&#xff0c;It may seem silly to separate joined_table from table_ref, but there is method in SQL’s madness: if you don’t do it this way you get reduce-redu…

【网络结构】——TinyViT 一种transformer的蒸馏方案

来自 Microsoft 摘要 TinyViT是一种新型的小型transformer&#xff0c;它们高效且可以在大规模数据集上进行预训练。TinyViT通过在预训练期间应用蒸馏来传输知识&#xff0c;将大型预训练模型的知识转移到小型模型中&#xff0c;同时使小型模型能够获得大量预训练数据的红利。…

hcip实验--RIP

实验实验要求 &#xff1a; 要求&#xff1a;R1-R2-R3-R4-R5 RIP 100运行版本2 R6-R7 RIP 200 运行版本1 1.使用合理IP地址规划网络&#xff0c;各自创建环回接口 2.R1创建环回 172.16.1.1/24 172.16.2.1/24 172.16.3.1/24 3.要求R4使用R2访问R1环回 4.减少路由条目数量&am…

AttributeError: ‘FreeTypeFont‘ object has no attribute ‘getsize‘

yolo训练时&#xff0c;yolo的训练项目报错&#xff0c;如下 w, h self.font.getsize(text) # text width, height AttributeError: ‘FreeTypeFont’ object has no attribute ‘getsize’ 说是字体没有getsize属性&#xff0c;实际看了一下&#xff0c;此属性存在&#xff0…

simulink 使能子模块 对应if else

Enabled Subsystem 使能子模块 这个值是对内部的全部变量↓ 对输出↓

web 页面布局:(一)align与表格布局

web 页面布局&#xff1a;&#xff08;一&#xff09;align与表格布局 古早时代页面布局 表格布局合并单元格表格布局的弃用 古早时代 之前&#xff0c;我们花费了一点时间&#xff0c;去了解了一下 html 的本质&#xff0c;那么&#xff0c;现在&#xff0c;我们就要尝试开始…

多元回归预测 | Matlab基于灰狼算法优化深度置信网络(GWO-DBN)的数据回归预测,matlab代码回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于灰狼算法优化深度置信网络(GWO-DBN)的数据回归预测,matlab代码回归预测,多变量输入模型,matlab代码回归预测,多变量输入模型,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质…

[Android JNI] --- JNI基础

1 JNI概念 什么是JNI JNI 全称 Java Native Interface&#xff0c;Java 本地化接口&#xff0c;可以通过 JNI 调用系统提供的 API。操作系统&#xff0c;无论是 Linux&#xff0c;Windows 还是 Mac OS&#xff0c;或者一些汇编语言写的底层硬件驱动都是 C/C 写的。Java和C/C不…