久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 測試測量 > 設計應用 > labview串口通訊的深入分析.

labview串口通訊的深入分析.

作者: 時間:2017-01-09 來源:網絡 收藏
labview稱做"G"語言,只是說明了它具備了通用編程語言的編程能力,但是任何編程語言都有器獨特的特點,否則經過幾十年的風風雨雨,并沒有出現一種編程語言一統天下的格局,每種編程語言都有其特別適合的領域,從這點來說,數據采集和儀器通訊可以說是它最擅長的領域.毫無疑問,計算機的串口通訊是相對比較簡單的通訊方式,labview也不例外地對它提供了支持.

LABVIEW的串口控制,可以通過多種方法:

本文引用地址:http://cqxgywz.com/article/201701/337261.htm

1.最基本的IN OUT 控制,LABVIEW提供了In port和Out Port兩個基本輸入輸出VI,通過它就可以直接讀寫寄存器,我本人 做的許多并口控制設備就是利用了這兩個節點,在計算機的DOS時代,通過IN OUT指令進行串口通訊是唯一的選擇,現在正在做單片機的朋友都知道,單片機的串口通訊都是通過操作寄存器實現的,對于計算機的COM1,它的端口地址是0X3F8,完全可以通過它來完成串口通訊.

2.利用API的WriteFile 函數實現串口通訊,這是VC進行串口通訊的方法.

3.利用VB提供的MSCOMM控件(這是目前用的最多的,它支持查詢和中斷兩種模式,即可以發送文本型數據(ASCII),由可以發送二進制(BIN,實際是BYTE ARRAY)

4.利用LABVIEW特有的VISA通訊


直接控制寄存器的方法在計算機串口通訊基本看不到了.只有在單片機中還采用這種方式.

通過C51串口通訊,簡單地介紹一下這種方法:

/* 發送數據函數 */

void SendData(uchar *buf)

{

uchar i;

uchar len;

len=strlen(buf); /* 取得字符串長度*/

for(i=0;i

{

SBUF=buf[i]; /* SBUF是串口輸出REG */

while(!TI);/* 等待發送完成 */

TI=0; /* 復位中斷標志 */

方法2直接調用API非常復雜,在LV不會采用,就不介紹了.

方法3是目前用的最多,介紹一下.

MSComm控件提供下列兩種處理通訊的方式:事件驅動方式和查詢方式。

來源: http://dev.yesky.com/347/2636847.shtml 

2.1 事件驅動方式

  事件驅動通訊是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發生時需要得到通知,例如,在串口接收緩沖區中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 線上一個字符到達或一個變化發生時。在這些情況下,可以利用 MSComm 控件的 OnComm 事件捕獲并處理這些通訊事件。OnComm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 CommEvent 屬性。在編程過程中,就可以在OnComm事件處理函數中加入自己的處理代碼。這種方法的優點是程序響應及時,可靠性高。每個MSComm 控件對應著一個串行端口。如果應用程序需要訪問多個串行端口,必須使用多個 MSComm 控件。

  2.2 查詢方式

  查詢方式實質上還是事件驅動,但在有些情況下,這種方式顯得更為便捷。在程序的每個關鍵功能之后,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。如果應用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字符都產生事件,因為唯一等待接收的字符是調制解調器的“確定”響應。

   MSComm 控件有很多重要的屬性,但首先必須熟悉幾個屬性。

CommPort設置并返回通訊端口號。
Settings以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位。
PortOpen設置并返回通訊端口的狀態。也可以打開和關閉端口。
Input從接收緩沖區返回和刪除字符。
Output向傳輸緩沖區寫一個字符串。


 下面分別描述:

  CommPort屬性:設置并返回通訊端口號。

  語法 object.CommPort[value ] (value 一整型值,說明端口號。)

  說明 在設計時,value 可以設置成從 1 到 16 的任何數(缺省值為 1)。但是如果用 PortOpen 屬性打開一個并不存在的端口時,MSComm 控件會產生錯誤 68(設備無效)。

  注意:必須在打開端口之前設置 CommPort 屬性。

  RThreshold 屬性:在 MSComm 控件設置 CommEvent 屬性為 comEvReceive 并產生 OnComm 之前,設置并返回的要接收的字符數。

  語法:object.Rthreshold [ = value ](value 整型表達式,說明在產生 OnComm 事件之前要接收的字符數。 )

  說明:當接收字符后,若 Rthreshold 屬性設置為 0(缺省值)則不產生 OnComm 事件。例如,設置 Rthreshold 為 1,接收緩沖區收到每一個字符都會使 MSComm 控件產生 OnComm 事件。

  CTSHolding 屬性:確定是否可通過查詢 Clear To Send (CTS) 線的狀態發送數據。Clear To Send 是調制解調器發送到相聯計算機的信號,指示傳輸可以進行。該屬性在設計時無效,在運行時為只讀。

  語法: object.CTSHolding(Boolean)

  Mscomm 控件的 CTSHolding 屬性設置值:

  True Clear To Send 線為高電平。
  False Clear To Send 線為低電平。

  說明:如果 Clear To Send 線為低電平 (CTSHolding = False) 并且超時時,MSComm 控件設置 CommEvent 屬性為 comEventCTSTO (Clear To Send Timeout) 并產生 OnComm 事件。

  Clear To Send 線用于 RTS/CTS (Request To Send/Clear To Send)硬件握手。如果需要確定 Clear To Send 線的狀態,CTSHolding 屬性給出一種手工查詢的方法。

  詳細信息 有關握手協議,請參閱 Handshaking 屬性。

  SThreshold 屬性: MSComm 控件設置 CommEvent 屬性為 comEvSend 并產生 OnComm 事件之前,設置并返回傳輸緩沖區中允許的最小字符數。

  語法 object.SThreshold [ = value ]

  value 整形表達式,代表在 OnComm 事件產生之前在傳輸緩沖區中的最小字符數。


上一頁 1 2 3 下一頁

關鍵詞: labview串口通

評論


技術專區

關閉