串列埠屬性設定 Labview串列埠資源浪費解析

2021-10-14 18:25:28 字數 1308 閱讀 6345

什麼是串列埠:

序列介面是指資料一位一位地順序傳送,其特點是通訊線路簡單,只要一對傳輸線就可以實現雙向通訊,從而大大降低了成本,特別適用於遠距離通訊,但傳送速度比較慢。而一條資訊的各位資料被逐位按順序傳送的通訊方式稱為序列通訊介面,序列通訊介面的特點是:資料位的傳送,按位順序進行,最少只需一根傳輸線即可完成,成本低但傳送速度慢。

我們使用串列埠通訊時候通常使用visa,由於在visa第三方資源問題,labview連續不斷地查詢串列埠直到串列埠接收到資料為止。這增加了處理器和資源占用,導致程式彙總其他迴圈不能流暢地執行。我們應該如何防止labview連續不斷地查詢串列埠呢?

可以通過visa事件程式設計來解決,通過visaenableevent這個vi來解決,當串列埠接收到字串的時候,visa會產生乙個事件,在while迴圈中,我們可以在visa read 函式只有在埠上有資料的時候才會被執行。通過制定待讀取的字這些函式可以在labview函式選版中找到。

通過visa配置串列埠vi配置串列埠。然後通過visa啟用事件和visa放棄事件函式配置serial-break事件。在while迴圈中使用visa等待事件函式等待事件發生。 

事件處理選板上的vi和函式用於處理visa事件。如需處理visa事件,必須對visa啟用事件函式啟用事件佇列機制。佇列與單個會話和事件型別對應,所以必須對處理事件的每個會話啟用佇列機制。

通過visa等待事件函式可以從佇列中獲取事件。如發生了指定型別的事件,都將立即呼叫「visa等待事件」返回事件,與超時引數的值無關。

還可通過「visa等待事件」等待當前不在佇列中的事件。「visa等待事件」函式將在超時或要等待的事件到達後停止執行。應當為當前不在佇列中的事件設定合理的等待時間

visa等待事件」函式返回乙個事件時,呼叫等待操作的會話控制代碼所在的事件佇列中將不再包含返回的事件。但是,如其它visa會話中已經啟用事件佇列,事件將停留在佇列中直至它被提取出來。

通過visa禁用事件函式可禁用某個visa會話的事件佇列。呼叫該函式時,會話的佇列中將不會加入其它事件。佇列中將保留已有的事件。使用者可以決定提取或放棄這些事件。通過「visa等待事件」函式可獲取所需事件。通過visa放棄事件函式可放棄事件。

visa事件佇列的預設長度為50。如佇列已滿而仍有新事件到達,新的事件將被放棄。visa中的事件佇列不會動態增長,但是使用者可以通過general settings:maximum queue length屬性以程式設計方式改變事件佇列的長度。如需更改某個對話的事件佇列長度,必須在呼叫「visa啟用事件」前進行該操作。

Labview串列埠通訊

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

LABVIEW串列埠驅動

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

LABVIEW串列埠通訊基礎

寫這一篇串列埠通訊基礎的契機是最近剛剛完成乙個溫箱的儀器控制程式,labview通過串列埠與溫箱微控制器通訊,我打算將過程中遇到的一些問題和收穫列在這裡方便有需求的比對 尋找答案。學labview時間並不久,這個儀器控制程式也比較簡單,行文中若有錯誤還望指出。labview串列埠通訊基礎 利用lab...