因?yàn)槿魏螖?shù)據(jù)采集后都希望能做出圖表來,在LabVIEW里寫了一個(gè)串口的程序,無奈輸出的是字符串,而作圖的輸入數(shù)據(jù)必須要是數(shù)值類型,找遍了控件也沒看見將字符串轉(zhuǎn)換成相應(yīng)ASCII碼的控件。于是上網(wǎng)搜索,真是眾說紛紜,很多人說用十六進(jìn)制數(shù)字符串轉(zhuǎn)換成數(shù)值的控件,也有人說用掃描字符串的控件,本人也是初學(xué),發(fā)現(xiàn)這兩種方法并不能實(shí)現(xiàn)我的目標(biāo)。
雖然我的字符串輸入控件選擇的是顯示16進(jìn)制數(shù),但數(shù)據(jù)流實(shí)際上記錄的是該字符串的ASCII碼。所謂將十六進(jìn)制數(shù)字符串轉(zhuǎn)換為數(shù)值,其實(shí)是指正常顯示時(shí)顯示為16進(jìn)制數(shù)。舉個(gè)例子,ASCII碼的0x31,對(duì)應(yīng)于字符“1”,如果輸入0x31即“1”,則用上述控件就會(huì)將該字符串轉(zhuǎn)換為0x01。
而第二個(gè)說法提到的掃描字符串,其實(shí)是將字符串中的數(shù)字提取出來,而并不是得到該字符串的ASCII碼。比如,ab123c,用一定的格式說明就可以把123提取出來,即輸入“ab123c”,可以得到數(shù)字123。這種方法也可以提取浮點(diǎn)數(shù),具體可以參見LabVIEW的幫助文檔。
將字符串轉(zhuǎn)換成相應(yīng)的ASCII碼,我用了挺復(fù)雜的方法,如果有幸被高手看到此文章希望能抽出寶貴的時(shí)間留下更好的方法。因?yàn)槲沂且鰣D,于是每次循環(huán)的時(shí)候我只要字符串的最后一個(gè)字符的ASCII碼,所以我先將該字符分離出來,然后將它轉(zhuǎn)換成字節(jié)數(shù)組,再提取數(shù)組元素,就得到了該字符對(duì)應(yīng)的那個(gè)ASCII碼。具體如下:
第一個(gè)小方框是“字符串”->“字符串長度”
第二個(gè)是“字符串”->“截取字符串”
第三個(gè)小框里有U8的是“字符串”->“字符串/數(shù)組/路徑轉(zhuǎn)換”->“字符串字節(jié)數(shù)組轉(zhuǎn)換”
第四個(gè)是“數(shù)組”->“索引數(shù)組”