labview 串口通訊的分析#優(yōu)質(zhì)參考_第1頁
labview 串口通訊的分析#優(yōu)質(zhì)參考_第2頁
labview 串口通訊的分析#優(yōu)質(zhì)參考_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余8頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、關(guān)鍵詞:labview 串口通信學(xué)習(xí)labview有一段時間了,發(fā)現(xiàn)了其中功能的強(qiáng)大和編程的簡潔性,高效性現(xiàn)在初步實現(xiàn)了串口的通信,把其中的體會和實現(xiàn)過程寫出來,權(quán)當(dāng)拋磚引玉其中的串口采用的是Rs-232,D型口,共九跟針,其中能用的就是三跟針腳,2,3,5,一個是發(fā)送一個是接受,一個是接地,如果做一個串口線延長線的話,只需連接這三根針腳即可,就是2連3,3連2,5連5。在labview中采用的visa,首先是進(jìn)行串口設(shè)置,設(shè)置串口號,波特率,在這里面只要設(shè)置這兩個就可以了,其余的采用默認(rèn),其中特別注意的是要安裝visa驅(qū)動包,只有安裝了這個驅(qū)動包,你的串口才可以選擇,一般現(xiàn)在的電腦上只有一個

2、串口,那么為了調(diào)試方便,這里有兩個工具可以推薦,一個叫做串口虛擬軟件,我用的是VSPD XP 5,就是一個虛擬串口的軟件,讓你的電腦能夠多虛擬兩個串口,你要設(shè)置成讓他們互聯(lián),另一個就是串口調(diào)試工具,叫sscom32.exe,用來調(diào)試串口通信的,可以驗證通信時候成功。visa驅(qū)動包在ni網(wǎng)站上有,具體什么地址你可以到搜索一下.再就是visa read 作用是從串口讀取數(shù)據(jù),這里面有個read buffer ,從串口讀取的數(shù)據(jù)visa write向串口寫入數(shù)據(jù)或者是命令還有visa close 結(jié)束串口讀取數(shù)據(jù),目的是讀完數(shù)據(jù)后,釋放串口資源我的例子前面板圖程序圖labview串口通訊的深入分析收

3、藏labview稱做G語言,只是說明了它具備了通用編程語言的編程能力,但是任何編程語言都有器獨(dú)特的特點(diǎn),否則經(jīng)過幾十年的風(fēng)風(fēng)雨雨,并沒有出現(xiàn)一種編程語言一統(tǒng)天下的格局,每種編程語言都有其特別適合的領(lǐng)域,從這點(diǎn)來說,數(shù)據(jù)采集和儀器通訊可以說是它最擅長的領(lǐng)域.毫無疑問,計算機(jī)的串口通訊是相對比較簡單的通訊方式,labview也不例外地對它提供了支持.LABVIEW的串口控制,可以通過多種方法:1.最基本的IN OUT 控制,LABVIEW提供了In port和Out Port兩個基本輸入輸出VI,通過它就可以直接讀寫寄存器,我本人 做的許多并口控制設(shè)備就是利用了這兩個節(jié)點(diǎn),在計算機(jī)的DOS時代,通

4、過IN OUT指令進(jìn)行串口通訊是唯一的選擇,現(xiàn)在正在做單片機(jī)的朋友都知道,單片機(jī)的串口通訊都是通過操作寄存器實現(xiàn)的,對于計算機(jī)的COM1,它的端口地址是0X3F8,完全可以通過它來完成串口通訊.2.利用API的WriteFile 函數(shù)實現(xiàn)串口通訊,這是VC進(jìn)行串口通訊的方法.3.利用VB提供的MSCOMM控件(這是目前用的最多的,它支持查詢和中斷兩種模式,即可以發(fā)送文本型數(shù)據(jù)(ASCII),由可以發(fā)送二進(jìn)制(BIN,實際是BYTE ARRAY)4.利用LABVIEW特有的VISA通訊直接控制寄存器的方法在計算機(jī)串口通訊基本看不到了.只有在單片機(jī)中還采用這種方式.通過C51串口通訊,簡單地介紹一

5、下這種方法:/* 發(fā)送數(shù)據(jù)函數(shù)void SendData(uchar *buf)uchar i;uchar len;len=strlen(buf); /* 取得字符串長度for(i=0;iSBUF=bufi; /* SBUF是串口輸出while(!TI);/* 等待發(fā)送完成TI=0; /* 復(fù)位中斷標(biāo)志方法直接調(diào)用非常復(fù)雜,在不會采用,就不介紹了方法是目前用的最多,介紹一下MSComm控件提供下列兩種處理通訊的方式:事件驅(qū)動方式和查詢方式。來源:/347/2636847.shtml.1 事件驅(qū)動方式事件驅(qū)動通訊是處理串行端口交互作用的一種非常有效的方法。在

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

7、m 控件。.2 查詢方式查詢方式實質(zhì)上還是事件驅(qū)動,但在有些情況下,這種方式顯得更為便捷。在程序的每個關(guān)鍵功能之后,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。如果應(yīng)用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字符都產(chǎn)生事件,因為唯一等待接收的字符是調(diào)制解調(diào)器的“確定”響應(yīng)。MSComm 控件有很多重要的屬性,但首先必須熟悉幾個屬性。CommPort設(shè)置并返回通訊端口號。Settings以字符串的形式設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位。PortOpen設(shè)置并返回通訊端口的狀態(tài)。也可以打開和關(guān)閉端口。Inp

8、ut從接收緩沖區(qū)返回和刪除字符。Output向傳輸緩沖區(qū)寫一個字符串。下面分別描述:CommPort屬性:設(shè)置并返回通訊端口號。語法 object.CommPortvalue (value 一整型值,說明端口號。)說明 在設(shè)計時,value 可以設(shè)置成從 1 到 16 的任何數(shù)(缺省值為 1)。但是如果用 PortOpen 屬性打開一個并不存在的端口時,MSComm 控件會產(chǎn)生錯誤 68(設(shè)備無效)。注意:必須在打開端口之前設(shè)置 CommPort 屬性。RThreshold 屬性:在 MSComm 控件設(shè)置 CommEvent 屬性為 comEvReceive 并產(chǎn)生 OnComm 之前,設(shè)置

9、并返回的要接收的字符數(shù)。語法:object.Rthreshold = value (value 整型表達(dá)式,說明在產(chǎn)生 OnComm 事件之前要接收的字符數(shù)。 )說明:當(dāng)接收字符后,若 Rthreshold 屬性設(shè)置為 0(缺省值)則不產(chǎn)生 OnComm 事件。例如,設(shè)置 Rthreshold 為 1,接收緩沖區(qū)收到每一個字符都會使 MSComm 控件產(chǎn)生 OnComm 事件。CTSHolding 屬性:確定是否可通過查詢 Clear To Send (CTS) 線的狀態(tài)發(fā)送數(shù)據(jù)。Clear To Send 是調(diào)制解調(diào)器發(fā)送到相聯(lián)計算機(jī)的信號,指示傳輸可以進(jìn)行。該屬性在設(shè)計時無效,在運(yùn)行時為只

10、讀。語法: object.CTSHolding(Boolean)Mscomm 控件的 CTSHolding 屬性設(shè)置值:True Clear To Send 線為高電平。False Clear To Send 線為低電平。說明:如果 Clear To Send 線為低電平 (CTSHolding = False) 并且超時時,MSComm 控件設(shè)置 CommEvent 屬性為 comEventCTSTO (Clear To Send Timeout) 并產(chǎn)生 OnComm 事件。Clear To Send 線用于 RTS/CTS (Request To Send/Clear To Send)硬

11、件握手。如果需要確定 Clear To Send 線的狀態(tài),CTSHolding 屬性給出一種手工查詢的方法。詳細(xì)信息 有關(guān)握手協(xié)議,請參閱 Handshaking 屬性。SThreshold 屬性: MSComm 控件設(shè)置 CommEvent 屬性為 comEvSend 并產(chǎn)生 OnComm 事件之前,設(shè)置并返回傳輸緩沖區(qū)中允許的最小字符數(shù)。語法 object.SThreshold = value value 整形表達(dá)式,代表在 OnComm 事件產(chǎn)生之前在傳輸緩沖區(qū)中的最小字符數(shù)。說明:若設(shè)置 Sthreshold 屬性為 0(缺省值),數(shù)據(jù)傳輸事件不會產(chǎn)生 OnComm 事件。若設(shè)置 S

12、threshold 屬性為 1,當(dāng)傳輸緩沖區(qū)完全空時,MSComm 控件產(chǎn)生 OnComm 事件。如果在傳輸緩沖區(qū)中的字符數(shù)小于 value,CommEvent 屬性設(shè)置為 comEvSend,并產(chǎn)生 OnComm 事件。comEvSend 事件僅當(dāng)字符數(shù)與 Sthreshold 交叉時被激活一次。例如,如果 Sthreshold 等于 5,僅當(dāng)在輸出隊列中字符數(shù)從 5 降到 4 時,comEvSend 才發(fā)生。如果在輸出隊列中從沒有比 Sthreshold 多的字符,comEvSend 事件將絕不會發(fā)生。Handshake 常數(shù)常數(shù)值描述comNone0無握手。comXonXoff1XOn/

13、Xoff 握手。comRTS2Request-to-send/clear-to-send 握手。comRTSXOnXOff3Request-to-send 和 clear-to-send 握手皆可。OnComm 常數(shù)常數(shù)值描述comEvSend1發(fā)送事件。comEvReceive2接收事件。comEvCTS3clear-to-send 線變化。comEvDSR4data-set ready 線變化。comEvCD5carrier detect 線變化。comEvRing6振鈴檢測。comEvEOF7文件結(jié)束。Error 常數(shù)常數(shù)值描述comEventBreak1001接收到中斷信號comEve

14、ntCTSTO1002Clear-to-send 超時comEventDSRTO1003Data-set ready 超時comEventFrame1004幀錯誤comEventOverrun1006端口超速comEventCDTO1007Carrier detect 超時comEventRxOver1008接收緩沖區(qū)溢出comEventRxParity1009Parity 錯誤comEventTxFull1010傳輸緩沖區(qū)滿comEventDCB1011檢索端口 設(shè)備控制塊 (DCB) 時的意外錯誤InputMode 常數(shù)常數(shù)值描述comInputModeText0 (缺?。┩ㄟ^ Input

15、 屬性以文本方式取回數(shù)據(jù)。comInputModeBinary1通過 Input 屬性以二進(jìn)制方式檢取回數(shù)據(jù)。CDHolding 屬性:通過查詢 Carrier Detect (CD) 線的狀態(tài)確定當(dāng)前是否有傳輸。Carrier Detect 是從調(diào)制解調(diào)器發(fā)送到相聯(lián)計算機(jī)的一個信號,指示調(diào)制解調(diào)器正在聯(lián)機(jī)。該屬性在設(shè)計時無效,在運(yùn)行時為只讀。語法 object.CDHolding設(shè)置值:CDHolding 屬性的設(shè)置值為:設(shè)置描述TrueCarrier Detect 線為高電平FalseCarrier Detect 線為低電平說明:注意當(dāng) Carrier Detect 線為高電平 (CDHo

16、lding = True) 且超時時,MSComm 控件設(shè)置CommEvent 屬性為 comEventCDTO(Carrier Detect 超時錯誤),并產(chǎn)生 OnComm 事件。注意 在主機(jī)應(yīng)用程序中捕獲一個丟失的傳輸是特別重要的,例如一個公告板,因為呼叫者可以隨時掛起(放棄傳輸)。Carrier Detect 也被稱為 Receive Line Signal Detect (RLSD)。數(shù)據(jù)類型:BooleanDSRHolding 屬性:確定 Data Set Ready (DSR) 線的狀態(tài)。Data Set Ready 信號由調(diào)制解調(diào)器發(fā)送到相連計算機(jī),指示作好操作準(zhǔn)備。該屬性在設(shè)

17、計時無效,在運(yùn)行時為只讀。語法:object.DSRHoldingobject 所在處表示對象表達(dá)式,其值是“應(yīng)用于”列表中的對象。DSRHolding 屬性返回以下值:值描述說明TrueData Set Ready 線高當(dāng) Data Set Ready 線為高電平 (DSRHolding = True) 且超時時,MSComm 控件設(shè)置 CommEvent 屬性為 comEventDSRTO(數(shù)據(jù)準(zhǔn)備超時)并產(chǎn)生 OnComm 事件。當(dāng)為 Data Terminal Equipment (DTE) 機(jī)器寫 Data Set Ready/Data Terminal Ready 握手例程時該屬性

18、是十分有用的。數(shù)據(jù)類型:BooleanFalseData Set Ready 線低Settings 屬性: 設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位參數(shù)。語法: object.Settings = value說明:當(dāng)端口打開時,如果 value 非法,則 MSComm 控件產(chǎn)生錯誤 380(非法屬性值)。Value 由四個設(shè)置值組成,有如下的格式:BBBB,P,D,SBBBB 為波特率,P 為奇偶校驗,D 為數(shù)據(jù)位數(shù),S 為停止位數(shù)。value 的缺省值是:9600,N,8,1InputLen 屬性:設(shè)置并返回 Input 屬性從接收緩沖區(qū)讀取的字符數(shù)。語法 object.InputLen

19、= valueInputLen 屬性語法包括下列部分:value 整型表達(dá)式,說明 Input 屬性從接收緩沖區(qū)中讀取的字符數(shù)。說明:InputLen 屬性的缺省值是 0。設(shè)置 InputLen 為 0 時,使用 Input 將使 MSComm 控件讀取接收緩沖區(qū)中全部的內(nèi)容。若接收緩沖區(qū)中 InputLen 字符無效,Input 屬性返回一個零長度字符串 ()。在使用 Input 前,用戶可以選擇檢查 InBufferCount 屬性來確定緩沖區(qū)中是否已有需要數(shù)目的字符。該屬性在從輸出格式為定長數(shù)據(jù)的機(jī)器讀取數(shù)據(jù)時非常有用。EOFEnable 屬性:確定在輸入過程中 MSComm 控件是否尋

20、找文件結(jié)尾 (EOF) 字符。如果找到 EOF 字符,將停止輸入并激活 OnComm 事件,此時 CommEvent 屬性設(shè)置為 comEvEOF,語法:object.EOFEnable = value EOFEnable 屬性語法包括下列部分:value 布爾表達(dá)式,確定當(dāng)找到 EOF 字符時,OnComm 事件是否被激活,如“設(shè)置值”中所描述。value 的設(shè)置值:True 當(dāng) EOF 字符找到時 OnComm 事件被激活。False (缺?。┊?dāng) EOF 字符找到時 OnComm 事件不被激活。說明:當(dāng) EOFEnable 屬性設(shè)置為 False,OnComm 控件將不在輸入流中尋找 EO

21、F 字符。3.錯誤消息(MS Comm 控件)下表列出 MSComm 控件可以捕獲的錯誤:值描述380無效屬性值 comInvalidPropertyValue383屬性為只讀 comSetNotSupported394屬性為只讀 comGetNotSupported8000端口打開時操作不合法 comPortOpen8001超時值必須大于 08002無效端口號 comPortInvalid8003屬性只在運(yùn)行時有效8004屬性在運(yùn)行時為只讀8005端口已經(jīng)打開 comPortAlreadyOpen8006設(shè)備標(biāo)識符無效或不支持該標(biāo)識符8007不支持設(shè)備的波特率8008指定的字節(jié)大小無效8009缺省參數(shù)錯誤8010硬件不可用(被其它設(shè)備鎖定)8011函數(shù)不能分配隊列8012設(shè)備沒有打開 comNoOpen8013設(shè)備已經(jīng)打開8014不能使用 comm 通知8015不能設(shè)置 comm 狀態(tài) comSetCommStateFailed8016不能設(shè)置 comm 事件屏蔽8018僅當(dāng)端口打開時操作才有效 comPortNotOpen8019設(shè)備忙8020讀 comm 設(shè)備錯誤 comReadError8021為該端口檢索設(shè)備控制塊時的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論