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