换了sdk蓝牙

换了sdk蓝牙,第1张

你说的是换了sdk蓝牙之后如何在GeckoSDK新版本中迁移蓝牙项目吧。你可以下在最新的补丁进行迁移即可。

换了sdk蓝牙之后如何在GeckoSDK新版本中迁移蓝牙项目的步骤为:1.下载新版SDK当您下载带有新的主版本号或副版本号的SDK(例如,从v2.6.2更新到v2.7.0)时,将在您的电脑上创建一个新的SDK文件夹,从那里您可以选择在创建新项目时使用哪个SDK。您已经存在的项目将不会被触动。与此相反,当您将补丁下载到计算机时,它将自动覆盖您现有的SDK内容。例如,GeckoSDKv2.7.3将在下载时覆盖GeckoSDKv2.7.2。现在,如果您创建了一个新项目,它将使用新的补丁版本创建。但是,您已经存在的项目仍然会包含来自上一个补丁版本的文件。这是因为当您创建一个项目时,SDK文件将在项目创建期间复制到项目中,并且SDK更新不会触及您已经创建的项目。2.更新已有的蓝牙项目如果你想更新一个已经存在的项目,有以下两个办法:用新的SDK创建一个新的SoC-Empty项目,并合并通过前版本SDK所生成的SoC-Empty项目上做的所有更改。替换现有项目中的所有SDK文件。通常,我们强烈建议采用第一种方式,因为项目生成器会负责复制所有文件,并完成最新SDK版本运行所需的所有配置。3.使用新创建的SoC-Empty项目进行更新建议在编写蓝牙应用程序时,将应用程序文件与SDK文件完全分离。这就是为什么SoC-Empty示例项目包含app.c/app.h文件,这些文件实现了应用程序,并且独立于底层SDK版本。(当然,可以添加更多实现应用程序代码的文件。)在这种情况下,迁移到新的SDK版本的步骤是:使用新的SDK版本创建一个新的SoC-Empty项目。用您的应用程序覆盖app.c/app.h。添加其他应用程序文件(例如处理外设和为蓝牙提供数据的模块)。将需要的SDK项目从更新的SDK文件夹复制到你的项目中(例如,如果你在项目中使用LEtimer,你必须将em_letimer.c/em_letimer.h复制到你的项目中)。用GATT配置器导入您的GATT数据库。找到右侧的import按钮,并从旧项目导入ga.xml文件。按Generate按钮以便在你的项目中生成GATT数据库代码。您可能在您已经存在的项目中针对init_mcu.c,init_board.c,init_app.c申请了修改,与其用旧项目的文件来覆盖这些文件,不如合并您所做的更改。这一点很重要,因为这些文件不是独立于SDK的,而且在两个SDK版本之间。重要。在此步骤后请不要在GATT配置器中按Generate键,因为它可能会重新生成这些文件,而您的更改可能会消失。在项目设置中添加附加的include目录(例如,如果您为自己的头文件创建了一个新的文件夹,或者将SDK文件复制到一个新的文件夹中)和数据库。重要。在此步骤后请不要在GATT配置器中按Generate键,因为它可能会重新生成这些文件,而您的更改可能会消失。现在可以构建项目了。4.更新现有项目中的SDK文件您也可以采用另一种方法,一个一个地更新项目中的所有SDK文件。在这种情况下,你应该执行下列步骤:更新项目中的/硬件、/平台和/协议文件夹。由于项目中的这些文件夹只包含SDK的/硬件、/平台、/协议文件夹中的文件子集(C:SiliconLabsSimplicityStudiov4developersdksgecko_sdk_suitevX.Y),所以应该逐个复制这些文件,而不是将整个文件夹复制到项目中。至少检查main.c,init_mcu.c,init_board.c,init_app.c。如果它们包含来自上一个SDK版本以来的任何重要更新,则为init_app.c。创建一个新的SoC-Empty项目,并将新文件与现有项目进行比较。如果您看到任何未由您完成的更改,请将这些更改合并到您的项目中。

1)设置一下自己需要advertise的内容,即,要在广播包里广播出来什么东西,例如名字,或者是支持的service什么的。

2)设置一下自己能够给 远端提供什么内容呢?总得搞一个service吧,不管是sig制订的标准的,还是自己定义的,另外自己总得有数据给别人吧,例如你想做一个温度计,那么温度的这个东西总需要定义一下的,即为characteristic加入到自己系统的gatt 数据库(根据不同产品的名字不同命名不同,例如android叫gatt server)中去,抑或是更高级一点加个descriptor。并注册好相应的callback函数,例如远端来读数据了怎么办,来写数据了怎么办。

3)开动start advertise,静静读等待有缘设备过来。

GAP(Generic Access Profile):它用来控制设备连接和广播,GAP 使你的设备被其他设备可见,并决定了你的设备是否可以或者怎样与合同设备进行交互。

GATT(Generic Attribute Profile):BLE连接都是建立在GATT协议之上的。GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范,这些很短的数据段被称为属性(Attribute)。

BLE中主要有两个角色:外围设备(Peripheral)和中心设备(Central)。一个中心设备可以连接多个外围设备,一个外围设备包含一个或多个服务(services),一个服务包含一个或多个特征(characteristics)。

使用CoreBluetooth库,创建CBPeripheralManager,实现CBPeripheralManagerDelegate代理

创建完该对象,会回调peripheralManagerDidUpdateState:方法判断蓝牙状态,蓝牙可用,给外设配置服务和特征

注意CBAttributePermissions

当中心设备读写设置CBAttributePermissionsReadEncryptionRequired/CBAttributePermissionsWriteEncryptionRequired权限的Characteristic时,会d出d框,请求建立安全连接

给外设配置服务特征后,会调用peripheralManager:didAddService:error: 服务特征全部添加完后发起广播,如果在广播时设置CBAdvertisementDataServiceUUIDsKey,会把该service广播出去,中心设备在扫描时可根据该uuid找到该设备。外围设备靠不断发广播,使中心设备发现它。

当中央端连接上了此设备并订阅了特征时会回调 didSubscribeToCharacteristic:

当接收到中央端读的请求时会调用didReceiveReadRequest:

创建CBCentralManager对象,实现CBCentralManagerDelegate代理

回调centralManagerDidUpdateState:代理方法,当central.state==CBManagerStatePoweredOn时,开启扫描,设置serviceUUIDs可扫描特定外设,CBCentralManagerScanOptionAllowDuplicatesKey设为NO不重复扫描已发现设备,YES是允许

扫描到设备会回调centralManager:didDiscoverPeripheral:advertisementData:RSSI:,RSS绝对值越大,表示信号越差,设备离的越远

关闭扫描

连接设备

发现服务

发现特征


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6755285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存