ESP8266 RTOS cJson生成json輸出時不支持浮點數,原因printf sprintf snprintf(newlib nano)不支持浮點


cjson輸出文本時遇到數字和浮點數就無法輸出,直接截斷:

例子: {"cmdType":2,"productId":"OST","deviceName":"dev_01","protoVersion":"2.0"}
生成Json時有用到 cJSON_AddNumberToObject就不正常,無法輸出數字。
錯誤: {"cmdType":
 
同樣代碼在PC上正常,在嵌入系統不正常。
 
原因:嵌入系統為了節省RAM和Flash占用,采用的時NewLib nano,不是完整功能的庫,不支持浮點數。
 

 ESP8266 RTOS SDK  3.4解決辦法:

make menuconfig -> Component config ---> Newlib -->[ ] Enable 'nano' formatting options for printf/scanf family  取消此項選擇

重新編譯后printf sprintf snprintf浮點數輸出正常。

 

影響:

RAM占用少量增加,約100字節。

編譯后Bin文件Flash占用增加30K。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM