嵌入式 linux 蓝牙 C开发

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

最近公司准备搞蓝牙,从年前折腾环境到年后开发板上折腾应用,搞了好久,看了好多资料跟请教大神,终于搞定了。

项目情况:有个远程蓝牙设备(服务端)会发送数据,现有一个外接蓝牙适配器,要在开发板开发应用程序,通过蓝牙适配器连接那个蓝牙设备,接收蓝牙设备发送的数据。

前期开发板的环境搭建,参考这个博客,很详细了http://blog.csdn.net/gatieme/article/details/48751743

现在重点讲下开发板上蓝牙应用的开发,之前碰壁了很多。后面直接参考bluz蓝牙源代码,下载最新的bluz 5.48版本,下载地址:http://www.bluez.org/download/。之前蓝牙应用写完后运行,看蓝牙连接函数返回都是连接成功,但是看那个远程蓝牙设备实际上是并未连接上。后面关键问题就是连接服务端蓝牙时,蓝牙的频道号没设置正确,导致一直不行,这个频道号一定要查看远程蓝牙设备所拥有的频道号是多少,进行对应设置。后面参考bluz源码tools文件夹下的rctest.c的demo,里面有函数可以获取目标蓝牙所支持的频道号。

附上我开发板上蓝牙客户端的源码

#include "bluetooth.h"
#include "hci.h"
#include "hci_lib.h"
#include "l2cap.h"
#include "rfcomm.h"
#include "sdp.h"
#include "sdp_lib.h"
//蓝牙地址及名称结构体
typedef struct REMOTE_BLUE_INFO
{
	char	bdaddr[28];
	cha
Linux 下 ESP32 蓝牙 HCI 例程的使用 BLE 协议栈分为 Host 和 Controller 两大部分,通过 HCI (Host Controller Interface) 进行相互通讯,而 HCI 硬件传输接口又分为多种,包括 USB、UART 和 SDIO 等。在esp-idf中 Host 分为 bluedroid 和 nimble, 相关的一些应用例程也在bluedroid和nimble。 阅读详情

相关推荐

保姆级教程:在树莓派4B上用C语言通过UART驱动ESP32蓝牙模块(含完整代码)

本文提供了一份详细的树莓派4B与ESP32蓝牙模块通过UART通信的实战指南,涵盖硬件连接、Linux系统配置、C语言串口编程及ESP32蓝牙模块的AT指令控制。教程包含完整代码示例,帮助开发者快速实现蓝牙数据通信,适用于物联网和嵌入式系统开发

weixin_30596343的博客 582

tinyb:TinyB 公开了 C++、Java 和其他语言的 BLE GATT API,使用 BlueZ over DBus

微型蓝牙 LE 库 该项目旨在创建干净、现代且易于使用的蓝牙 LE API。 TinyB 使用 BlueZ over DBus 公开了 C++、Java 和其他语言的 BLE GATT API。 API 文档 可以找到最新的 API 文档: 对于 C++: : 对于 Java: : 在 Java 上开始使用 TinyB 的指南可在此处获得: ://software.intel.com/en-us/java-for-bluetooth-le-apps。 使用 TinyB TinyB 需要 CMake 3.1+ 才能构建,并且需要 GLib/GIO 2.40+。 它还需要激活 GATT 配置文件的 BlueZ,这是目前实验性的(从 BlueZ 5.37 开始),因此您可能必须使用 -E 标志运行 bluetoothd。 例如,在带有 systemd 的系统(Fedora、pok

别再死磕libbluetooth了!用C语言通过DBUS玩转BlueZ 5.54(附完整BLE串口服务源码)

本文详细介绍了如何通过DBus在Linux系统上开发蓝牙应用,特别针对BlueZ 5.54版本,提供了完整的BLE串口服务源码。文章从开发环境搭建到DBus核心概念,再到实战代码实现,帮助开发者快速掌握现代蓝牙开发方法,避免使用过时的libbluetooth库。

weixin_30652897的博客 437

linux4.6内核移植蓝牙和音频

第1章 RTL8723BU蓝牙模块驱动移植 1.1. 硬件方案 1.2. 蓝牙驱动移植 1.3. 蓝牙耳机规格要求 第2章 Linux音频框架 2.1. ALSA 2.2. Pulseaudio 2.3. GStreamer 2.4. Jack 2.5. FFADO 2.6. Xine 2.7. Phonon 2.8. 其他分支 第3章 蓝牙协议栈Bluez 3.1. Bluez5版本介绍 3.2. Bluez与Linux内核版本 3.3. Bluez蓝牙音频 第4章 蓝牙音频协议 4.1. A2DP协议

wangjie36的博客 4398

嵌入式Bluetooth应用开发笔记】第二篇:上手BLUEZ应用开发

BlueZ是一个开源的蓝牙协议栈,提供了丰富的API和工具,支持Linux系统中的蓝牙应用开发。BlueZ提供的API包括D-Bus API、HCI API、L2CAP API、RFCOMM API、SDP API、MGMT API等,开发者可以使用这些API实现自己的蓝牙应用程序。

百无禁忌想,脚踏实地干 5067

linux蓝牙编程 bluez

从别的地方转了一篇蓝牙编程的,感觉比较详细,接下来自己慢慢验证一下。 实战Linux Bluetooth编程实战Linux Bluetooth编程(一) 协议栈概述前言:随着嵌入式系统的飞速发展,很多嵌入式平台上需要Bluetooth设备和应用。但在Linux下如何对Bluetooth编程,一直没有一份很好的中文文档。Sam结合自己的工作,一

iotplan.com 物联网技术专栏 6181

Linux下基于Bluez开发USB蓝牙SPP服务

解决办法就是修改系统中蓝牙服务的启动选项,-C的意思就是compat,兼容性模式运行蓝牙服务,因为bluez5.x的版本去掉了socket的方式连接蓝牙,所以我们需要手动开启。这句也很重要,我们要在设备上建立SPP协议的服务。发现提示说他的连接地址和我代码中的不一致,虽然我写对了,但是str2ba是我从网上下载下来,修改的。由于是在linux上运行的,所以参考的bluez的代码,用C语言实现了蓝牙的Server。问题就是他是逆序的,同样的,在初始化地址那里需要用逆序,这样他才能用正确的地址。

zanglengyu的专栏 6501

实战:用C语言为嵌入式Linux设备(如NVIDIA Jetson)开发蓝牙串口透传服务

本文详细介绍了如何使用C语言为嵌入式Linux设备(如NVIDIA Jetson)开发蓝牙串口透传服务。通过BlueZ协议栈配置、SPP服务注册、RFCOMM编程嵌入式部署技巧,解决字节序、大数据传输等典型问题,实现稳定高效的蓝牙通信。

weixin_30243533的博客 366

基于GEC6818的嵌入式智能系统设计[开关灯/消消乐小游戏/蓝牙通信]

一、主要功能 进入主界面后,主界面是个人UI设计,有四个功能按钮模块,分别是:信息、灯光、娱乐(消消乐)、蓝牙。 二、涉及知识 C语言,文件io,bmp/jpg图片解析,Linux串口通信,linux基础 三、开发环境 嵌入式开发板型号GEC6818,开发平台Ubuntu18.04,代码编辑器sourceinsight 4.0 四、主要模块 1.LCD显示模块 通过open打开开发板LCD屏幕驱动,驱动文件(/dev/fb0),进行屏幕初始化。 /***********...

柒枫的博客 6614

基于C语言的蓝牙开发实战项目代码

蓝牙工作于2.4GHz ISM频段,采用跳频扩频(FHSS)技术抗干扰,支持点对点(P2P)和广播网络拓扑。蓝牙5.0在前代基础上实现关键突破:传输速率提升至2Mbps(LE 2M PHY),广播数据容量扩大8倍(至255字节),传输距离增强4倍(通过编码物理层Coded PHY,理论可达400米)。// 示例:通过ioctl获取本地蓝牙适配器状态(需包含<bluetooth/hci.h>)// 获取版本、地址、功能位图。

weixin_36282234的博客 822

BlueZ协议的移植

BlueZ协议的移植     硬件平台是三星公司的s3c2410a 开发板,软件平台是内核版本为 2.4.20的Linux操作系统, 为实现蓝牙协议栈BlueZ的移植, 可进行以下步骤进行移植:     (1) 生成交叉编译器,创建交叉编译环境     (2) 编译、配置实验开发平台上的 Linux内核     (3) 安装 BlueZ 软件包     (4) 编译实验开发平台

Luohsh1的专栏 1410

谈下自己开发的一个点菜系统

点菜系统采用C/S结构,实现了简单的基于蓝牙技术的点菜系统。将嵌入式开发板ARM2410S作为无线点菜器,即客户,PC机作为后台管理,即服务器,服务器linux开发。 客户和服务器之间通过蓝牙进行无线通信,服务器有数据库,用于存储菜单信息和消费信息。为了方便,在客户服务器也创建了数据库,其中存储了菜单信息和房间信息,因此客户不能很好地动态共享菜单信息和房间使用信息,所以本系

纪明作日落而编,只为代码 2203

嵌入式软件工程师—成长笔记#01

概述:将会经历的5个阶段、技术栈、相关岗位

YU的博客 2905

嵌入式软件工程师完全学习开发指南(1)

大纲 学习路线 1:核心课程 linux基础+C语言 linux应用程序开发(系统编程、网络编程) ARM编程(ARm体系结构、ARM汇编、开发板常见外设裸机编程linux系统移植(uboot移植、kernel移植。rootfs制作) linux驱动开发 2:Android扩展 Android Hal驱动 Android系统定制 Android应用开发 3:物联网扩展 GPS 蓝牙 WiFi ...

chao-@的博客 676

DragonBoard 410c:物联网和嵌入式开发

你会用这条“龙”来制造什么? 随着使用Qualcomm骁龙处理器的移动设备在功能和数量上的增加,该处理器已受到诸如机器人、公共电话亭、显示指示牌及街机等相关产品制造商的青睐 嵌入式计算公司什么的最感兴趣了!因为它们的产品比面向消费级市场,产品更加趋向产业化,其部件也要求拥有更长的寿命。所以它们常常不在意一些我们认为移动设备应该具有的特性,如小尺寸和低功耗。 由此看来,骁龙处理器对...

weixin_43735236的博客 2

告别Python,用C语言和gdbus手把手教你实现蓝牙设备扫描(附完整源码解析)

本文详细介绍了如何从Python转向C语言进行蓝牙开发,重点解析了基于gdbus和BlueZ的实现方法。通过对比Python与C语言的API差异,提供完整的源码解析和实战技巧,帮助开发者在资源受限环境中高效实现蓝牙设备扫描功能。

weixin_30872499的博客 581

STM32 & ESP32 嵌入式学习路线

本文提供了一份完整的STM32和ESP32嵌入式学习路线图,分为五个阶段:基础准备、STM32学习、ESP32学习、嵌入式进阶和专业方向选择。基础阶段强调C语言、数字电路和硬件基础;STM32阶段从GPIO、定时器等基础外设到CAN、USB等高级应用;ESP32阶段涵盖WiFi、蓝牙和物联网开发;进阶阶段包括RTOS、Linux和物联网全栈技术。每个阶段都推荐了具体的学习内容、项目实践和资源参考,并给出了时间规划建议。学习路线强调实践导向,建议通过项目驱动学习,逐步掌握从单片机到嵌入式Linux开发能力。

雾削木的CSDN博客 1897

嵌入式系统学习路径:

通过系统学习嵌入式技术,包括C语言基础、Linux开发、无线通信、物联网和具体项目实践,能够建立坚实的嵌入式系统开发基础,迎接这一快速发展的领域的职业机遇。根据兴趣选择具体项目,如智能家居、农业检测、物流仓储、安防监控、智能穿戴、机器人小车、无人机等。探索物联网(IoT)领域,包括6LoWPAN、Contiki系统和OneNET开放云平台。探索无线通信领域,如Zigbee、低功耗Wi-Fi、蓝牙4.0BLE、RFID等。学习Linux应用层开发,包括并发程序设计、网络编程和数据库开发

linlaoshi2009的博客 270

Dragonboard开发的准备工作

欢迎使用DragonBoard进行开发 DragonBoard现已在北美发售,并提供全球shipment服务!!! DragonBoard410c由Arrow电子网站首发,它是全球第一个基于中Qualcomm Snapdragon400系列处理器的开发板。 开发板设计用于围绕Snapdragon 410处理器搭建软件生态系统, 并提供客户教育、原型开发以及商用嵌入式计算产品用途。 搭载64位能

u010182064的专栏 1553
上一篇: 嵌入式 安装 字符编码转换 libiconv库
下一篇: 关于宏定义的几个问题
文茫
博客等级 码龄17年 12粉丝 5原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值