在同一個(gè)地方跌倒兩次鞋邑,才能體會(huì)到“好記性不如爛筆頭”荚虚!
一、字符串?dāng)?shù)組→字符串
??最近在做一個(gè)項(xiàng)目速梗,需要使用LabVIEW開(kāi)發(fā)上位機(jī)軟件肮塞,在軟件的流程圖上顯示第三方仿真軟件發(fā)送過(guò)來(lái)的數(shù)據(jù)襟齿,并將下位機(jī)倍福PLC采集的開(kāi)關(guān)量數(shù)據(jù)發(fā)送給第三方仿真軟件,LabVIEW上位機(jī)與第三方仿真軟件之間采用UDP協(xié)議進(jìn)行通信枕赵。
??使用過(guò)LabVIEW進(jìn)行UDP通信的都知道猜欺,LabVIEW的UDP收發(fā)模塊只能發(fā)送和接收字符串,不能發(fā)送數(shù)組或其他類(lèi)型的數(shù)據(jù)拷窜,如果要發(fā)送开皿,就必須將這些類(lèi)型的數(shù)據(jù)轉(zhuǎn)化為字符串。一般我們的數(shù)據(jù)都是保存在數(shù)組中的装黑,我們就來(lái)看看labview中字符串?dāng)?shù)組是如何轉(zhuǎn)化為字符串的副瀑。
1. 既然是數(shù)組,我首先想到的是索引數(shù)組恋谭,將數(shù)組的每一項(xiàng)索引糠睡,然后用字符串連接符將每一項(xiàng)連接起來(lái),就變成了一個(gè)長(zhǎng)字符串疚颊,如下圖:
??但是狈孔,如果我要發(fā)送的數(shù)據(jù)是100個(gè)變量時(shí),也就是說(shuō)字符串?dāng)?shù)組有100個(gè)元素材义,如果也采用數(shù)組索引均抽,那數(shù)組索引這個(gè)模塊豈不是要拉的無(wú)限長(zhǎng)(100個(gè)索引值),LabVIEW不應(yīng)該只有這么無(wú)腦的方法其掂,肯定還有更簡(jiǎn)潔的方法油挥!
2. 后來(lái)不斷嘗試發(fā)現(xiàn)字符串?dāng)?shù)組的索引功能可以用for循環(huán)代替,如下圖:
??那么款熬,LabVIEW是不是還有更簡(jiǎn)單的方法呢深寥?
3. 必然還有更簡(jiǎn)單的方法,既不需要數(shù)組索引贤牛,也不需要for循環(huán)以及移位寄存器惋鹅,實(shí)現(xiàn)如下:
??簡(jiǎn)直是 So Easy!
??需要注意一點(diǎn)的就是殉簸,默認(rèn)的連接字符串模塊是有兩個(gè)輸入節(jié)點(diǎn)的闰集,鼠標(biāo)上移將2個(gè)輸入節(jié)點(diǎn)縮成一個(gè)就可以使用了。
二般卑、字符串→字符串?dāng)?shù)組
??既然字符串?dāng)?shù)組可以轉(zhuǎn)換成字符串武鲁,那字符串能不能分解成字符串?dāng)?shù)組呢?
??LabVIEW必然可以膀鸺臁洞坑!主要有兩種方法,區(qū)別就在于蝇率,分解成的字符串?dāng)?shù)組中的每一元素占多少個(gè)字節(jié)迟杂。
1. 當(dāng)分解成的每個(gè)數(shù)組元素只占一個(gè)字節(jié)比如16進(jìn)制字符串01刽沾、英文單詞等,實(shí)現(xiàn)方法如下:
2. 當(dāng)分解成的每個(gè)數(shù)組元素占多個(gè)字節(jié)排拷,比如表示浮點(diǎn)數(shù)的4字節(jié)16進(jìn)制字符串或者占2個(gè)字節(jié)的中文漢字侧漓,實(shí)現(xiàn)方法如下:
??如果不想使用while循環(huán),使用for循環(huán)也可以實(shí)現(xiàn)监氢,如下:
??這樣布蔗,就可以通過(guò)改變刪除數(shù)組元素模塊的長(zhǎng)度參數(shù),來(lái)獲取任意字節(jié)數(shù)的字符串?dāng)?shù)組浪腐。
3. 對(duì)于純英文字符串纵揍,還有如下簡(jiǎn)易方法:
??這個(gè)程序中需要注意一點(diǎn)就是,最上方的分隔符參數(shù)里需要敲入一個(gè)空格符议街。