新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > labview串口通訊的深入分析.

labview串口通訊的深入分析.

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
labview稱做"G"語(yǔ)言,只是說(shuō)明了它具備了通用編程語(yǔ)言的編程能力,但是任何編程語(yǔ)言都有器獨(dú)特的特點(diǎn),否則經(jīng)過(guò)幾十年的風(fēng)風(fēng)雨雨,并沒(méi)有出現(xiàn)一種編程語(yǔ)言一統(tǒng)天下的格局,每種編程語(yǔ)言都有其特別適合的領(lǐng)域,從這點(diǎn)來(lái)說(shuō),數(shù)據(jù)采集和儀器通訊可以說(shuō)是它最擅長(zhǎng)的領(lǐng)域.毫無(wú)疑問(wèn),計(jì)算機(jī)的串口通訊是相對(duì)比較簡(jiǎn)單的通訊方式,labview也不例外地對(duì)它提供了支持.

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

本文引用地址:http://m.butianyuan.cn/article/201701/337261.htm

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

2.利用API的WriteFile 函數(shù)實(shí)現(xiàn)串口通訊,這是VC進(jìn)行串口通訊的方法.

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

4.利用LABVIEW特有的VISA通訊


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

通過(guò)C51串口通訊,簡(jiǎn)單地介紹一下這種方法:

/* 發(fā)送數(shù)據(jù)函數(shù) */

void SendData(uchar *buf)

{

uchar i;

uchar len;

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

for(i=0;i

{

SBUF=buf[i]; /* SBUF是串口輸出REG?。?/p>

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

TI=0; /* 復(fù)位中斷標(biāo)志?。?/p>

方法2直接調(diào)用API非常復(fù)雜,在LV不會(huì)采用,就不介紹了.

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

MSComm控件提供下列兩種處理通訊的方式:事件驅(qū)動(dòng)方式和查詢方式。

來(lái)源: http://dev.yesky.com/347/2636847.shtml 

2.1 事件驅(qū)動(dòng)方式

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

 ?。?2 查詢方式

  查詢方式實(shí)質(zhì)上還是事件驅(qū)動(dòng),但在有些情況下,這種方式顯得更為便捷。在程序的每個(gè)關(guān)鍵功能之后,可以通過(guò)檢查 CommEvent 屬性的值來(lái)查詢事件和錯(cuò)誤。如果應(yīng)用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個(gè)簡(jiǎn)單的電話撥號(hào)程序,則沒(méi)有必要對(duì)每接收一個(gè)字符都產(chǎn)生事件,因?yàn)槲ㄒ坏却邮盏淖址钦{(diào)制解調(diào)器的“確定”響應(yīng)。

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

CommPort設(shè)置并返回通訊端口號(hào)。
Settings以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位。
PortOpen設(shè)置并返回通訊端口的狀態(tài)。也可以打開(kāi)和關(guān)閉端口。
Input從接收緩沖區(qū)返回和刪除字符。
Output向傳輸緩沖區(qū)寫一個(gè)字符串。


 下面分別描述:

  CommPort屬性:設(shè)置并返回通訊端口號(hào)。

  語(yǔ)法 object.CommPort[value ] (value 一整型值,說(shuō)明端口號(hào)。)

  說(shuō)明 在設(shè)計(jì)時(shí),value 可以設(shè)置成從 1 到 16 的任何數(shù)(缺省值為 1)。但是如果用 PortOpen 屬性打開(kāi)一個(gè)并不存在的端口時(shí),MSComm 控件會(huì)產(chǎn)生錯(cuò)誤 68(設(shè)備無(wú)效)。

  注意:必須在打開(kāi)端口之前設(shè)置 CommPort 屬性。

  RThreshold 屬性:在 MSComm 控件設(shè)置 CommEvent 屬性為 comEvReceive 并產(chǎn)生 OnComm 之前,設(shè)置并返回的要接收的字符數(shù)。

  語(yǔ)法:object.Rthreshold [ = value ](value 整型表達(dá)式,說(shuō)明在產(chǎn)生 OnComm 事件之前要接收的字符數(shù)。 )

  說(shuō)明:當(dāng)接收字符后,若 Rthreshold 屬性設(shè)置為 0(缺省值)則不產(chǎn)生 OnComm 事件。例如,設(shè)置 Rthreshold 為 1,接收緩沖區(qū)收到每一個(gè)字符都會(huì)使 MSComm 控件產(chǎn)生 OnComm 事件。

  CTSHolding 屬性:確定是否可通過(guò)查詢 Clear To Send (CTS) 線的狀態(tài)發(fā)送數(shù)據(jù)。Clear To Send 是調(diào)制解調(diào)器發(fā)送到相聯(lián)計(jì)算機(jī)的信號(hào),指示傳輸可以進(jìn)行。該屬性在設(shè)計(jì)時(shí)無(wú)效,在運(yùn)行時(shí)為只讀。

  語(yǔ)法: object.CTSHolding(Boolean)

  Mscomm 控件的 CTSHolding 屬性設(shè)置值:

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

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

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

  詳細(xì)信息 有關(guān)握手協(xié)議,請(qǐng)參閱 Handshaking 屬性。

  SThreshold 屬性: MSComm 控件設(shè)置 CommEvent 屬性為 comEvSend 并產(chǎn)生 OnComm 事件之前,設(shè)置并返回傳輸緩沖區(qū)中允許的最小字符數(shù)。

  語(yǔ)法 object.SThreshold [ = value ]

  value 整形表達(dá)式,代表在 OnComm 事件產(chǎn)生之前在傳輸緩沖區(qū)中的最小字符數(shù)。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: labview串口通

評(píng)論


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

關(guān)閉