基本的 flutter 蓝牙问题
Basic flutter bluetooth questions
我正在进行一个涉及 flutter 和蓝牙的新项目。为此,我阅读了一些相关内容并尝试了一个测试项目,但我仍然有一些问题找不到简单的答案。
首先,BLE 与蓝牙。 BLE 就是蓝牙版本 4,主要用于物联网应用。它可以 运行 在移动设备 phone 中,但是是否存在任何兼容性问题?也就是,BLE 设备可以与蓝牙设备通信还是它们都需要使用相同的蓝牙版本?
这个问题来自于测试 flutter blue example 并且没有发现任何设备,而我的标准 phone 的蓝牙发现了 10 多个设备(在魅族 16th 上测试)。我是否需要两个具有相同 flutter 蓝牙应用程序的设备才能让它们相互看到并进行交互?我知道为了四处发送信息,我需要两台具有相同 flutter 应用程序的设备,但现在我只想测试 de scan 设备的功能,返回 0 个设备让我有点失望。
其次,我看到了一些蓝牙包,比如flutter_blue, flutter_bluetooth_serial (based on flutter_blue), flutter_reactive_ble and bluetooth。考虑到我的项目基于制作问卷 -> 通过蓝牙发送 -> 通过蓝牙取回填写的问卷,你认为哪一个最适合?
简而言之,我在 flutter 方面的知识相当基础,而在蓝牙方面绝对是 0,所以我希望在 flutter 蓝牙技术的当前状态中得到一些明智的建议,这样我就有了一个强有力的起点和避免常见错误。
编辑:为了补充@ukBaz 在解释蓝牙背后的理论时的回答,如果有人发现自己在使用 flutter_blue 示例,请记住在您的设备中同时打开蓝牙和 GPS,因为示例工作。
有了 ukBaz 的解释和一个工作示例,我可以承接这个项目,谢谢。
编辑 2:解释为什么需要定位服务 here。
蓝牙是一组标准的二进制协议,用于 short-range 设备之间的无线通信。
蓝牙“经典”(BR/EDR) 支持最高约 24Mbps 的速度。一般来说,经典蓝牙主要用于无线telephone连接、无线头phones和无线音箱等音频。
蓝牙 4.0 引入了一种低功耗模式,即“低功耗蓝牙”(BLE 或 LE,也称为“智能蓝牙”),其运行速度为 1Mbps。此模式允许设备在大多数时间关闭其发射器。因此它是“低能量”。低功耗蓝牙更常见于可穿戴设备、智能物联网设备、健身监测设备和 battery-powered 配件。
BLE 功能由创建通用属性配置文件 (GATT) 的 key/value 对主导。
BLE 定义了设备可以扮演的多种角色:
- Broadcaster(信标)是一个仅发射器的应用程序。
- Observer(扫描仪)仅适用于接收器应用程序。
- 充当外设角色的设备可以接收连接。
- 充当中心角色的设备可以连接到外围设备。
在应用层,Bluetooth 是建立在Bluetooth 标准之上的Profiles,以更清楚地定义Bluetooth 模块传输的数据类型。设备的应用程序决定它必须支持哪些配置文件。
Bluetooth SIG 采用了许多允许互操作性的配置文件:
经典配置文件:https://www.bluetooth.com/specifications/profiles-overview/
BLE 配置文件:https://www.bluetooth.com/specifications/gatt/
BLE 允许 Custom Services & Characteristics to be created. However, trying to develop both ends of the Bluetooth link at the same time is challenging especially if you are new to BLE. I would suggest you develop one end at a time. There are number of generic tools, such as a BLE Peripheral Simulator for Peripheral role and scanning and exploration tools for the Central Role, to help. There are also some developer boards such as micro:bit and puck-js,这对于学习从 phone 连接到设备很有用。
我正在进行一个涉及 flutter 和蓝牙的新项目。为此,我阅读了一些相关内容并尝试了一个测试项目,但我仍然有一些问题找不到简单的答案。
首先,BLE 与蓝牙。 BLE 就是蓝牙版本 4,主要用于物联网应用。它可以 运行 在移动设备 phone 中,但是是否存在任何兼容性问题?也就是,BLE 设备可以与蓝牙设备通信还是它们都需要使用相同的蓝牙版本?
这个问题来自于测试 flutter blue example 并且没有发现任何设备,而我的标准 phone 的蓝牙发现了 10 多个设备(在魅族 16th 上测试)。我是否需要两个具有相同 flutter 蓝牙应用程序的设备才能让它们相互看到并进行交互?我知道为了四处发送信息,我需要两台具有相同 flutter 应用程序的设备,但现在我只想测试 de scan 设备的功能,返回 0 个设备让我有点失望。
其次,我看到了一些蓝牙包,比如flutter_blue, flutter_bluetooth_serial (based on flutter_blue), flutter_reactive_ble and bluetooth。考虑到我的项目基于制作问卷 -> 通过蓝牙发送 -> 通过蓝牙取回填写的问卷,你认为哪一个最适合?
简而言之,我在 flutter 方面的知识相当基础,而在蓝牙方面绝对是 0,所以我希望在 flutter 蓝牙技术的当前状态中得到一些明智的建议,这样我就有了一个强有力的起点和避免常见错误。
编辑:为了补充@ukBaz 在解释蓝牙背后的理论时的回答,如果有人发现自己在使用 flutter_blue 示例,请记住在您的设备中同时打开蓝牙和 GPS,因为示例工作。
有了 ukBaz 的解释和一个工作示例,我可以承接这个项目,谢谢。
编辑 2:解释为什么需要定位服务 here。
蓝牙是一组标准的二进制协议,用于 short-range 设备之间的无线通信。
蓝牙“经典”(BR/EDR) 支持最高约 24Mbps 的速度。一般来说,经典蓝牙主要用于无线telephone连接、无线头phones和无线音箱等音频。
蓝牙 4.0 引入了一种低功耗模式,即“低功耗蓝牙”(BLE 或 LE,也称为“智能蓝牙”),其运行速度为 1Mbps。此模式允许设备在大多数时间关闭其发射器。因此它是“低能量”。低功耗蓝牙更常见于可穿戴设备、智能物联网设备、健身监测设备和 battery-powered 配件。
BLE 功能由创建通用属性配置文件 (GATT) 的 key/value 对主导。
BLE 定义了设备可以扮演的多种角色:
- Broadcaster(信标)是一个仅发射器的应用程序。
- Observer(扫描仪)仅适用于接收器应用程序。
- 充当外设角色的设备可以接收连接。
- 充当中心角色的设备可以连接到外围设备。
在应用层,Bluetooth 是建立在Bluetooth 标准之上的Profiles,以更清楚地定义Bluetooth 模块传输的数据类型。设备的应用程序决定它必须支持哪些配置文件。 Bluetooth SIG 采用了许多允许互操作性的配置文件:
经典配置文件:https://www.bluetooth.com/specifications/profiles-overview/
BLE 配置文件:https://www.bluetooth.com/specifications/gatt/
BLE 允许 Custom Services & Characteristics to be created. However, trying to develop both ends of the Bluetooth link at the same time is challenging especially if you are new to BLE. I would suggest you develop one end at a time. There are number of generic tools, such as a BLE Peripheral Simulator for Peripheral role and scanning and exploration tools for the Central Role, to help. There are also some developer boards such as micro:bit and puck-js,这对于学习从 phone 连接到设备很有用。