有時你以為不會有錯,但是錯誤往往出現(xiàn)在意料之外。 那天,用MCU的串口向觸摸屏發(fā)送漢字字符串,但是在發(fā)送某個字符串的時候想要顯示的東西總是不能在觸屏上正常顯示,發(fā)送另外的字符串卻能正常顯示,這就奇了怪了,那么問題在哪里呢? 故事是這樣的: 原本計劃在觸摸屏上的文本控件上顯示壓力的報警信息。當(dāng)傳感器檢查到壓力異常時用串口向觸屏發(fā)送字符串:壓力過高,于是用KEIL編了一句指令代碼:”sendstring(“t9.txt=\”壓力過高\””);” 不過,酒醉的故事開始了。載入程序測試時,在觸屏上死活不能正常顯示“壓力過高”這個字符串,干脆直接就沒有反應(yīng)。于是就納悶了,代碼檢查了又檢查,并且與其他類似的代碼比對,沒錯誤啊!幾分鐘后,于是決定試試改變一下字符串的內(nèi)容,改為:“sendstring(“t9.txt=\”已選雙發(fā)\””);”,surprise,這個代碼居然能在觸摸屏上的t9文本控件上正常顯示“已選雙發(fā)”這個字符。 同樣的代碼,只是里面的字符串內(nèi)容不同,就有那么大的差異,這可就真的見了鬼了。 于是打開串口助手,倒要看看哪里見了鬼。
1.png (416.82 KB, 下載次數(shù): 43)
下載附件
2020-12-31 20:27 上傳
2.png (466.96 KB, 下載次數(shù): 44)
下載附件
2020-12-31 20:28 上傳
經(jīng)分析,原來在用KEIL進行程序編碼的時候,對漢字字符串的處理出現(xiàn)了BUG,對某些漢字不能正常編碼。經(jīng)過實踐,對ASCII碼的字符串(英文、數(shù)字、符號等)KEIL基本能夠正確處理,但是對于漢字或者其他字符卻不能保證每次都正確,這點需要開發(fā)者注意,在使用的時候避開可能會導(dǎo)致亂碼的漢字字符,另外串口助手是個調(diào)試的好東西。 如果你覺得有幫助,點贊、轉(zhuǎn)發(fā)、贊賞都是非常好的鼓勵,如果有控制器、電路板、儀器、軟件開發(fā)需要可聯(lián)系圖上的方式。
|