標(biāo)題:
串口觸摸屏一般只接受字符串指令,那變化的數(shù)值怎么顯示?
[打印本頁(yè)]
作者:
yonko
時(shí)間:
2021-1-10 11:42
標(biāo)題:
串口觸摸屏一般只接受字符串指令,那變化的數(shù)值怎么顯示?
1,串口觸摸屏存在的問(wèn)題
串口觸摸屏,一般就是用串口指令控制觸摸屏的顯示,指令的形式一般是字符串,不容易變化。那么,假如想在觸屏上顯示變化的參數(shù)怎么辦?例如是采集到的儀表的變化的數(shù)值等。
2,怎么解決
先從串口數(shù)據(jù)的格式說(shuō)起,實(shí)際來(lái)說(shuō)字符串也是由一個(gè)個(gè)字符組成的,在發(fā)送的時(shí)候一個(gè)一個(gè)發(fā)送字符到串口,按照一定的形式編碼成字符串。
假如想要在觸屏上的某個(gè)文本控件t1上顯示溫度數(shù)據(jù),舉個(gè)例子,假如指令的格式是:t1.txt=”溫度:123℃”,那么其實(shí)首尾的“t1.txt=”溫度:”和“℃””是固定的,我們可以繼續(xù)用字符串形式發(fā)送,只有中間的“123”這個(gè)實(shí)際的溫度值是變化的,需要做一下處理。
一個(gè)思路是這樣的:串口分段發(fā)送指令字符串,分為:指令頭、變量部分、指令尾。其中變量部分需要將變量的每一位提取出來(lái),轉(zhuǎn)換為字符,并按照順序存入數(shù)組中,然后逐位發(fā)送到串口。一般先發(fā)送的那一位會(huì)先顯示在文本控件的最左邊。流程如下:
1.png
(69.5 KB, 下載次數(shù): 48)
下載附件
2021-1-10 11:42 上傳
根據(jù)上面的例子用一個(gè)半完整的實(shí)操具體說(shuō)說(shuō):
定義一個(gè)溫度變量,例如unsigned int temp;
定義一個(gè)用于顯示的字符數(shù)組,例如我們只想顯示3位數(shù)據(jù),那就定義為unsigned char dis[3];
將溫度變量的每一位存入顯示數(shù)組:
dis[2]=(temp/100)%10+’0’;//將溫度變量temp的百位存入數(shù)組的dis[2]
dis[1]=(temp/10)%10+’0’; //將溫度變量temp的十位存入數(shù)組的dis[1]
dis[0]=(temp/1)%10+’0’; //將溫度變量temp的個(gè)位存入數(shù)組的dis[0]
注:最后的“+’0’”是將實(shí)際的數(shù)據(jù)位轉(zhuǎn)換為ASCII碼,因?yàn)橛|屏不是只能識(shí)別字符串嗎,那么英文和數(shù)字一般都需要轉(zhuǎn)換為ASCII碼的。
用幾條串口發(fā)送語(yǔ)句進(jìn)行分別發(fā)送:
(1) 先發(fā)送指令字符串的頭部:“t1.txt=”溫度:”;
(2) 再用單字節(jié)語(yǔ)句發(fā)送溫度變量部分,先高位后低位:依次為先dis[2]、dis[1]、dis[0];
(3) 再發(fā)送單位的字符串:“℃””;
最后發(fā)送結(jié)束符。
一般這樣處理之后,溫度變量temp是根據(jù)儀表的信號(hào)隨時(shí)變化的,字符數(shù)組dis[]緊接著根據(jù)temp的變化而改變。雖然是分為了幾條發(fā)送語(yǔ)句進(jìn)行的,但是最終另外的設(shè)備從串口接收到的數(shù)據(jù)與用一條語(yǔ)句發(fā)送的結(jié)果是一樣的。
這樣一來(lái),就能順利地將變量嵌入到字符串指令之中,實(shí)現(xiàn)觸屏的變量顯示。
當(dāng)然,方法千萬(wàn)種,這只是其中一個(gè)方法,可能不是最優(yōu),但是比較簡(jiǎn)單。本文也不是什么高深的技術(shù),一點(diǎn)分享而已,希望有幫助。
全文完,但是分享并沒(méi)有結(jié)束。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1