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.

[参考译文] 编译器/CC2541KEYFOB-RD:接收/发送代码流

Guru**** 2556330 points
Other Parts Discussed in Thread: CC2540, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/569118/compiler-cc2541keyfob-rd-receive-transmit-code-flow

器件型号:CC2541KEYFOB-RD
Thread 中讨论的其他器件:CC2540CC2650

工具/软件:TI C/C++编译器

你好、

我不是很熟悉、可以有人很好地解释代码流程、说明如何在某些 BLE 示例项目中接收/传输字符/命令串、如"密钥卡"。

我对这一点还不熟悉,需要得到启发。 我目前正在尝试使用示例代码、但仍然可以跟踪代码中字符串/字符串的接收/传输位置。

我正在使用 CC2541Keyfob 板和 BLE 扫描仪应用与它进行通信。

谢谢。

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

    您在代码中到底要问什么? 例如、在哪里接收到写入和通知?

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

    是的、就像这样。 例如、从客户端(使用 BLE Scanner 应用的 Android 手机)到密钥卡器件。 我需要向器件发送一串命令、然后至少尝试"斩波"或将这些命令标记为执行特定命令、例如将数据发送回客户端或点亮 LED。

    我已经将其发布到 BLE 无线论坛、他们建议我阅读一些网站。 但我更注重一个人通过一个示例学习、使用示例代码。 )

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

    KeyFobDemo 应用程序不接收来自中央应用程序(扫描仪应用程序)的写入。 但是、SimpleBLEPeripheral 确实如此、并且它具有密钥卡配置。 我建议您改为使用此项目来查看如何将数据写入特征。 simpleProfileChangeCB 函数将是一个开始了解如何处理此问题的好地方。

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

    您好、Nathan 先生、

    感谢您为我提供合适的样片应用。 现在我正在检查 SimpleBLEperipheral 项目中的 simpleProfileChangeCB()。

    使用特征3的写入属性、我已经可以通过写入一个字节(例如、如果 newValue ='y'或0x79、则打开 LED、否则关闭...)来命令 LED "打开"和"关闭"。

    但是现在、我不仅需要发送/写入一个字节、还需要整个字符串来执行命令(LED 打开/关闭)、当我尝试调整 SimpleProfile_GetParameter (...)时、似乎无法正确执行命令。

    我还需要存储这些字符串、然后根据需要进行处理。

    我的问题是:

    -我是否需要创建新的 GetParameter 函数或默认值就足够了?

    -我是否还需要检查和调整其他功能? 这些是什么?

    很抱歉、有很多问题、非常感谢您抽出宝贵的时间。

    谢谢。

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

    您不需要创建新的 GetParameter 函数、但需要对正在使用的特征进行更改。 例如、如果使用特征1、则需要使 simpleProfileChar1成为一个数组、该数组是特征中字节数的长度。 您还必须进行其他更改、例如 simpleProfileChangeCB 中的更改、以考虑多个字节的使用(此数据必须复制到数组中)。

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

    您好!

    感谢您的确认。 实际上,在我阅读您的答复之前,我在深入了解 simpleBLEPeripheral 示例代码的同时,碰巧找到 simpleProfile_WriteAttrCB (..) 函数。

    注意到特征3的写入值会发生一些筛选、尝试编辑、并且已经可以使用写入属性中输入的字符串值执行命令... 示例 写入"asas"、然后检查/比较 pValue 索引0-3 (是否使用此"if"方法仅检查、计划将值标记为标记)。

    尽管我现在设法做到了我想要的、但我只想确认这是否是正确的方法?

    谢谢。

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

    是的、可以通过不同的方法来传输正在读取的数据。 这种方法应该是好的。

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

    感谢您的确认。
    我正在进行我的项目、目前为止没有遇到过问题。
    如果出现新问题、如果您不介意、我们会再次与您见面。 )
    再次感谢您的观看。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nathan 先生、

    由于我的问题仍然与此帖子有关、我将提出任何疑问。

    如果我用于从智能手机接收命令到外设设备的函数是 simpleProfile_WriteAttrCB (..) 函数,然后用于从外围设备传输到智能手机的是 simpleProfile_ReadAttrCB (..) 功能? 是这样吗?

    只需确认即可。

    谢谢。

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

    是的、正确。

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

    您好、Nathan 先生、

    再次感谢您的确认。

    现在、我尝试弄清为什么只读取1个字节。

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

    我不知道我是否必须在这里提出这个问题,但无论如何我会这样做。
    目前、我正在尝试浏览有关从 CC2540的 EEPROM 读取/写入的论坛。
    我需要在 MCU 中存储一个值、尤其是一个"密码"、这样即使 MCU 断电、它也会保留再次上电时要使用的当前值。 您能再次向正确方向指示吗? BLE 堆栈中是否存在任何相关的示例代码?
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nathan 先生、

    我在 SimpleProfile_WriteAttrCB()函数方面遇到问题。 它与 pValue 有关。 我注意到它只能存储20个字符。 该修复方法是不是可以、还是仍然可以调整? 我需要超过20个字符才能发送到外围设备进行处理。

    谢谢。

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

    我有一个有关我使用的 ReadAttrCB/WriteAttrCB 函数的后续问题、该函数只能处理20字节的数据。
    我需要发送/接收超过20字节(可能最大为30字节)。 上述函数是否仍可根据项目需求进行编辑?
    或者、我应该改用这些函数"GATT_ReadLongCharValue/GATT_WriteLongCharValue? 以及如何实现?
    我无法使用此函数找到任何示例代码。
    再次感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    20字节是特征的最大长度。 如果要发送更多数据、则必须多次写入和读取特征。

    有关使用特征的更多信息、请参阅以下 SimpleLink Academy 模块: software-dl.ti.com/.../overview.html

    它适用于 CC2650、但大部分过程都是相同的。

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

    感谢您的回复。
    v1.4堆栈内是否提供了与此相关的任何示例代码?
    这两个函数 GATT_ReadLongCharValue/GATT_WriteLongCharValue 如何?
    我将开始阅读您提供的链接。
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您可以使用 GATT_ReadLongCharValue 和 GATT_WriteLongCharValue、但这比使用不带响应命令或通知的多个写入速度慢。 您可以在 HidAdvRemote 项目(HID 报告映射特性)中看到一个向特征写入更多字节的示例。

    如需更多信息、请参阅此主题: e2e.ti.com/.../783758

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

    您好、Nathan 先生、

    感谢您的澄清。

    关于您多次读取/写入数据的建议、我想知道客户端是否会发送多个数据、是否存在时间间隔或不需要(例如、按下一个命令/按钮时、按2组20字节等) 从应用程序)? 在外设端、如果与超过20字节的命令字符串相匹配、我将只检查从客户端接收到的多个数据。 尚未尝试过、只需确认这是正确的方法。

    我将阅读您提供的链接。

    再次感谢。

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

    我只想再次确认,当按下某个键时,负责向客户端发送数据的函数是 simple.c 中的 SK_ReadAttrCB() 我计划在项目中为端口1的输入添加中断处理程序。 如果输入状态发生变化、它将向客户端发送消息。
    我慢慢地来到这里:)
    谢谢。