新聞中心

EEPW首頁 > 測試測量 > 設計應用 > LabVIEW串口的編程-使用LabVIEW系統(tǒng)VI

LabVIEW串口的編程-使用LabVIEW系統(tǒng)VI

作者: 時間:2017-01-09 來源:網絡 收藏
第一部分使用LabVIEW系統(tǒng)VI


一、串口VI介紹
LabVIEW的串口通訊VI位于Instrument I/O Platte的Serial中,包括:

本文引用地址:http://m.butianyuan.cn/article/201701/337151.htm
VI名稱VI功能
VISA Configure Serial Port初始化VISA resource name指定的串口通訊參數
VISA Write將輸出緩沖區(qū)中的數據發(fā)送到VISA resource name指定的串口
VISA Read將VISA resource name指定的串口接收緩沖區(qū)中的數據讀取指定字節(jié)數的數據到計算機內存中
VISA Serial Break向VISA resource name指定的串口發(fā)送一個暫停信號
VISA Bytes at Serial Port查詢VISA resource name指定的串口接收緩沖區(qū)中的數據字節(jié)數
VISA Close結束與VISA resource name指定的串口資源之間的會話
VISA Set I/O Buffer Size設置VISA resource name指定的串口的輸入輸出緩沖區(qū)大小
VISA Flush I/O Buffer清空VISA resource name指定的串口的輸入輸出緩沖區(qū)

二、使用說明
在LabVIEW環(huán)境中使用串口與在其它開發(fā)環(huán)境中開發(fā)過程類似,基本的流程框圖如下。

圖1、串口操作數據流圖

首先需要調用VISA Configure Serial Port完成串口參數的設置,包括串口資源分配、波特率、數據位、停止位、校驗位和流控等等。

圖2、初始化串口

如果初始化沒有問題,就可以使用這個串口進行數據收發(fā)。發(fā)送數據使用VISA Write,接收數據使用VISA Read。在接收數據之前需要使用VISA Bytes at Serial Port查詢當前串口接收緩沖區(qū)中的數據字節(jié)數,如果VISA Read要讀取的字節(jié)數大于緩沖區(qū)中的數據字節(jié)數,VISA Read操作將一直等待,直至Timeout或者緩沖區(qū)中的數據字節(jié)數達到要求的字節(jié)數。當然也可以分批讀取接收緩沖區(qū)或者只從中讀取一定字節(jié)的數據。

圖3、從串口發(fā)送數據 圖4、從串口接收數據

在某些特殊情況下,需要設置串口接收/發(fā)送緩沖區(qū)的大小,此時可以使用VISA Set I/O Buffer Size;而使用VISA Flush I/O Buffer則可以清空接收與發(fā)送緩沖區(qū)。在串口使用結束后,使用VISA Close結束與VISA resource name指定的串口之間的會話。

圖5、設置緩沖區(qū)大小圖6、 清空緩沖區(qū)圖7、結束會話/線程

具體的例子可以參考:examplesinstrsmplserl.llb。

第二部分使用MSCOMM控件
在LabVIEW中使用MSCOMM控件,與在VC、VB中使用一樣。同樣可以使用中斷方式進行接收。

圖8、使用控件的串口收發(fā)程序

圖9、程序數據流圖

首先通過LabVIEW的工具菜單“Tools >> Advanced >> Import ActiveX Controls”將Microsoft的串口控件-“Microsoft Communications Control,version 6.0”添加到LabVIEW環(huán)境中,存放在缺省路徑即可,這樣在User Controls Palette里面可以找到這個控件。

圖10、添加ActiveX控件菜單

圖11、選擇添加用戶控件

圖12、用戶控件
將串口控件放置在Front Panel上,在框圖程序中用控件屬性對其進行編程,實現所需要的功能。
注意:一個串口資源要有一個MSCOMM控件與之相對應。[page]

第三部分 注意事項
一、串口通訊的波特率設置要精確,比如要求9600的波特率,則晶振應選擇11.0593MHz或其倍數。

二、由于通常情況下LabVIEW串口VI接收或發(fā)送的都是字符串(Normal),所以如果需要發(fā)送或接收十六進制數值(Hex),請在發(fā)送或接收之前進行必要的轉換。

2.1、數值型數據的處理方法:

  1. 如果這些數據是靜態(tài)的,也就說在程序設計階段要傳輸的數據就已經確定了,在這種情況下,首先設置VISA Write的write buffer的顯示屬性為Hex Display,然后直接輸入要發(fā)送的16進制字符串就可以了。串口設備的控制命令通常是由一個或多個16進制字符組成的,當我們需要對其進行控制時經常會采用這種方法發(fā)送控制命令。
  2. 數據是動態(tài)的;即要傳輸的數值型數據是動態(tài)產生和變化的,在發(fā)送之前首先要將其轉換成對應的16進制字符串,才能賦給VISA Write發(fā)送。將這些數據構成一個數組,用Byte Array To String進行轉換,轉換的結果就是對應數組數值的字符串,可以提交VISA Write發(fā)送?;蛘呤褂肨ype Cast也可以實現同樣的功能。


圖13、串口數據轉換界面

圖14、 串口數據轉換數據流圖

圖15、操作界面

圖16、單片機C程序

2.2、字符串型數據的處理方法:
我們在處理過程當中,傳輸的數據可能具有一定格式或協議,比如一個完整的數據幀包括起始段、數據段、校驗段等等,而每一段往往又有幾個部分組成,這幾個部分的類型和長度可能又不盡相同,可能是數值型的,可能是字符型的,也可能是布爾型的,單字節(jié)或者是多字節(jié)。此時我們往往都采用統(tǒng)一的字符形式來處理這些數據,因此有時候我們說,字符是LabVIEW里最方便的數據類型。

經過打包的字符數據要經過串口發(fā)送需要進行必要的轉換,否則傳輸將出錯。比如我們打包過后需要發(fā)送的的字符串為:34 12 56 78 94(空格為了區(qū)分),如果直接將其賦給VISA Write發(fā)送,串口上的數據將是:33 34 31 32 35 36 37 38 39 34。正確的轉換程序如下。

圖17、字符型數據處理

數據接收:
從計算機串口接收到的數據是16進制的ASCII碼,要轉換成對應的數值型數據,可以使用String To Byte Array或者Type Cast。

三、LabVIEW串口VI不能使用中斷方式傳輸。



關鍵詞: LabVIEW串口編

評論


技術專區(qū)

關閉