用VisualBasic的Communications控件實(shí)現(xiàn)串行通信_(tái)第1頁(yè)
用VisualBasic的Communications控件實(shí)現(xiàn)串行通信_(tái)第2頁(yè)
用VisualBasic的Communications控件實(shí)現(xiàn)串行通信_(tái)第3頁(yè)
用VisualBasic的Communications控件實(shí)現(xiàn)串行通信_(tái)第4頁(yè)
用VisualBasic的Communications控件實(shí)現(xiàn)串行通信_(tái)第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、用VisuaBasic的Communications控件實(shí)現(xiàn)串行通信1. 引言VisualBasic(以下簡(jiǎn)稱VB)是一般程序設(shè)計(jì)人員在Windows環(huán)境下最常用的編程語(yǔ)言。在VB中除了可以調(diào)用API函數(shù),完成串行通信的任務(wù)之外,更常用、更簡(jiǎn)便的是使用提供VB的Communications控件(以下簡(jiǎn)稱Comn控件)來(lái)完成各種串行通信任務(wù)。2. VB的Comr控件3. 1Comm控件的添加Comm控件并不是VB的基本控件,剛進(jìn)入VB環(huán)境中時(shí),在控件工具箱上是找不到Comn控件的,要使用它必須另行添加,添加的方法如下:用鼠標(biāo)右擊VB的控件工具箱,在彈出菜單中選擇部件菜單項(xiàng),會(huì)出現(xiàn)一個(gè)部件”對(duì)話框

2、,勾選其中的“MicrosoftCommControl6.0選項(xiàng),在VB的控件工具箱中會(huì)出現(xiàn)一個(gè)電話機(jī)形狀的控件圖標(biāo),它就是進(jìn)行串行通信要使用的Comr控件。4. 2Comm控件概述Comm控件用于進(jìn)行串行通信,既可以用來(lái)提供簡(jiǎn)單的串行端口通信功能,也可以用來(lái)創(chuàng)建功能完備的、事件驅(qū)動(dòng)的高級(jí)通信工具。Comm空件提供了一系列標(biāo)準(zhǔn)通信命令的使用界面。使用它可以建立與串行端口的連接,通過(guò)串行端口連接到其他通信設(shè)備(如MODEM,發(fā)出命令,交換數(shù)據(jù)以及監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯(cuò)誤。利用它可以進(jìn)行諸如撥打電話、監(jiān)視串行端口的輸入數(shù)據(jù)乃至創(chuàng)建功能完備的終端程序等功能。5. 3Comm空件的重要屬性

3、DCommPor:t設(shè)置或返回通信端口號(hào),其取值范圍為199,缺省為1。當(dāng)把這個(gè)屬性設(shè)置成1,表示利用COM1端口進(jìn)行串行通信。在程序運(yùn)行時(shí)也可以讀取該屬性,用來(lái)了解串行端口的使用情況。2)Settings:用字符串的形式設(shè)置或返回串行通信的幀格式。例如將Settings設(shè)置為9600,n,8,1,表示采用的串行通信波特率是9600、無(wú)奇偶校驗(yàn)、數(shù)據(jù)位是8位、1位停止位。(3)PortOpen:設(shè)置或打開(kāi)通信端口的狀態(tài),打開(kāi)和關(guān)閉端口。在開(kāi)始進(jìn)行串行通信前,要把它設(shè)置為T(mén)rue,表示打開(kāi)通信端口;通信結(jié)束后,要把它設(shè)置成Flase,表示關(guān)閉通信端口。4) Input:從輸入緩沖區(qū)讀取數(shù)據(jù),并刪

4、除輸入緩沖區(qū)中的字符。當(dāng)串行端口接收到數(shù)據(jù)后,就把它放入輸入緩沖區(qū),在程序中利用Input屬性可以讀取這些數(shù)據(jù)。5) InputLen:設(shè)置或返回接收緩沖區(qū)內(nèi)用Input讀入的個(gè)數(shù)。若取0,則INPUT讀取整個(gè)緩沖區(qū)的內(nèi)容。6)InputMode:設(shè)置或返回Input屬性取回的數(shù)據(jù)的類(lèi)型。0:(缺省)數(shù)據(jù)通過(guò)Input屬性以文本形式取回;1:數(shù)據(jù)通過(guò)Input屬性以二進(jìn)制形式取回。7)InBufferSize:設(shè)置或返回接收緩沖區(qū)中的字符數(shù)??梢酝ㄟ^(guò)設(shè)置該屬性為0來(lái)清除接收緩沖區(qū)。8)Output:向發(fā)送緩沖區(qū)傳送一字符串?dāng)?shù)據(jù)。9)OutBufferSize:設(shè)置或返回發(fā)送緩沖區(qū)大小,缺省為5

5、12字節(jié)。10) OutBufferCount:返回發(fā)送緩沖區(qū)內(nèi)等待發(fā)送的字符數(shù),可用來(lái)清空緩沖區(qū)。lDSthreshold:設(shè)置或返回發(fā)送緩沖區(qū)中允許的最小字符數(shù)。當(dāng)該屬性是0(缺省)時(shí),數(shù)據(jù)發(fā)送不會(huì)產(chǎn)生OnComm事件;當(dāng)該屬性為1時(shí),每發(fā)送一個(gè)字符都會(huì)產(chǎn)生OnCom事件。12)Rthreshold:設(shè)置或返回要接收的字符數(shù)。當(dāng)該屬性為0(缺省),數(shù)據(jù)接收不會(huì)產(chǎn)生OnCom事件;當(dāng)該屬性為1時(shí),每接收一個(gè)字符都會(huì)產(chǎn)生OnCom事件。13)CommEven:t返回最近的通信事件或錯(cuò)誤,它通常可能是下面的一些取值。ComEventBreaklOOl;接收到一個(gè)中斷信號(hào)ComEventFrame

6、l004;幀錯(cuò)誤ComEventRxover1008;接收緩沖區(qū)溢出ComEventRxParity1009;奇偶校驗(yàn)錯(cuò)誤ComEvSendl在傳輸緩沖區(qū)中有比Sthreshold數(shù)少的字符ComEvReceive2;收到Rthreshold個(gè)字符。該事件將持續(xù)產(chǎn)生直到用;Input屬性從接收緩沖區(qū)中刪除數(shù)據(jù)ComEvCTS3;CTS線的狀態(tài)發(fā)生變化ComEvDSR4;DSR線的狀態(tài)從1至U0變化ComEvCD5;載波信號(hào)發(fā)生變化ComEvEOF7;收到文件結(jié)束(ASCH字符為1AH字符2.4Comm控件的事件Comm控件只有一個(gè)事件,即OnCom事件。當(dāng)發(fā)生接收錯(cuò)誤、因收至數(shù)據(jù)使得接收緩沖區(qū)

7、的字符數(shù)等于或多于規(guī)定值、因發(fā)送數(shù)據(jù)使得發(fā)送緩沖區(qū)中的字符數(shù)少于規(guī)定數(shù)、從MODE傳遞來(lái)的各信號(hào)線發(fā)生變化等等,都會(huì)產(chǎn)生OnCom事件。所以當(dāng)發(fā)生OnCom事件后,在其處理程序中,首先要檢查Comn控件的CommEven屬性,然后根據(jù)不同的情況分別進(jìn)行處理。6. 一個(gè)較完備的串行通信程序在這個(gè)較完備的程序中,可以允許用戶設(shè)置串行通信端口、波特率、數(shù)據(jù)位的位數(shù)、校驗(yàn)方式、停止位位數(shù)等串行通信的基本參數(shù)。當(dāng)用戶進(jìn)行選擇后單擊確定按鈕,就可以進(jìn)行串行數(shù)據(jù)的發(fā)送和接收,程序的主界面如圖1所示。圖1較完備的串行通信程序主界面演練這個(gè)程序時(shí),需要將串口的TXD和RXD短接,在圖1左邊的文本框中輸入要發(fā)送的

8、字符,單擊發(fā)送按鈕,就會(huì)把這個(gè)文本框中的內(nèi)容發(fā)送出去;當(dāng)串口接收到這個(gè)串行數(shù)據(jù)后,就會(huì)把收到的數(shù)據(jù)顯示在右邊的文本框中。在窗體的Load事件處理程序中放置如下代碼:PrivateSubForm_Load()Optionl.Value=True0ption3.Value=Trueoption6.Value=Truecommand2.Enabled=FalseEndSub在確定按鈕的點(diǎn)擊事件處理程序中放置如下代碼:PrivateSubCommandl_Click()DimfOAsStringfO=Combo1.TextIf0ption3.Value=TrueThenfO=fO+,n如果用戶選擇無(wú)校

9、驗(yàn),則fO添上,nEndIfIf0ption4.Value=TrueThenfO=fO+,o如果用戶選擇奇校驗(yàn),則fO添上,oEndIfIf0ption5.Value=TrueThenfO=fO+,e如果用戶選擇偶校驗(yàn),則fO添上,孑EndIf位數(shù)添上用戶選擇的數(shù)據(jù)位fO=fO+,+Combo2.TextfOIf0ption6.Value=TrueThenfO=fO+,1如果用戶選擇1位停止位,則fO添上,1EndIfIfOption?.Value=TrueThenfO=fO+,1.5如果用戶選擇1.5位停止位,則fO添上,1.5EndIfIf0ption8.Value=TrueThenfO=

10、fO+,2如果用戶選擇2位停止位,則fO添上,2EndIfMSComml.Settings=fO把fO送給通信控件的settings屬性If(Optionl.Value=True)And(MSCommlmport=2)ThenMSCommlmPort=1EndIfIf(0ption2.Value=True)And(MSCommlmport=1)ThenMSCommlmPort=2EndIfIfMSComml.PortOpen=FalseThenMSComml.PortOpen=True打開(kāi)串行口EndIfMSComml.InputLen=1每次從接收緩沖區(qū)讀取一個(gè)字符MSComml.RThre

11、shold=1每收到一個(gè)字符就引發(fā)“OnComnT事件Command2.Enabled=TrueEndSub在發(fā)送按鈕的點(diǎn)擊事件處理程序中放置如下代碼:PrivateSubCommand2_Click()MSComml.Output=Textl.TextEndSub在窗體的UnLoad事件處理程序中放置如下代碼:PrivateSubForm_Unload(CancelAsInteger)IfMSComml.PortOpen=TrueThenMSComml.PortOpen=False如果關(guān)閉窗體時(shí)串行端口是打開(kāi)的,就把它關(guān)閉EndIfEndSub在Comr控件的OnCom事件處理程序中放置如下

12、代碼:PrivateSubMSCommlOnComm()SelectCaseMSCommlmEventCasecomEvReceiveTextl.Text=MSComml.Input如果是收到規(guī)定的字符數(shù),就在右邊的文本框中顯示出來(lái)CasecomEventBreakMsgBox線路中斷,vbExclamation,“error!”如果收到中斷信號(hào),就用對(duì)話框顯示線路中斷信息CasecomEventFrame,comEventRxOver,comEventRxParityMsgBox數(shù)據(jù)接收發(fā)生錯(cuò)誤!,vbExclamation,error!如果收到的數(shù)據(jù)格式錯(cuò)誤、接收緩沖區(qū)溢出、接收的數(shù)據(jù)奇偶校驗(yàn)錯(cuò),都用對(duì)話框顯示數(shù)據(jù)接收發(fā)生錯(cuò)誤!信息EndSelectEndSub在清除按鈕的點(diǎn)擊事件處理程序中放置如下代碼:PrivateSubCommand3_Clic

溫馨提示

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

評(píng)論

0/150

提交評(píng)論