蓝牙编程-设备检索

蓝牙bluez进行HCI编程 文章目录搭建环境HCI编程编程范式查看HCI设备的详细信息扫描周围的LE设备 我是一名嵌入式蓝牙工程师,平时大部分时间都在RTOS系统上进行蓝牙开发,最近因为工作需求要在Unix环境下搭建蓝牙开发环境,而我最熟悉的Unix系统莫过于Linux/Ubuntu,于是开始下载bluez的源代码,搭建蓝牙开发环境,这篇博客就是介绍如何在Ubuntu系统下进行HCI编程 搭建环境 我使用的系统是ubuntu-16.04默认是已经安装了bluez,并且bluez是默认为开机启动的,大家可以用下面的命令测试下: $ sy 阅读详情

蓝牙编程-设备检索.

分类: ARM ||Embedded BlueTooth牙牙   1984人阅读  评论(0)  收藏  举报
今天用bluez的lib写了个小程序调试,运行通过.对linux下蓝牙编程有了点初步的认识.
功能就是检索周围是否有其它蓝牙设备,并得到他们的友好设备名.


#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>

#include <bluetooth/bluetooth.h>   //蓝牙的3个头文件.
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>

int main ( int argc , char **argv )
{
   inquiry_info *ii = NULL;
   int max_rsp, num_rsp;
   int dev_id, sock, len, flags;
   int i;
   char addr [19] = { 0 };
   char name [248] = { 0 };
   dev_id = hci_get_route (NULL);   //得到本地第一个可用的蓝牙设备

   sock = hci_open_dev(dev_id);     //用打开蓝牙设备.
   if( dev_id<0 || sock < 0) {
       perror("opening socket error") ;
       exit(1) ;
   }
   len = 8 ;
   max_rsp = 255 ;
   flags = IREQ_CACHE_FLUSH;
   ii = (inquiry_info*)malloc (max_rsp* sizeof ( inquiry_info)) ;
   
   printf("start search.../n");
   num_rsp = hci_inquiry(dev_id , len , max_rsp , NULL, &ii , flags) ;   //检索周围是否有设备
   if ( num_rsp < 0 ) perror ("hci_inquiry error") ;
   for ( i = 0 ; i < num_rsp ; i++) {
       ba2str (&(ii+i)->bdaddr , addr ) ;
       memset (name , 0 , sizeof (name)) ;
       if( hci_read_remote_name ( sock , &( ii+i )->bdaddr , sizeof (name) ,
          name , 0) < 0)   //查询设备的友好设备名
          strcpy (name , "[unknown]") ;
       printf ("%s %s /n", addr , name ) ;
   }
   printf("end search./n");
   free(ii);
   close(sock);
   return 0;
}
最后把这个程序交叉编译了一下,也通过了.但是还没有测试.明天再来传到板子上.
还没有正式在板子上运行过蓝牙,可能还有很多问题
QT 之蓝牙编程 阅读详情

相关推荐

Android蓝牙实现设备间数据传输

这篇文章总结通过蓝牙实现两台pad间数据传输 文章基于传统蓝牙,而不是BLE。 蓝牙应该是移动设备经常用到的功能模块,Android Bluetooth API 是Android提供的用来实现点到点和多点无线功能。 使用 Bluetooth API,Android 应用可执行以下操作: 扫描其他蓝牙设备 查询本地蓝牙适配器的配对蓝牙设备 建立 RFCOMM 通道 通过服务发现连接到其他设备 与其

mo_android的博客 2万+

蓝牙程序编写例子

#include #include #include #include #include #include #include  int main(int argc, char **argv) {     inquiry_info *ii = NULL;     int max_rsp, num_rsp;     int dev_id, sock, len, flags;     in

gaoxuefeng的专栏 1594

iOS swift5 获取系统或其他app已经连接的蓝牙设备

参考博客: iOS蓝牙开发连接系统或其他APP已经连接、配对成功的蓝牙设备 - 优快云

baidu_40537062的博客 4197

用C写蓝牙通讯程序:扫描、读取、发送

在Linux下,通过bluez 蓝牙库可以用C语言轻松实现蓝牙通信。在ubuntu下可以用 apt-get install libbluetooth-dev 安装该库。下面是几个简单示例。 一个简单的扫描程序,得到周边的蓝牙从机设备名和地址: #include stdio.h> #include stdlib.h> #include unistd.h> #

believe的专栏 2万+

蓝牙实现数据传递

实现数据传递需要做些什么?需要用到什么?怎么才能让数据传递到另一端? 服务端 客户端

搬砖路上的博客 1万+

Android实现蓝牙耳机连接

代码地址如下:http://www.demodashi.com/demo/13259.html 前言 讲讲android对于蓝牙耳机连接技术的实现 今天涉及的内容有: 1. 流程讲解 2. 新建广播BluetoothReceiver,用于监听处理蓝牙连接过程中各状态 3. 在MainActivity中调用 4. 注意的点 5. 项目结构图和效果图 下面做以讲解 ...

findhappy117的博客 1万+

C语言 蓝牙通信

因此,在使用BlueZ API进行蓝牙通信时,需要采取适当的安全措施,例如使用加密和身份验证机制来保护连接和数据传输的安全性。BlueZ提供了一组C语言的API,可以用于管理蓝牙设备、扫描周围的蓝牙设备、连接蓝牙设备、传输数据等。在使用BlueZ API之前,需要了解这些API的用法和参数,并按照需要进行相应的操作。总之,使用BlueZ API进行蓝牙通信需要一些基本的了解和准备,包括安装BlueZ软件包、配置蓝牙硬件参数、了解BlueZ API的使用方法和采取适当的安全措施。函数打开该设备,并使用。

A185822153的专栏 1474

13.2 设置本地蓝牙设备

13.2 设置本地蓝牙设备 13.2.1 介绍QBluetoothLocalDevice QBluetoothLocalDevice类允许访问本地蓝牙设备。 QBluetoothLocalDevice类提供获取和设置本地蓝牙设备状态的功能。 比如:设置本地蓝牙模式、打开本地蓝牙、关闭本地蓝牙等等。 13.2.2函数介绍 (1) 构造函数 QBluetoothLocalDevice(QObject *parent = Q_NULLPTR) QBluetoothLocalDevice(cons.

1291

蓝牙编程-设备检索.

今天用bluez的lib写了个小程序调试,运行通过.对linux下蓝牙编程有了点初步的认识.功能就是检索周围是否有其它蓝牙设备,并得到他们的友好设备名.#include #include #include #include    //蓝牙的3个头文件.#include #include int main ( int argc , char **argv ){   inquiry_info *ii

if.q的博客(请转iwood.co.nr) 4803

蓝牙协议源代码(C语言写的)

蓝牙协议的C源代码,做无线通信也许用得着,分享了 !

极空间NAS小白也能搞定的Gitea部署:Docker+MySQL避坑全记录

本文为极空间NAS用户提供了一份详尽的Gitea私有代码仓库部署指南。针对极空间ARM架构和图形化Docker管理的特殊性,文章重点讲解了如何通过Docker和MySQL容器进行部署,并提供了三种获取兼容镜像的实战策略,特别是利用第三方镜像站转录的方法,帮助小白用户成功搭建并初始化Gitea服务,实现私有Git托管。

weixin_28318011的博客 365

Bluetooth Functions

The functions in this section are used for managing Bluetooth devices and services. Bluetooth is also supported by using the Windows Sockets programming interface. For more information about pro...

aizongsai2251的博客 661

【原创,解决CLodop安装后无法调用的问题】已经安装过CLodop,但是网页上仍然提示“clodop云打印服务(localhost本地)未安装启动,点击这里执行安装....”

在某些国内web网站中,需要安装一个名为“CLodop”的插件;但在实际使用过程中,即使安装了CLodop插件,网页试图调用它时还是会提示“clodop云打印服务(localhost本地)未安装启动,点击这里执行安装...”,且无法完成相关打印任务 本文属原创博客,分析了解决CLodop无法被调用的问题,并附上了原理和解决方法,本质上是和跨域请求以及CORS类安全组策略相关

link_in_csdn的博客 2万+

Bluetooth Function 函数

Bluetooth Functions The functions in this section are used for managing Bluetooth devices and services. Bluetooth is also supported by using the Windows Sockets programming interface. For more infor...

小雨滴答滴答的博客 1706

深入解析国家企业征信系统瑞数6vmp算法逆向实战

本文深入解析了国家企业征信系统所采用的双层防护机制,重点聚焦于瑞数6代vmp算法的逆向实战。文章详细拆解了从加速乐521状态码的绕过,到瑞数412挑战的核心算法还原过程,提供了通过动态Hook、日志分析进行算法逆向,并用Python实现自动化请求链的完整技术方案,旨在为安全研究与技术学习提供参考。

yellow的专栏 607

昇腾910B+MindIE部署Qwen模型避坑指南:从镜像下载到推理测试全流程

本文详细介绍了在昇腾910B硬件环境中使用MindIE推理工具部署Qwen系列模型的全流程指南。从环境准备、镜像下载到模型部署与性能优化,提供一站式解决方案,帮助开发者高效完成AI模型推理任务。

weixin_29219189的博客 766

基于visual c++之windows核心编程代码分析(56)使用winsock搜索蓝牙设备

蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的

我的编程之旅 1513

GROMACS+PLUMED联合安装避坑指南:为什么你的plumed patch总是失败?

本文深入解析GROMACS与PLUMED联合安装中补丁失败的常见原因,并提供详细的避坑指南。针对版本兼容性、环境配置和编译选项等关键问题,给出从源码选择、环境搭建到手动合并补丁的完整解决方案,帮助用户成功整合这两个强大的分子动力学工具,实现增强采样模拟。

weixin_29302047的博客 287

CBCentralManager Class Reference

Inherits from NSObject Conforms to NSObject (NSObject) Framework /System/Library/Frameworks/CoreBluetooth.framework Availability Available in iOS 5.0 a

u010944926的专栏 1351

Zemax光机热集成分析:从FEA数据导入到光学性能评估实战

在精密光学系统设计中,环境温度变化和机械应力是导致像质恶化的关键因素,这涉及到光、机、热多物理场的耦合分析。其核心原理在于,通过有限元分析(FEA)软件(如ANSYS)模拟热与力学载荷下的结构变形和温度分布,并将这些物理场数据精准映射到光学设计软件(如Zemax)中,以评估其对调制传递函数(MTF)、点列图等核心光学指标的影响。这项技术的工程价值在于,它使设计从静态的理想模型跃升至动态的工程现实,能够在设计阶段就预测并补偿环境扰动,从而显著提升光学系统在航空航天、车载镜头、高功率激光等严苛工况下的可靠性与稳

weixin_30565327的博客 355

时序基础模型Timer-S1:十亿参数如何革新时间序列预测

时间序列预测是数据分析与机器学习中的核心任务,旨在基于历史数据预测未来趋势。其原理在于捕捉数据中的趋势、周期性和季节性等时序依赖关系。这项技术的价值在于赋能业务决策,广泛应用于金融风控、能源管理、物联网监控和供应链优化等关键场景。传统方法依赖针对特定任务的专用模型,面临泛化能力弱和开发成本高的挑战。本文聚焦的时序基础模型,通过在海量跨领域数据上进行预训练,学习时序通用模式,并结合十亿级参数带来的强大容量,实现了性能的显著突破。这种范式转变,使得模型能够像“全科医生”一样,通过少量数据微调即可快速适应新任务,

weixin_29164843的博客 268

esp32系列(6):esp32 蓝牙HID设备demo学习

目录1 USB 相关知识2 HID 基础知识2.1 HID 描述符的概念2.2 功能特性2.2.1 HID Class2.2.2 Subclass2.2.3 Protocols2.2.4 Interfaces2.3 操作模型2.3.1 Device 描述符结构2.3.2 Report 描述符结构2.3.3 通用 Item 格式2.3.4 Item 解析器2.3.5 Usage2.3.6 report2.3.7 string2.4 描述符分类2.4.1 标准描述符2.4.2 特定于HID类的描述符2.4.3.

w0shishabi的博客 1万+

炼金术士的试炼:2026年企业信用信息公示系统极验五维反爬下的Python数据博弈与破局之道

企业信用信息公示系统(以下简称“公示系统”)作为国家市场监督管理总局权威发布平台,承载着全国亿万市场主体的登记、许可、处罚等核心信用数据。对于金融风控、市场分析、商业尽职调查等领域,这些数据具有不可替代的黄金价值。然而,公示系统在2025年至2026年间进行了数次史诗级的安全加固,构建了包含动态令牌、极致混淆的JavaScript混淆、无感行为指纹、智能语义验证码以及WebAssembly防护在内的“五维反爬长城”。

2201_76125261的博客 347

基于BlueZ的C语言蓝牙编程

hci_inquiry()   //查询周围蓝牙设备并获取其地址 sdp_connect()   //链接到蓝牙设备的sdp服务器 sdp_list_append()  //添加sdp查询列表项 sdp_service_search_attr_req() //带服务属性的服务查询请求,查询蓝牙设备,有那些服务及每个服务的属性 sdp_uuid16_create()  //为sdp查询创建通

believe的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 关于蓝牙安全机制的研究介绍
下一篇: 蓝牙协议栈构架
SingleCode
博客等级 码龄15年 11粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值