This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2540:使用带有 CC2540芯片的软件狗来传输数据

Guru**** 2589265 points
Other Parts Discussed in Thread: CC2540, BLE-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/601677/cc2540-transfer-data-using-dongle-with-cc2540-chip

器件型号:CC2540
Thread 中讨论的其他器件: BLE-STACK

我想在充当中央设备的移动设备和使用带有 CC2540芯片的软件狗作为外设的 PC 之间传输一些数据。

PC 端的实现语言是 C#。 按照 可用的 HCI 文档、我设法获取 PC 广告、并且可以在移动设备上发现 PC。 但是、当我连接到 PC 时、我在应用程序中看不到任何传入请求、但移动端没有错误、设备报告为已连接。

我用于进行 PC 广播的步骤如下:

  1. GAP_DeviceInit (具有 ProfileRole Central、即0x08)
  2. GAP_SetAdvToken (具有类型0x09 (完整本地名称)、扫描时可在移动设备上成功读取)
  3. GAP_UpdateAdvTokens
  4. GAP_MakeDiscoverable

所有这些都是成功返回的结果、并且可以从我的移动设备检测到 PC。 但是、我的移动设备的连接不会触发 PC 端的任何事件。 很显然、我缺少一些步骤。

此外、当我尝试使用 GATT_AddService 添加服务时、我获取0x01 (失败)。 我已经阅读了有关 GATT DB 片外的内容。 遗憾的是、这是不可选的、因为我们尝试构建的解决方案应能与开箱即用的芯片配合使用、无需固件编译。

我的问题是: 是否可以使用 PC 作为中央设备以及默认服务和特征(我在 某个位置找到了 chracteristic UUID 0000ffe1-0000-1000-8000-00805f9b34fb)传输数据、或者我是否在错误的路径上、如果不使用适当的预处理器标志编译固件、这一点根本不可能实现?

此致、

弗兰克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更新:

    我发现我错误地认为连接是从移动端(Android)建立的、因为没有引发异常。 深入了解日志、我发现情况并非如此。 logcat 中存在错误:

    06-09 13:44:14.111 4952-5110/? e/bt_btif:属性类型:241、len:0无效

    06-09 13:44:14.111 4952-5110/? e/bt_btif_dm:###断言:system/bt/main/./btif/src/btif_dm.c 行4670无法保存远程设备制造商(1)###

    06-09 13:44:14.111 4952-5110/? E/BluetoothRemoteDevices: devicePropertyChangedCallback: bdDevice: 04:A3:16:8E:0A:87, type :241.

    不幸的是,我不知道什么是241类型的财产以及如何设置它。 我尝试了 GAP_SetAdvToken。 类似如下的 Manufacturer_settings:

    01 33 FE 0A FF 08 F1 06 61 70 69 64 61     

    我很确定这不是正确的、但我在文档中找不到任何可以指向正确方向的内容。 有人知道我在哪里可以找到有关此主题的更多信息吗?

    对使用 TI-HCI-Interface 进行正确广播以正确启动广播并允许连接所需执行的操作进行简要概述?  

    GAP_MakeDiscoverable 的外观如下所示:

    01 06 FE 0A 00 00 00 00 00 00 00 07 00   (可连接的非直接广播、公共、允许来自任何的连接请求)。

    此致、

    弗兰克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Frank、

    您使用的是哪个版本的 TI BLE-Stack SDK? 您是否有监听器捕获此行为?

    我假设您是从 Host Test 示例应用程序开始的。 您是否使用过 BTool? 我建议您从 Host Test 开发开始、以便更好地了解收到的命令、并帮助您了解缺少的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我使用的是1.2.0 (来自 driver.inf: DriverVer=04/05/2013,1.2.0.0)。

    通过使用 BTool、我最终能够克服属性241中的错误、并进行了大量的测试和错误。 否有时连接工作有时不工作(没有任何明显的错误)。 每次扫描时都会检测到加密狗、但每次都没有连接。 此外,当我在 Android 应用程序中连接并调用 discoverServices()时,我会找到两个带有 UUID 的服务,这些 UUID 我已添加到以前不使用 BTool 的另一个应用程序中。 正如我在原始帖子中所写的、我无法向充当外设的软件狗添加服务。 每次我得到0x01 (失败)。 因此、我对如何在软件狗和 Android 应用程序之间传输数据有点迷失。
    是否有任何有关正确命令序列的文档来执行类似操作? 代码示例仅显示如何充当中央设备。

    深入了解沟通可能会有所帮助。 您会推荐哪种监听器工具?

    此致、
    弗兰克