2017-10-05 51 views
0

我正在使用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); 

參考文獻:

+0

請注意,在低端微控制器上使用stdio.h是一個壞主意,因爲它非常耗費資源。我猜想它會在MSP430F5529上吹走大約5%的MCU資源(RAM +閃存)。通常它會吃掉大約1-2kb的RAM和16kb的閃存2-4kb。 – Lundin

+1

@Lundin,這是一個概念設計的證明。但是,如果要實現相同的目標,你將如何使用stdio.h。處理每個字節而不是使用庫是典型情況。 –

+1

編寫一個向UART發送字符的函數或者MCU上的任何標準輸出都相當容易。我們正在談論的是<100字節代碼大小的函數,而不是> 2kb,因爲執行完全相同的事情。另外,stdio.h因缺乏類型安全而臭名昭着。 – Lundin

回答

1
  1. 確保接收到的數據是有效和適合的長度。
  2. 使用sprintf()或等效函數將其打印爲字符串。
  3. 將此字符串打印到控制檯puts(the_string)