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.

[参考译文] CCS/LAUNCHXL-CC1352P:无法修改从传感器发送到收集器的消息

Guru**** 2553260 points
Other Parts Discussed in Thread: LPSTK-CC1352R, OPT3001

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/921591/ccs-launchxl-cc1352p-unable-to-modify-the-message-sent-from-the-sensor-to-the-collector

器件型号:LAUNCHXL-CC1352P
主题中讨论的其他器件:OPT3001LPSTK-CC1352R

工具/软件:Code Composer Studio

您好!

我正在基于 Sensor_SM 和 Collector_SM 示例进行工程、我需要自定义从传感器发送到收集器的消息、并添加从 LPSTK-CC1352R 传感器套件的 OPT3001传感器进行的 lux 测量。

我能够修改 SENSORS_SM 示例中的消息、将 SMSGS_SENSOR_LIGHT_LEN 的长度更改为4字节、 并将 STRUCT_Smsgs_lightsensorfield_t 的 rawValue 变量更改为 Int32_t 类型。

无论如何、当我尝试在 collector_SM 示例中执行相同的操作时、将   struct _Smsgs_lightsensorfield_t 的 rawValue 变量的长度更改为 int32_t 类型、我会得到以下错误:  

错误:符号"csf_deviceSensorDataUpdate"重新声明为不兼容的类型:

  "void (ApiMac_sAddr_t *、int8_t、Smsgs_sensorMsg_t *)"

  在"../application/collector/csf.c 中的801行和:

  "void (ApiMac_sAddr_t *、int8_t、Smsgs_sensorMsg_t *)"

  位于第205行的"..\application\collector\ccsf.h"中)

您是否对我遇到此问题的原因有任何了解? 任何建议都是值得赞赏的。

谢谢、此致、
亚历山德罗

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

    亚历山德罗

    我认为您需要修改 collector.c 中的 processSensorData() fcnion

    在第1669行中、您需要将缓冲区递增4、而不是2。 您还需要使用 buildUint32()而不是 buildUint16()。

    此外、如果您在传感器上执行的操作不同、您还需要执行此操作。

    对于传感器:

    在 sendSenorMessage()函数中,转到第1624行,并执行相同操作。 将缓冲区递增4而不是2、并使用 bufferUint32而不是 bufferUint16。

    但愿这对您有所帮助。 我们将发布正式培训/SimpleLink Academy、向您介绍添加新传感器数据的过程、敬请期待。 应在本周结束时发布。

    此致、

    AB

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

    尊敬的 AB:

    感谢您的快速回复。 我尝试了您提出的解决方案、但我仍有与以前相同的问题。

    此问题似乎与  CSF_deviceSensorDataUpdate  函数相关、在该函数中、如果我更改了 Smsgs_sensorMsg_t 结构的任何字段、编译器会给出关于不兼容声明类型的错误。

    你建议什么?

    谢谢、
    亚历山德罗

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

    您好 AB、

    我进行了一些其他测试、将 typedef 结构的名称从 Smsgs_sensorMsg_t 更改为 SMGS_TEST_t、并将函数的名称更改为  csf_deviceSensorDataUpd、以查看是否使用与源文件中声明的函数不同的名称解决了问题。 现在、我有这个错误:

    >>编译失败

    application/collector/subdir_rules.mk:9:目标'application/collector/csf.obj'的配方失败

    "...\application\collector\ccsf.h"、第206行:错误#20:标识符"Smssgs_test_t"未定义

    "../application/collector/csf.c、第802行:错误#20:标识符"Smssgs_test_t"未定义

    我真的不能理解问题在哪里。 我检查了所有代码、但一切看起来都很好。

    一开始、我以为 csF_deviceSensorDataUpdate  函数指向程序中包含的源文件、而不是指向示例的文件、就像我单击"Open Declaration"时、CCS 询问我是否要打开的 csf.h 文件中包含的声明 示例目录、或 TI Simplelink 源文件夹的 css.h 文件中的示例目录。 不管怎样,更改名称后,问题仍然存在。

    非常感谢您的帮助!

    谢谢、
    亚历山德罗

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

    您好 AB、

    今天、我进行了几次其他测试、我找到了问题。 编译错误似乎与 csf.c 文件中缺少包含 msgs.h 头文件有关、其中"csf_deviceSensorMsg_t"数据类型在"csf_deviceSensorDataUpdate"函数中使用。 我无法理解的是 、为什么能够  正确编译示例程序而不会出现任何错误、而只有在修改 "smsgs.h 文件中的"Smsgs_sensorMsg_t"数据结构时、我才会收到错误。

    我还看到、如果我更改结构的字段名称(如"tempSensor"结构中的变量"ambienceTemp")、该名称由  "Smssg_sensorMsg_t"数据结构使用、 然后、当我在 "csf_deviceSensorDataUpdate"函数中使用它(使用 pMsg->tempSensor.ambienceTemp)时、我看到"tempSensor"结构有两个变量、一个具有旧名称、另一个具有新名称。 当新名称指向应用程序文件夹中的 smsgs.h 文件时、旧名称指向源文件夹的 smsgs.h 文件。 为什么示例中包含源代码、以及如何避免此问题?

    非常感谢您的帮助。

    谢谢、此致、
    亚历山德罗

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

    这听起来像是包含/链接问题。

    我将进入项目属性、build->include 选项、并确保项目根目录更接近列表顶部、并删除指向 SDK 安装目录中包含 smgs.h 的文件夹的链接。

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

    尊敬的 AB:

    感谢您的回复。 我尝试删除链接 smsgs.h 的"${COM_TI_SIMPLELINK_CC13X2_26X2_SDK_INSTALL_DIR}/source/ti/ti154stack/common/inc 文件夹、但在编译过程中、我在缺少源文件时遇到了很多错误。

    同时、我想通知您、我尝试按照 Simplelink Lab 添加新传感器(从从从 Resource Explorer 下载的新收集器项目开始)、我遇到同样的错误: http://dev.ti.com/tirex/explore/node?node=AHs0wbxuPRpRbJcHasQeYw__pTTHBmu__LATEST

    我们非常感谢您的帮助、因为我对如何解决此问题没有任何想法。

    谢谢、此致、
    亚历山德罗

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

    尊敬的 AB、您是否有机会查看我的最后一条消息?

    非常感谢、
    亚历山德罗

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

    亚历山德罗

    不要从列表中删除 inc 文件夹、而是将本地 smgs.h 位置添加到列表顶部(这将使其优先于 inc 文件夹)

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

    尊敬的 AB、我终于找到了问题所在。 我将 CCS 从10.0版本更新为10.1版本、错误消失了。
    在编译期间、CCS 中可能存在一个生成错误的错误。

    感谢您的友好支持、
    亚历山德罗