iOS BLE蓝牙-发送/接收十六进制数据

iOS BLE蓝牙-发送/接收十六进制数据,ios,bluetooth,bluetooth-lowenergy,Ios,Bluetooth,Bluetooth Lowenergy,我正在创建一个iOS应用程序,该应用程序应连接到自定义可扩展设备。我需要向iOS应用程序发送2个十六进制命令,一个用于启用设备的一部分,另一个用于请求数据 在iOS中,除了使用服务和特性外,还有什么方法可以发送/接收自定义十六进制数据吗?没有,但原因不是iOS,而是“服务”和“特性”只是BLE协议定义的一部分 官方规格: 通用属性配置文件 最新的蓝牙规范使用基于服务的体系结构 基于属性协议(ATT)。所有通信都是低能量的 在通用属性配置文件(GATT)上发生。申请书 或者另一个配置文件使用GA

我正在创建一个iOS应用程序,该应用程序应连接到自定义可扩展设备。我需要向iOS应用程序发送2个十六进制命令,一个用于启用设备的一部分,另一个用于请求数据


在iOS中,除了使用服务和特性外,还有什么方法可以发送/接收自定义十六进制数据吗?

没有,但原因不是iOS,而是“服务”和“特性”只是BLE协议定义的一部分

官方规格:

通用属性配置文件

最新的蓝牙规范使用基于服务的体系结构 基于属性协议(ATT)。所有通信都是低能量的 在通用属性配置文件(GATT)上发生。申请书 或者另一个配置文件使用GATT配置文件,以便客户端和服务器可以 以结构化的方式进行交互

服务器包含多个 属性,GATT概要文件定义了如何使用该属性 发现、读取、写入和获取指示的协议。这些 功能支持基于服务的体系结构。服务被使用 如外形规格中所定义。关贸总协定使你能够公开 配置文件规范中定义的服务和特性


另一个答案是偶然正确的,但原因是错误的

当然,我们可以发送任何类型的数据,而不仅仅是GATT。只是iOS迫使你与关贸总协定合作。没有任何其他的iOS API。所以,是的,是iOS阻止了你这么做

如果你不被迫与关贸总协定合作,还有其他一些选择:

  • L2CAP基于信用的通道-您可以创建一个通道,允许您以您选择的任何格式发送每个数据包完整的23个八位字节的数据(在BLE 4.0和4.1中;4.2中允许更多)
  • 通过访问HCI,您可以发送自定义ACL数据包以避免L2CAP头。但是您还需要修改另一端,以确保它正确解析它

是,您可以通过可扩展设备发送数据。我已经实现了。通过实现外围对象的writevalue方法来发送有关可编程设备的给定特性的数据。此外,为了从BLE设备获取数据,您可以使用外围对象的readValue方法。数据将在蓝牙框架的更新委托方法中启动

您是否得到了解决方案,请分享您的答案不正确:您可以在GATT范式之外的BLE中发送数据。