VB(12)第五章串口通信控件方法與實(shí)現(xiàn)_第1頁
VB(12)第五章串口通信控件方法與實(shí)現(xiàn)_第2頁
VB(12)第五章串口通信控件方法與實(shí)現(xiàn)_第3頁
VB(12)第五章串口通信控件方法與實(shí)現(xiàn)_第4頁
VB(12)第五章串口通信控件方法與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VB(12)第五章串口通信控件方法與實(shí)現(xiàn)串口通信控件主要屬性小結(jié)◆CommPort屬性MSComm1.CommPort=2◆Settings屬性MSComm1.Settings=“1200,e,8,1“◆PortOpen屬性MSComm1.PortOpen=True◆OutPut屬性MSComm1.OutPut=Text1.text◆Input屬性Text1=MSComm1.Input◆InBufferCount屬性◆RThreshold屬性串口通信的基本步驟

◆在工程中添加MSComm控件;◆設(shè)置CommPort屬性選擇通信串口;◆設(shè)置Settings屬性選擇通信參數(shù);◆設(shè)置PortOpen=True打開通信串口;◆使用Output屬性發(fā)送數(shù)據(jù);◆使用Input屬性接收數(shù)據(jù);◆設(shè)置PortOpen屬性=False關(guān)閉串口。1.3.2自動接收數(shù)據(jù)自動接收數(shù)據(jù)的方法通常有兩種:1.查詢方式MSComm1控件的InBnfferCount屬性用來返回接收緩沖區(qū)中已收到但還未取走的字符個數(shù),可以通過查詢InBnfferCount屬性值是否大于0來判斷是否有數(shù)據(jù)接收進(jìn)來。查詢的方法可以借助定時器(Timer1)控件。(1)窗體設(shè)計:在簡單串口通信窗體設(shè)計中,將“接收”按鈕及相應(yīng)的代碼去掉,并在窗體中添加一個定時器控件。(2)屬性設(shè)置:定時器控件的Enabled屬性設(shè)置為Ture,Interval屬性取值為100。查詢方式下串口通信窗體設(shè)計(3)編寫代碼用鼠標(biāo)雙擊定時器控件在Timer1_Timer事件中加入以下代碼:PrivateSubTimer1_Timer()IfMSComm1.InBufferCount>0Thentimel=TimerWhileTimer-timel<0.1DoEventsWendText2.Text=MSComm1.InputEndIfEndSub運(yùn)行程序,在發(fā)送文本框中輸入字符或漢字,點(diǎn)擊“發(fā)送”按鈕,在“接收”文本框中就會自動顯示接收到的數(shù)據(jù)。2.事件驅(qū)動方式事件驅(qū)動方式使用串口控件的OnComm事件。由于事件驅(qū)動方式會產(chǎn)生類似于硬件中斷的效果,所以也稱為軟中斷接收方式。OnComm事件

MSComm1控件只有一個OnComm事件,在這個事件中包含了十七個通信過程中的事件處理過程并用事件用屬性CommEvent

的十七個值來區(qū)分不同的觸發(fā)事件。無論何時當(dāng)CommEvent

屬性值變化時,就產(chǎn)生OnComm事件。(1)CommEvent屬性取值及含義◆通信錯誤常數(shù)(共計10個)

符號常數(shù)值含義comEventBreak1001接收到中斷信號comEventCTSTO1002CTS超時comEventDSRTO1003DSR超時comEventFrame1004幀錯誤comEventOverrun1006數(shù)據(jù)丟失(端口超速)comEventCDTO1007CD超時comEventRxOver1008接收緩沖區(qū)溢出comEventRxParity1009極性錯誤comEventTxFull1010發(fā)送緩沖區(qū)滿comEventDCB1011檢索端口設(shè)備控制塊(DCB)時的意外錯誤

◆管腳狀態(tài)及接收/發(fā)送緩沖區(qū)狀態(tài)等常數(shù)(共計7個)。

符號常數(shù)值含義comEvSend1發(fā)送緩沖區(qū)有Sthreshold屬性設(shè)置的字符數(shù)comEvReceive2接收緩沖區(qū)有RThreshold屬性設(shè)置的字符數(shù)comEvCTS3CTS線狀態(tài)發(fā)生變化comEvDSR4DSR線狀態(tài)發(fā)生變化comEvCD5CD線狀態(tài)發(fā)生變化comEvRing6RI(振鈴)線狀態(tài)變化comEvEOF7輸入數(shù)據(jù)流中發(fā)現(xiàn)文件結(jié)束標(biāo)志(EOF)(2)OnComm事件示例框架代碼PrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventCasecomEventBreak‘十個錯誤

CasecomEventCDTOCasecomEventCTSTOCasecomEventDSRTOCasecomEventFrameCasecomEventOverrunCasecomEventRxOverCasecomEventRxParityCasecomEventTxFullCasecomEventDCBCasecomEvCD’七個事件CasecomEvCTSCasecomEvDSRCasecomEvRingCasecomEvReceive‘接收緩沖區(qū)有Rthreshold屬性設(shè)置的字符數(shù)(2),此處放接收數(shù)據(jù)代碼。CasecomEvSendCasecomEvEOFEndSelectEndSub

(3)編寫事件驅(qū)動方式的通信程序

◆窗體設(shè)計:在查詢方式通信窗體中,將定時器控件及相關(guān)的代碼去掉。

◆編寫代碼

PrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventCasecomEvReceiveMSComm1.RThreshold=0IfMSComm1.InBufferCount>0Thentimel=TimerWhileTimer-timel<0.1DoEventsWendText2.Text=MSComm1.InputEndIfMSComm1.RThreshold=1EndSelectEndSubPrivateSubForm_Load()MSComm1.RThreshold=1MSComm1.PortOpen=TrueEndSub◆運(yùn)行程序:在發(fā)送文本框中輸入數(shù)據(jù)后,點(diǎn)擊發(fā)送按鈕,在接收文本框中就會自動顯示接收到的數(shù)據(jù)。1.3.3用Modem進(jìn)行遠(yuǎn)程通信1.AT指令簡介PC機(jī)串口通信中,計算機(jī)一端稱為數(shù)據(jù)終端設(shè)備(DTE),調(diào)制解調(diào)器一端稱為數(shù)據(jù)通信設(shè)備(DCE),PC機(jī)串行通信的硬件連接方式分為零Modem連接和Modem連接?!袅鉓odem連接:直接用電纜將兩臺PC機(jī)連接起來的方式?!鬗odem連接:通過Modem及網(wǎng)將兩臺PC機(jī)連接起來的方式。

Modem工作有命令和在線兩種狀態(tài)◆命令狀態(tài)是指通信線路上的兩個Modem還沒有建立起連接的狀態(tài)。處于命令狀態(tài)下的Modem會把PC機(jī)發(fā)往串口的信息當(dāng)成指令來執(zhí)行。因此,在命令狀態(tài)下,PC機(jī)可通過串口向調(diào)制解調(diào)器發(fā)送指令對其進(jìn)行初始化、設(shè)置和操作。◆在線狀態(tài)是指通信線路上的兩個Modem建立起連接后的狀態(tài)。使用AT指令要遵循的規(guī)則◆每個AT指令字符串的最后必須加上回車符Chr(13),否則調(diào)制解調(diào)器將不執(zhí)行傳送過來的指令?!舫恕癆/

”和“+++”兩個指令外,其他的指令都必須加上“AT”前導(dǎo)符?!鬉T指令可以一個一個地發(fā)送,也可以合成一個字符串后再發(fā)送。用字符串發(fā)送時,總長度不能超過40個字符。◆所有的AT指令字符必須一律是大寫或小寫。AT指令應(yīng)用舉例◆對Modem初始化:MSComm1.Output=“ATE0Q1M0S0=5”&Chr(13),表示不回應(yīng)指令、不返回結(jié)果碼、關(guān)閉揚(yáng)聲器、振鈴響5次后摘機(jī)?!魮芴枺篗SComm1.Output="ATDT"&Text1.Text&Chr(13)◆摘機(jī):MSComm1.Output="ATH1"&Chr(13)◆掛機(jī):MSComm1.Output="+++,ATH0"&Chr(13)2.遠(yuǎn)程通信編程舉例(1)硬件連接:用Modem進(jìn)行兩臺計算機(jī)間的遠(yuǎn)程通信,需要兩個Modem和兩條不同號碼的線??梢允褂靡慌_計算機(jī)模擬遠(yuǎn)程通信,方法是將接有線的兩個Modem分別接在計算機(jī)的兩個串口上,通信時只要對兩個串口進(jìn)行讀寫操作即可。如果Modem具有專線功能可以用一條兩端帶有RJ-11插頭的兩芯線將兩個調(diào)制解調(diào)器直接連接起來進(jìn)行通信。(2)設(shè)計窗體:在事件驅(qū)動方式串口通信窗體上添加一個標(biāo)簽(Label3)和文本框(Text3)。標(biāo)簽的Caption屬性設(shè)置為“號碼”,文本框用來輸入號碼。(3)編寫代碼用Modem實(shí)現(xiàn)遠(yuǎn)程通信完整代碼如下:DimtimelPrivateSubCommand1_Click()MSComm1.Output=_"ATDT"&Text3.Text&Chr(13)timel=TimerDoWhileTimer-timel<30DoEventsIfMSComm1.CDHoldingThen_GoToCD_TureLoopMsgBox“未檢測到載波信號”MSComm1.Output=_"+++,ATH0"&Chr(13)ExitSubCD_Ture:MSComm1.Output=Text1.TextEndSubPrivateSubForm_Load()MSComm1.RThreshold=1MSComm1.PortOpen=TrueMSComm1.DTREnable=TrueMSComm1.Output=_"ATE0Q1M2S0=1"&Chr(13)EndSubPrivateSubMSComm1_OnComm()SelectCaseMSComm1.CommEventCasecomEvReceiveMSComm1.RThreshold=0I

溫馨提示

  • 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

提交評論