Flutter范例:获取OP-BT/OP-BTS 的电池电压

概览

OP-BTS/OP-BT 蓝牙光电头支持蓝牙5.0 BLE/SPP 双模,支持Windows、Android、iOS等平台。然而,在不同平台下,连接方式会有所不同。对于新用户来说,可能会感到很疑惑。

Windows

如果您已经有读表专用程序,且已经使用过USB(如OP-USB)光电头读表。那么, 您只需成功完成蓝牙配对,并给新配对的OP-BTS指定一个虚拟串口,然后在您的应用程序中选择对应的串口,即可正常使用。

iOS/Android 等掌上设备操作系统

如果您打算使用Android/iOS下的读表应用程序,那么事情可能没那么简单。由于iOS/Android 没有类似Windows上的虚拟串口,导致 iOS/Android 上通过有线USB串口连接读表光电头的软件无法给蓝牙光电头指定一个虚拟串口。

要想解决这个问题,必须修改您的读表应用程序,通过蓝牙专用API连接方式才能成功连接上 OP-BTS/BT 蓝牙光电头。

两种蓝牙连接类型:

很多人以为蓝牙只是一种通讯协议。实际上,蓝牙分为经典蓝牙和低功耗蓝牙,两种蓝牙连接到协议类型一样,但是操作方式却大相径庭。

  • 蓝牙经典(BR/EDR):也就是常说的SPP(Serial Port Profile)方式,适用于Windows和Android平台。使用SPP蓝牙,您需要输入配对码来跟设备配对。
  • 低功耗蓝牙(BLE):使用GATT协议进行特征(Characteristic)的读写、订阅通知等,适用于Windows、Android和iOS平台。往往在应用程序中直接选取设备,不需要配对。

当您打开 OP-BTS/OP-BT 后,在电脑或手机的蓝牙连接设置中,会看到两个同样名字的蓝牙设备名称,分别为经典蓝牙和低功耗蓝牙。其中BLE结尾的是低功耗蓝牙,另一个则为经典蓝牙。如:

  • OP-BTS 12345 (经典蓝牙)
  • OP-BTS 12345 BLE (低功耗蓝牙)

最新版本的 Android 系统同时支持 SPP 和 BLE。然而,iOS 系统只支持 BLE 方式的蓝牙连接。因此,为了减少开发工作量以及兼容性的考虑,我们建议使用BLE方式进行配对、连接和通讯。

BLE服务与特征值

OP-BTS/OP-BT 设备使用低功耗蓝牙(BLE)技术进行通信,通过GATT协议提供服务和特征值。本文档详细说明了设备提供的BLE服务和特征值,帮助开发者更好地理解和使用这些功能。

设备可能提供多种不同的服务UUID,根据设备型号和固件版本的不同,可用的服务和特征值可能有所差异。本文档涵盖了常见的服务和特征值配置。

主服务 (Primary Service)

服务UUID: 18F0

这是OPBT设备的命令服务,用于发送命令和接收响应,特别适用于读取电池电压等操作:

特征UUID 属性 描述
2AF0 读/通知 通知特征,用于接收设备返回的数据
2AF1 写入特征,用于向设备发送命令

示例代码(Flutter/Dart - 2AF0特征)

// 启用数据传输特征的通知
BluetoothCharacteristic dataCharacteristic = ...; // 2AF0特征
BluetoothDescriptor cccd = await dataCharacteristic.descriptors.firstWhere(
  (d) => d.uuid.toString() == '00002902-0000-1000-8000-00805f9b34fb'
);

// 启用通知
await cccd.write([0x01, 0x00]);

// 设置通知回调
dataCharacteristic.value.listen((value) {
  // 处理接收到的数据
  print('收到数据: ${String.fromCharCodes(value)}');
});

// 禁用通知(在不需要时)
await cccd.write([0x00, 0x00]);

技术资料与范例

为了更好了帮助您,我们在此准备了几个编程范例。如果您已经熟悉iOS或Android等移动设备的软件开发,那么对您来会比较容易掌握和熟悉。

参考资料