我有一个应用程序的概念,但我无法找到正确的信息,以了解它是否可能。因此,如果有人有这方面的经验,您的帮助将不胜感激。
其想法是创建一个应用程序,通过BLE连接一个像网关(OS是linux)功能的设备。移动应用程序需要控制网关设备,以便与其他设备(外围设备)建立连接(也包括BLE)。外围设备具有发送到网关设备的数据。移动应用程序应该能够读取这些数据,并能够告诉网关设备将数据发回。我能发现的是,当网关想要发送数据时,它应该连接和断开连接到每一个设备。
我的问题是:
谢谢你的帮助。
发布于 2020-01-15 09:37:51
你的想法肯定是可行的,但需要很多关于BLE、iOS/Android应用程序开发和BlueZ (Linux上的蓝牙堆栈)的知识。我的第一个建议是不要使用经典的蓝牙(RFCOMM),而是使用蓝牙低能(BLE)。原因是,与传统的蓝牙相比,iOS存在局限性,资源也比现有的少得多。
至于你的具体问题:-
创建这样的东西的最佳实践是什么?
您将需要一个iOS/Android应用程序,作为一个BLE中心(即负责扫描和启动BLE连接)。此应用程序还应充当GATT客户端(即从远程GATT服务器读取数据数据)。
然后,您需要在shell脚本中使用BlueZ命令,或者使用BlueZ C为您的Linux /网关编写和编译程序。Linux网关既应充当中央/外围设备(即广告和接收传入连接以及扫描和进行远程连接),也应充当GATT Client/Server (即从远程GATT服务器读取数据,并将读取数据存放在GATT服务器本地)。
操作顺序将由Linux程序/脚本在启动时开始扫描特定设备,然后连接到它们并使用GATT操作读取它们的数据。一旦数据被读取,它将把数据存放在当地的GATT服务器中。另外,在引导时,Linux机器需要为远程连接做广告。iOS/Android应用程序可以用来扫描远程Linux设备,连接到它,并使用GATT命令读取来自它的数据。
这会有多稳定?
这将具有很好的稳定性,不会出现问题,但这取决于连接的数量和每个事务要发送的数据量。许多BLE设备允许至少8个连接,如果您的号码在此范围内,则不存在任何问题。
如果是在linux中做模拟的RFCOMM,我能打开更多的连接吗?
您可以在Linux上拥有多个RFCOMM连接,但是您会发现这方面的资源非常有限,因为BlueZ还没有被广泛地用于RFCOMM。此外,我相信iOS应用程序不支持RFCOMM,或者可能有非常有限的支持,所以您会遇到问题。
一些可能对你有用的参考资料:-
我希望这能帮到你。
https://stackoverflow.com/questions/59564605
复制相似问题