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.
工具/软件:TI-RTOS
大家好!
您能在 JSON 库中澄清一点吗? 我的问题与此函数的最后一个参数"uint16_t * maxValueSize"有关:
int16_t JSON_getValue (JSON_Handle objHandle、const char * pkey、void * pValue、uint16_t * maxValueSize);
我应该通过此处的引用传递哪个值?
据我了解、对于字符串和原始数据类型、我应该将指针传递到为其值分配的若干字节。
对于"int32"、"UINT32"、"real32"、"ureal32"、我应将指针传递到其类型大小(字节)、"sizeof (int32_t)"、"sizeof (uint32_t)"、"sizeof (real32_t)"、"sizeof (ure32_t)"、 我的理解。
但如果是"boole"类型、 "maxValueSize"变量为什么不应小于2? 如果我将指针传递给变量、equals 1、则该函数返回错误代码"-101"("jSON_RC___ANLOADCK_SAMPREG_SIZE _EXCED")、布尔类型的 althoug 内部表示为"uint8_t"。 如果要遵循我的逻辑、"maxValueSize"变量应为1。 因此、我想澄清这一点、以便传递正确的值。
如果我理解正确,您对 json_engine.h 文件中“__JSON_GetValue()”函数的描述有点过时。 在注释部分中、您忘记提到受支持的无符号类型("UINT32_t"和"ureal32_t")。
很抱歉、如果我误解了某个内容、因为我没有找到包含示例的完整文档。
此致、
罗马
非常感谢您的回复、CE!
我已经知道,“DetermineValueSize()”函数在此行“* value_size = sizeof (uint16_t);”中填充值大小,因此对于“property_type__Boolean _BASE”和“property_type__string_base”,它的值等于2。 但如果是"property_type__string_base"、则似乎在后续代码中未使用"value_size"。 遗憾的是、我没有太多时间来详细了解 JSON 库源代码的所有细节、它看起来非常复杂、因此、如果遇到其他模糊问题、当我的应用程序的其他部分准备就绪时、我可能会更深入地检查它。 目前、我只需为布尔值分配2个字节、而不用考虑低级函数的实现。 我希望 TI 最终能提供详尽的文档;-)
但现在、我遇到了 JSON 库中其他不明显的问题。 当 json 变量的传输值超出边界时、JSON 库既不会产生错误、也不会溢出变量、它会舍入到最近的值(min 或 max)。 例如、如果模板具有变量的"UINT32"类型、并且 json 文本包含此变量的"-1"值、则 JSON 库不会生成任何错误、它会将此值舍入到"0"、而不是像 C 编译器在"(uint32_t)-1"转换语句的情况下通常所做的那样将此值舍入为"2^32-1"。
此外、如果我以这样的方式修改 json_app 示例中的 json 模板、以便我将任何类型替换为"real32"或"ureal32"、则"json_createTemplate()"函数返回"-25"("json_RC_recovered_ilical_Q_values")。
因此、最好对此库进行更详细的描述。
此致、
罗马
您好、Roman、
JSON 库中确实有 SDK 文档。 在 CC32xx 2.40 SDK 中、这位于 docs/ns 文件夹中、但已移至3.10 SDK 中的 docs/tutils。 示例中还有一个 JSON 示例/ / /ns (或 tutils)文件夹。
无论如何、我将邀请一位有关该库的专家、因为我不确定您的其他问题是否会包含在文档中。 他们应该能够回答您的其余问题。
此致、
Sarah
您好、Roman、
SimpleLink CC32XX 3.10 SDK 尚未发布、但很快就会推出。 您在文档中遇到的一些问题已在此处解决、即添加了以下内容:
可在 JSON 模板中指定的类型有:int32、uint32、raw、string 和布尔值。 API 参考指南中提供了使用示例。
注意: 浮点值解析不正确、可能不应使用。 这将在未来版本中修复、并由 TIUTILS-8跟踪。
谢谢、
Gerardo
罗马
简单来说、 SimpleLink CC32XX 3.10 SDK 现已推出、可在此处找到:
http://www.ti.com/tool/download/SIMPLELINK-CC32XX-SDK
此致、
Gerardo