LabVIEW串列埠程式設計 02 串列埠傳送

2021-10-25 08:52:42 字數 2071 閱讀 8747

先說明一下,跟串列埠相關的函式都位於下圖所示的位置。官方的幫助文件對每個函式有詳細介紹,大家有不懂的地方首先檢視幫助文件,配合搜尋引擎深化理解。

串列埠傳送一次資料過程的可以分為三個步驟:開啟串列埠-->傳送資料-->關閉串列埠。分別對應confugure port,write,close這三個函式。用這三個函式在labview中搭建如下程式

乙個最簡單的串列埠傳送程式已經編寫完畢,接下來用xcom對我們的程式進行驗證。

在傳送緩衝區中填入「你好」,然後執行程式,可以看到在xcom中收到了相同的文字。在執行labview程式前,需要先在xcom軟體中開啟串列埠,這樣才能接收到資料。

測試已經完成,回過頭來看看編寫的程式,看起來最複雜的好像就是「串列埠配置」這個函式了。不過雖然它有好多接線端,這裡只接了乙個,其它接線端不接時會有乙個預設值,沒有特別要求一般都不用修改。一般情況下關注兩個介面即可,即「串列埠資源名稱」跟「波特率」。關於波特率,大家暫時理解為資料的傳送速度就好了,資料的接收方要以跟傳送方相同的速度接收資料才可以接收到正確的資料。可以看到xcom中選擇的波特率是9600,而我們的程式中是沒有設定的,因為labview中預設的波特率就是9600。如果我們要用到其它波特率,就需要對其進行更改,可以通過「建立常量」或「建立輸入控制項」的方式進行更改。如果沒有特別說明,後面的演示中使用的波特率都是9600。

接下來我們增加難度,讓labview傳送0、1、2、3……的數字,每隔1秒傳送一次。對程式做出如下修改:

在原來的程式基礎上新增while迴圈,並加入1000ms等待,讓傳送程式每隔1s執行一次。並且將迴圈次數傳送出去,實現了剛才的需求。這裡要注意串列埠寫入函式接收的資料型別為字串,而迴圈次數為乙個數值,所以用到了「十進位制資料至字串轉換」這個函式,該函式位於字串選板「數值/字串轉化」中。還通過「連線字串」在資料後面追加了回車和換行,讓資料不會連在一起,方便我們檢視。

到這裡我們貌似已經實現了剛才提出的要求,但其實還有一些不妥。我們思考一下,假如房間裡有5個人要出去,順序應該是 開門-->5人依次出去-->關門,而不是 開門-->出去1人-->關門 迴圈5次。發現問題了吧,開啟串列埠、關閉串列埠的操作一直在迴圈執行!這兩個步驟放在迴圈外面就好了,所以正確的程式應該是下面這樣。

好,現在我的需求又變了,我想通過乙個按鍵來控制什麼時候傳送資料,即我可以在文字框輸好內容,然後按下傳送按鍵,資料被傳送出去。

應該怎麼辦呢?我們可以新增乙個事件結構,新增乙個按鍵按下的事件,然後在事件中傳送資料。最終完成的程式如下,測試截圖就不放啦,大家可以自己試一下。

如果需要傳送16進製制的資料,在文字框或字串常量上右鍵將顯示方式改為16進製制顯示即可。

至此,關於串列埠傳送的內容已經講解完畢。大家可以比較一下從傳送你好到按鍵傳送的難易度,其實我們最後面的程式已經實現了類似串列埠助手的部分功能。做東西就是這樣需要循序漸進。

不知大家有沒有發現,我們的程式有乙個特別不好的地方,在執行之前必須先選擇串列埠,否則就會報錯,這個體驗簡直太糟糕了!看看人xcom,開啟之後再選擇串列埠,然後還有按鍵控制串列埠開啟關閉,這才是乙個好用的軟體該有的樣子啊,回頭看看自己的,害!

關於這個問題,在後面的講解中會進行解決。大家也可以自己想辦法解決一下。說到底這其實是乙個體驗感問題,我們做乙個軟體肯定是要提高使用者的體驗感的,類似的這種細節問題有很多,需要多發現多思考,在功能滿足的前提下提高軟體的體驗感,能夠讓使用者更加認可。扯遠了哈哈。

文件**現的測試程式在

下方鏈結

串列埠程式設計 (1)串列埠基本知識

計算機為了弄懂傳給它的序列資料,它需要確定每個字元開始和結束的位置。這通常是用非同步序列資料來完成的。在非同步模式中,除非有字元被傳輸,否則序列資料線總是處於mark 1 狀態。有乙個start位會被加入傳輸字元的各個位之前,在字元本身的位之後會有乙個可選的parity位和乙個或者多個stop位。s...

Labview串列埠通訊

學習labview有一段時間了,發現了其中功能的強大和程式設計的簡潔性,高效性 現在初步實現了串列埠的通訊,把其中的體會和實現過程寫出來,權當拋磚引玉 其中的串列埠採用的是rs 232,d型口,共九跟針,其中能用的就是三跟針腳,2,3,5,乙個是傳送乙個是接受,乙個是接地,如果做乙個串列埠線延長線的...

LABVIEW串列埠驅動

1 解決的問題 資料量大 方法 需要多資料傳送,加大波特率,加大序列資料量。採集時判斷接收的資料,接收的資料需要一定的延時 這個很尷尬,暫時還沒想到辦法。是不是labview有多執行緒?2 判斷輸出資料時怎麼樣在否時不輸出0,因為在資料視窗顯示曲線時會把0顯示出來 未解決 3 曲線計算頻率和週期需要...