




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航天器天線設(shè)計(jì)與布局考核試卷
- 淡水養(yǎng)殖魚(yú)類(lèi)疾病早期診斷技術(shù)考核試卷
- 租賃業(yè)務(wù)中的用戶畫(huà)像構(gòu)建考核試卷
- 《企業(yè)員工績(jī)效考核與薪資結(jié)構(gòu)設(shè)計(jì)教學(xué)課件》
- 豆類(lèi)作物種植資源利用與保護(hù)考核試卷
- 虛擬現(xiàn)實(shí)技術(shù)對(duì)社會(huì)生活的影響考核試卷
- 運(yùn)維安全崗位職責(zé)3篇
- 中秋猜燈謎活動(dòng)方案
- 《微分與積分極限》課件
- 孔子思想教育
- DB32-T 2665-2014機(jī)動(dòng)車(chē)維修費(fèi)用結(jié)算規(guī)范-(高清現(xiàn)行)
- 中專(zhuān)通用簡(jiǎn)歷表
- 思想政治教育學(xué)原理整套課件完整版電子教案課件匯總(最新)
- 沖孔樁施工安全管理培訓(xùn)講義
- 壓力管道安全檢查表參考范本
- 部編人教版小學(xué)五年級(jí)下冊(cè)語(yǔ)文文言文閱讀理解課后專(zhuān)項(xiàng)練習(xí)
- 皮膚管理--ppt課件
- 雙向氣動(dòng)插板門(mén)使用說(shuō)明書(shū)
- 無(wú)生老母救世血書(shū)寶卷
- 住房公積金廉政風(fēng)險(xiǎn)防控指引
- 醫(yī)用耗材分類(lèi)目錄 (低值 ╱ 高值)
評(píng)論
0/150
提交評(píng)論