新聞中心

labview串口調(diào)試

作者: 時(shí)間:2017-01-05 來(lái)源:網(wǎng)絡(luò) 收藏
其實(shí)labview傳送的只是二進(jìn)制的數(shù),只是默認(rèn)以ASCII碼顯示而已。除你樓主的方法,還有一種就是利用“字符串到字節(jié)數(shù)組轉(zhuǎn)換工具”,將傳送的數(shù)據(jù)按每8位,保存為一個(gè)數(shù)組元素。再用“索引數(shù)組”索引出需要的二進(jìn)制數(shù)即可。
1.labview對(duì)串口進(jìn)行調(diào)試時(shí),首先需要安裝visa驅(qū)動(dòng),可在NI的官方網(wǎng)站上下載,不過(guò)速度好像不是很快。
2.最簡(jiǎn)模式下進(jìn)行串口程序接收。如圖:
然后在最右邊接一個(gè)字符串接受區(qū)就可以接受到串口發(fā)送的數(shù)據(jù)了。
注意:通過(guò)串口發(fā)送的是ascii碼,因此如果單片機(jī)那邊發(fā)送的是比如0x20之類(lèi)的數(shù)據(jù),那么在接受端你用"Normal"模式將看不到任何東西,因?yàn)镹ormal是以ascii模式查看,而0x20的ascii表示空格,解決的方法為右鍵點(diǎn)擊接受區(qū)(字符串指示器),然后選擇16進(jìn)制模式便可以正常查看。
那如果要在單片機(jī)那么發(fā)送一個(gè)具體的數(shù)字,怎么才能正確的將這個(gè)數(shù)提取出來(lái)呢?這才是難點(diǎn)所在。
有種方法可以解決:在下位機(jī)(發(fā)送端)發(fā)送的就是表示該數(shù)的ascii碼,比如你要發(fā)送12,那么就發(fā)送49,50(ascii比實(shí)際的數(shù)大48),因此在下位機(jī)專(zhuān)門(mén)寫(xiě)個(gè)函數(shù)將欲發(fā)送的數(shù)轉(zhuǎn)換成ascii碼就可以正常發(fā)送了。函數(shù)很簡(jiǎn)單,就是將其拆開(kāi)然后加48。
此方法是專(zhuān)門(mén)用于labview,因?yàn)橐獜慕邮盏降淖址刑崛?shù)字就必須用這種方法,當(dāng)然其他的軟件,比如說(shuō)VB之類(lèi)的在這方面就簡(jiǎn)單一些,因?yàn)樗梢栽谏衔粰C(jī)對(duì)接受到的ascii碼進(jìn)行處理還原。
3.得到字符串后,將有用的信息提取出來(lái):
比如收到如下信息:
b0001b002b0003b0004b0005……
如果字符串是上述固定格式,可以scan from string 函數(shù)直接將數(shù)字提取出來(lái),但我遇到的問(wèn)題是上面的格式在每次發(fā)送的時(shí)候卻不是固定的(串口都這樣)
上述字符串有可能以如下方式收到
001b0002b0003b0004b0005b00……
此時(shí)scan from string 就會(huì)報(bào)錯(cuò),因?yàn)樗l(fā)現(xiàn)第一個(gè)不是字母等等。
經(jīng)過(guò)查找,發(fā)現(xiàn)Search/Split String函數(shù)可以解決這個(gè)問(wèn)題,它可以把格式固定化,
比如我查找的字母為"b",連接輸出端到match + rest of string 那么上述字符串
就會(huì)形成以b開(kāi)頭,然后由剩余的所有字符組成的序列,為
b0002b0003b0004b0005
然后就可以用scan from string 函數(shù)對(duì)上述字符串進(jìn)行處理了。
如 format string為: b%4d ,就提取了b后面4個(gè)整數(shù)。



關(guān)鍵詞: labview串口調(diào)

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉