<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > labview串口調(diào)試

          labview串口調(diào)試

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



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

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();