最近我在使用at指令發送json字符串時遇到了一些問題。我使用以下代碼發送了一條消息:
AT+CIPSEND=4 { "name": "Tom", "age": 20 }
然而,我發現發送出去的消息不是json格式的,而是被分成了兩個部分發送。我懷疑這是因為at指令默認會按照換行符對輸入的字符串進行分割。于是,我嘗試在json字符串的末尾添加一個換行符。
AT+CIPSEND=4 { "name": "Tom", "age": 20 }\n
結果,我還是得到了和之前一樣的錯誤。接下來,我嘗試了多種方法來解決這個問題,包括嘗試在json字符串中添加轉義字符。
AT+CIPSEND=4 { \"name\": \"Tom\", \"age\": 20 }\n
但還是無法解決問題。我最后決定使用base64編碼方式將json字符串編碼后再進行發送。
char json_string[] = "{ \"name\": \"Tom\", \"age\": 20 }"; char base64_string[128]; base64_encode(json_string, base64_string); AT+CIPSEND=%d, %s\n strlen(base64_string), base64_string
使用以上代碼,我成功地將json字符串發送出去了。雖然這種方式增加了一些代碼和計算量,但保證了json字符串被穩定地發送出去。