是否可以用BLE广播模式发送数据?

2023-11-27

我想请问您是否可以以广播模式从 BLE 设备(例如带有蓝牙适配器的 Raspberry Pi、Onion 或 Arduino)向另一个设备(例如手机或另一个 Raspberry Pi)发送数据(字符串) ,这将在屏幕上显示数据。

老实说,没有必要在屏幕上显示数据,但其他设备必须能够使用我将创建的 C 程序详细说明接收到的数据。

我对此主题进行了大量研究,但只能找到有关信标的答案,这些对象无法为我的项目发送有用的数据(如字符串),或者必须相互连接才能发送/接收数据的 BLE 设备。

我想用C语言创建一个程序,以达到这个结果。 我在 BlueZ 库中搜索了一些有用的东西,但我找不到任何东西,因为它们没有解释其函数的含义。 如果可能的话我不想创建一个 android/iOS 应用程序。


是的,这是可能的。您可能已经知道,低功耗蓝牙 (BLE) 有四个角色:-

  • 广播器 - 仅广播数据的设备。
  • 外围设备 - 通告数据但也可以通过远程设备连接的设备。
  • 观察者 - 仅扫描数据的设备。
  • 中央 - 可以扫描数据并连接到数据的设备。

当 BLE 首次推出时,信标/传感器(例如心率、温度计)占据前两类,手机/计算机占据另外两类。然而,BLE 自此不断发展,现在许多设备都支持所有四种角色,并且设备可以同时以一种或多种角色运行。

关于你的问题,正如 Lee Daniel Crocker 提到的,数据就是数据,你在广告中放入的内容只是另一端必须理解的字节。您只能在广告报告中放入 31 字节的数据*,这就是面向连接的数据传输效率更高的原因。

关于可编程性,我建议从用于通告的设备和用于读取数据的设备上使用 BlueZ 命令。您可以使用 Bluetoothctl 命令执行此操作,如下所示:-

在广播公司/外围设备上

#bluetoothctl
[bluetooth]menu advertise
[bluetooth]advertise data 00 00 00 00
[bluetooth]back
[bluetooth]advertise on

关于观察者/中央

#bluetoothctl
[bluetooth]scan on

我在用BlueZ 版本 5.50我建议你也这样做。

一旦您可以公布数据并从另一端正确读取数据,您就可以浏览源代码并查看可以在 C 应用程序中利用哪些内容。对于 bluetoothctl 函数,您需要从以下两个文件开始:-

  • bluez-5.50/client/main.c
  • bluez-5.50/client/advertising.c

我希望这有帮助。

(*) 从蓝牙 5 开始,您可以向广告报告添加更多数据,但这是一个非常新的功能,截至撰写本文时,很少有堆栈支持它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以用BLE广播模式发送数据? 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • 为什么此 F# 函数需要括号?

    为什么需要括号read rest of csv below let read rest of csv csv data Add csv fileH ReadFields gt ignore not csv fileH EndOfData w
  • WPF ListView 对列单击进行排序

    我有一个列表视图 其中的项目在运行时以具有单列 多列的网格形式添加 现在我需要让排序工作 一旦列表视图中有项目并且他们单击该列 它应该在该列上对其进行排序 下面是列表视图的代码
  • 在 ConvertBack() 方法中获取 WPF 绑定中 IValueConverter 实现的 Source 值

    我将依赖属性绑定到 WPF 中的 textboxex 该属性是一个字符串 其中一些值由 分隔 例如 1 2 3 4 我需要将各个值绑定到单独的文本框 这对于以下实现来说很好Convert method public object Conve
  • 正则表达式“punct”字符类根据 Ruby 版本匹配不同的字符

    Ruby 的字符类标点符号 i e punct p Punct or p P 似乎根据我使用的 Ruby 版本匹配不同的字符 这是一个小例子 很抱歉弄乱了 SO 的语法荧光笔 punct rb chars lt lt EOD split l
  • 嵌套和重复的 angularjs 指令中链接函数的调用顺序

    我对 Javascript 编程相当陌生 而且只接触过 AngularJS 为了评估它 我决定编写一个简单的笔记应用程序 该模型非常简单 是一个笔记列表 其中每个笔记都有一个标签 一个文本和一个标签列表 然而 我在嵌套指令的隔离范围之间传递
  • 在 Ruby 和 PHP 之间共享会话

    是否可以在子域上的 PHP 应用程序和其他子域上的 Ruby 应用程序之间共享会话 我真的不知道该从这里把它带到哪里 我知道我可以手动将域设置为根域 以便 cookie 对所有子域都有效 但是我如何从会话中获取 设置内容 以便在子域之间共享
  • Django - 捕获异常

    看这段代码 try do something except raise Exception XYZ has gone wrong 即使DEBUG True 我不想要这个raise Exception给那个黄页 但确实如此 我想通过将用户重定
  • 如何控制面板内文本框的焦点顺序?

    我有一个带有许多文本框的表单 我需要一个组内的一些文本框 以及另一组内的其他文本框 按组划分 我只需要一种方法使这些文本框看起来彼此属于彼此 我制作了两个面板并向其中添加了文本框 然后 我在这些面板周围放置了边框 However my pr
  • WSDL、Enums 和 C#:仍然很模糊

    我试图在网上查找这一点 但所有 WSDL 示例似乎都没有真正解释我是否应该将事物标记为 WSDL 中的基本类型字符串或 int 基本上 我正在尝试制作 WSDL 以便可以表示枚举 我心里已经有一个 C 枚举 我想将它匹配到 public e
  • 在 Selenium 中设置隐藏输入值?

    我们的表单上隐藏了输入字段 我们需要 Selenium 来设置这些字段的值 通过 Selenium IDE 设置隐藏输入值的最佳方法是什么 我能找到的最简单的方法 命令 运行脚本 Value javascript this browserb
  • Xcode Bitcode,包括符号设置对 dSYM 生成的影响

    由于我使用 Crashlytics 来处理崩溃 所以我总是取消选中 包含应用程序符号 以便您的应用程序接收来自 Apple 的符号化崩溃日志 并保留 包含位码 在将我的应用程序提交到 iTunes Connect 之前进行了检查 Apple
  • 实体框架时间戳生成数据库问题

    我在使用 EF 4 0 时遇到问题 我用 时间戳 列创建实体 之后 我尝试生成数据库 在 SQL 脚本中 列看起来像 binary 8 而不是时间戳 怎么解决呢 问题已解决 EF 4 无法从 edmx 设计器生成时间戳列 解决方案很简单 将
  • 无论顺序如何,两列的唯一约束

    我有以下表定义 CREATE TABLE Car CarID int NOT NULL PRIMARY KEY IDENTITY 1 1 FirstColorID int FOREIGN KEY REFERENCES Colors Colo
  • 如何隐藏 django modelform 中的字段?

    例如 class TestModel models Model ref1 models ForeignKey RefModel text1 models TextField class TestModelForm ModelForm cla
  • 在代码后面附加行为

    我有以下 Xaml 用于在属性网格内用作编辑器的用户控件 问题是 从后面的代码附加行为的 C 会是什么样子
  • 在 Linux 中模拟硬盘

    作为研究项目的一部分 我开发了一个基于 FUSE 的文件系统 现在必须研究硬盘驱动器接收到的实际读 写请求 为了做到这一点 我正在考虑在 Linux 中创建虚拟硬盘驱动器的选项 它将拦截文件系统生成的请求并记录它们 互联网上是否有任何资源可
  • 订阅多个 Observables(例如 Promises 中的链接 then())

    我的 Angular 2 应用程序有 2 种方法 GetCategories and GetCartItems 在服务中 这两个方法都返回Observables 为了从我的组件中依次调用这两个方法 我编写了以下代码 ngOnInit thi
  • 如何在 IntelliJ IDEA 中添加链接到外部工具的按钮

    我创建了一些批处理工作并将其作为ExternalTool 集成到IntelliJ IDEA 中 如此处所述 配置Intellij IDEA运行批处理文件 但是 如何向工具栏添加按钮来激活定义为外部工具的批处理 这很容易 Assuming t
  • 现有数据库中的 Entity Framework Core 2.0 支架视图

    是否可以从 Entity Framework Core 2 0 中的现有数据库构建视图 类似于下面的命令 Scaffold DbContext Server xxx Database xxx User Id xxx Password xxx
  • 是否可以用BLE广播模式发送数据?

    我想请问您是否可以以广播模式从 BLE 设备 例如带有蓝牙适配器的 Raspberry Pi Onion 或 Arduino 向另一个设备 例如手机或另一个 Raspberry Pi 发送数据 字符串 这将在屏幕上显示数据 老实说 没有必要