解析MSP430F5529LP + CC3100Boost平台上的XML文本
问题描述:
我正在使用MSP430F5529LP和CC3100Boost开发IOT项目。硬件成功连接到云并交换数据。对IOT设备的响应是基于XML的。我试图解析数据。以下printf("\n%.*s\n", pch2-pch1-8, pch1 +8);
提取数据并打印到控制台。现在需要将这些数据保存到一个变量中。这是我的代码片段。答案可能很明显,不幸的是我没有看到它。解析MSP430F5529LP + CC3100Boost平台上的XML文本
_i8 * databuffer;
char * pch0;
char * pch1;
char * pch2;
char data[7];
pch0 = strstr((char *)dataBuffer,"textResponse");
pch1 = strstr(pch0,"<text_1>");
pch2 = strstr(pch1,"</text_1>");
printf("\n%.*s\n", pch2-pch1-8, pch1 +8);
参考文献:
答
- 确保接收到的数据是有效和适合的长度。
- 使用
sprintf()
或等效函数将其打印为字符串。 - 将此字符串打印到控制台
puts(the_string)
。
请注意,在低端微控制器上使用stdio.h是一个坏主意,因为它非常耗费资源。我猜想它会在MSP430F5529上吹走大约5%的MCU资源(RAM +闪存)。通常它会吃掉大约1-2kb的RAM和16kb的闪存2-4kb。 – Lundin
@Lundin,这是一个概念设计的证明。但是,如果要实现相同的目标,你将如何使用stdio.h。处理每个字节而不是使用库是典型情况。 –
编写一个向UART发送字符的函数或者MCU上的任何标准输出都相当容易。我们正在谈论的是 2kb,因为执行完全相同的事情。另外,stdio.h因缺乏类型安全而臭名昭着。 – Lundin