flutter_bluetooth_serial_example

示例应用程序演示了flutter_bluetooth_serial插件的关键功能

  • 适配器状态监控,

  • 打开和关闭适配器,

  • 打开设置,

  • 发现设备(并请求可发现性),

  • 列出已配对的设备并配对新设备,

  • 同时连接到多个设备,

  • 发送和接收数据(多连接)。

该插件(目前)使用串行端口配置文件通过RFCOMM移动数据,因此请确保有一个正在运行的服务发现协议(SDP),它指向设备的SP/RFCOMM通道。

屏幕

主屏幕和选项 发现和连接 与服务器的简单聊天 后台连接

注意:屏幕截图可能已过时。请自行构建并查看示例应用程序,您不会后悔的。?

测试

有测试录像(点击以WEBM版本打开视频)

Test with multiple connections

通用

基本的东西很简单,所以没有必要写太多。

发现页面

在设备列表中,您可以长按开始配对过程。如果设备已配对,您可以使用长按取消配对。

聊天示例

已实现简单的聊天。客户端(Flutter主机)连接到已配对设备中选定的服务器,以异步交换数据。

Raspberry Pi 上的简单(控制台)服务器

  1. 启用蓝牙并配对 Raspberry 与 Flutter 主机设备(仅首次)

$ sudo bluetoothctl
# power on
# agent on
# scan on
# pair [MAC of the Flutter host]
# quit
  1. 将 SP/RFCOMM 条目添加到 SDP 服务

$ sudo sdptool add SP         # There can be channel specified one of 79 channels by adding `--channel N`.
$ sudo sdptool browse local   # Check on which channel RFCOMM will be operating, to select in next step.

SDP 工具倾向于使用好的(且免费的)通道,因此如果您让它决定,则无需跟踪其他服务。

  1. 启动 RFCOMM 监听

$ sudo killall rfcomm
$ sudo rfcomm listen /dev/rfcomm0 N picocom -c /dev/rfcomm0 --omap crcrlf   # `N` should be channel number on which SDP is pointing the SP.
  1. 现在您可以使用控制台通过示例应用程序连接并与服务器聊天。每个字符都会发送到您的设备并进行缓冲。只有完整的消息,在换行符(\n)之间,才会被显示。您可以使用Ctrl+ACtrl+Qpicocom实用程序中退出,如果您想从服务器端结束流(以及Ctrl+C用于退出rfcomm实用程序的监视模式)。

如果您在使用终端时遇到问题(某些picocomterm_exitfunc错误),您应该尝试保存良好的终端设置(stty --save > someFile),并在 picocom 退出后加载它们(将; stty `cat someFile` 添加到第3步的第二个命令中应该可以解决问题)。

您也可以以其他方式使用该描述符(/dev/rfcomm0),不一定在它上面运行交互式终端,以进行聊天。它可以以各种方式使用,提供更多的自动化和/或抽象。

后台监视器示例

为了测试多个连接,创建了一个后台数据收集器,它连接到配备HC-05蓝牙接口、2个DS18B20温度计和水pH计的Arduino控制器。有非常好的图表显示接收到的数据。

该示例使用摄氏度,选择它是因为它利用了水的冰点和冰融点标准条件,而不是像华氏度那样仅仅依赖于元素周期表……

Arduino端的项目可以在/arduino文件夹中找到,但请注意:代码已准备好在特定环境中进行测试,如果没有其硬件部分(温度计、pH计)将无法工作。如果您可以修改实际的温度计代码,例如改为随机数据生成器或您自己的输入。

GitHub

查看 Github