付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中怎么实现一个BLE通信软件
本文源码/upload/information/20210522/379/526217.jpg具体实现/upload/information/20210522/379/526221.jpg/upload/information/20210522/379/526223.jpg2.扫描设备Widget::Widget(QWidget
*parent)
:
QWidget(parent)
,
ui(new
Ui::Widget)
{
ui->setupUi(this);
//创建搜索服务:https://doc.qt.io/qt-5/qbluetoothdevicediscoveryagent.html
discoveryAgent
=new
QBluetoothDeviceDiscoveryAgent(this);
//设置BLE的搜索时间
discoveryAgent->setLowEnergyDiscoveryTimeout(20000);
connect(discoveryAgent,SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),this,SLOT(addBlueToothDevicesToList(QBluetoothDeviceInfo)));//找到设备之后添加到列表显示出来
connect(discoveryAgent,
SIGNAL(finished()),
this,
SLOT(scanFinished()));
connect(discoveryAgent,
SIGNAL(canceled()),
this,
SLOT(scanCanceled()));
connect(this,
SIGNAL(returnAddress(QBluetoothDeviceInfo)),
this,
SLOT(createCtl(QBluetoothDeviceInfo)));
//开始进行设备搜索
discoveryAgent->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod);
}3.将扫描结果添加到QListWidget中//deviceDiscovered
signals
对应的槽函数
void
Widget::addBlueToothDevicesToList(const
QBluetoothDeviceInfo
&info)
{
if
(info.coreConfigurations()
&
QBluetoothDeviceInfo::LowEnergyCoreConfiguration)
//获取设备信息,并判断该设备是否为BLE设备
{
//格式化设备地址和设备名称
QString
label
=
QString("%1
%2").arg(info.address().toString()).arg(());
//检查设备是否已存在,避免重复添加
QList<QListWidgetItem
*>
items
=
ui->ctrBleList->findItems(label,
Qt::MatchExactly);
//不存在则添加至设备列表
if
(items.empty())
{
QListWidgetItem
*item
=
new
QListWidgetItem(label);
ui->ctrBleList->addItem(item);
devicesList.append(info);
}
}
}4.连接蓝牙,停止扫描void
Widget::on_btnConnectBle_clicked()
{
//确认选取了某一个蓝牙设备
if(!ui->ctrBleList->currentItem()->text().isEmpty())
{
//获取选择的地址
QString
bltAddress
=
ui->ctrBleList->currentItem()->text().left(17);
for
(int
i
=
0;
i<devicesList.count();
i++)
{
//地址对比
if(devicesList.at(i).address().toString().left(17)
==
bltAddress)
{
QBluetoothDeviceInfo
choosenDevice
=
devicesList.at(i);
//发送自定义signals==>执行slots:createCtl
emit
returnAddress(choosenDevice);
//停止搜索服务
discoveryAgent->stop();
break;
}
}
}
}5.获取特征void
Widget::searchCharacteristic()
{
if(m_bleServer)
{
QList<QLowEnergyCharacteristic>
list=m_bleServer->characteristics();
qDebug()<<"[xiaohage]list.count()="<<list.count();
//遍历characteristics
for(int
i=0;i<list.count();i++)
{
QLowEnergyCharacteristic
c=list.at(i);
/*如果QLowEnergyCharacteristic对象有效,则返回true,否则返回false*/
if(c.isValid())
{
//返回特征的属性。
//这些属性定义了特征的访问权限。
if(perties()
&
QLowEnergyCharacteristic::WriteNoResponse
||
perties()
&
QLowEnergyCharacteristic::Write)
{
ui->ctrSystemLogInfo->insertPlainText("\n具有写权限!");
m_writeCharacteristic
=
c;
//保存写权限特性
if(perties()
&
QLowEnergyCharacteristic::WriteNoResponse)
{
m_writeMode
=
QLowEnergyService::WriteWithoutResponse;
}
else
{
m_writeMode
=
QLowEnergyService::WriteWithResponse;
}
}
if(perties()
&
QLowEnergyCharacteristic::Read)
{
m_readCharacteristic
=
c;
//保存读权限特性
}
//描述符定义特征如何由特定客户端配置。
m_notificationDesc
=
c.descriptor(QBluetoothUuid::ClientCharacteristicConfiguration);
//值为真
if(m_notificationDesc.isValid())
{
//写描述符
m_bleServer->writeDescriptor(m_notificationDesc,
QByteArray::fromHex("0100"));
ui->ctrSystemLogInfo->insertPlainText("\n写描述符!");
}
}
}
}
}6.发送数据void
Widget::SendMsg(QString
text)
{
QByteArray
array=text.toLocal8Bit();
m_bleServer->writeCharacteristic(m_writeCharacteristic,array,
m_writeMode);
}
void
Widget::on_btnSendData_clicked()
{
SendMsg("Hello
World");
}7.写入数据void
Widget::BleServiceCharacteristicRead(const
QLowEnergyCharacteristic
&c,const
QByteArray
&value)
{
Q_UNUSED(c)
ui->ctrSystemLogInfo->insertPlainText("\n当特征读取请求成功返回其值时:");
ui->ctrSystemLogInfo->insertPlainText(QString(value));
}8.断开连接Widget::~Widget()
{
if(!(m_BLEController->state()
==
QLowEnergyController::UnconnectedState))
m_BLEController->disconnectFromDevice();//从设备断开链接
delete
ui;
}界面布局/upload/infor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 渔船安全检查制度
- 2026年金融从业资格考试金融市场分析与投资策略模拟试题
- 2026年物流信息平台构建与管理系统设计与实施考试题
- 油漆部门管理奖罚制度
- 村计生协会会员活动制度
- 2026年茶叶庄园管理合作协议
- 2025四川南充市蓬安县发兴隆创建筑劳务有限公司招聘26人笔试参考题库附带答案详解
- 2025四川九州电子科技股份有限公司招聘精益专家等岗位5人笔试参考题库附带答案详解
- 质量管理体系认证服务流程手册
- 2025南水北调(遵义)水网有限公司第三批招聘4人(贵州)笔试参考题库附带答案详解
- 2026年上海市奉贤区初三上学期一模化学试卷和答案及评分标准
- 2025 学年第一学期上海市杨浦区初三语文期末质量调研试卷附答案解析
- 2026年中国化工经济技术发展中心招聘备考题库及一套参考答案详解
- GB/Z 124.1-2025纳米技术石墨烯结构表征第1部分:石墨烯粉末及分散系
- 2025及未来5年中国鼠李糖市场调查、数据监测研究报告
- 企业信息系统操作权限管理规范
- 医患沟通培训课件
- 材料作文“各有千秋”(2024年重庆A卷中考满分作文10篇附审题指导)
- 生物测量仪的数据解读
- 村委鱼塘竞标方案(3篇)
- 企业公司“十五五”企业发展战略规划(完整模板)
评论
0/150
提交评论