亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VB6.0的MSComm通信控件應(yīng)用舉例

        2009-03-27 08:17:38程巍巍
        合作經(jīng)濟(jì)與科技 2009年7期
        關(guān)鍵詞:程序

        程巍巍

        提要本文介紹了基于VB6.0的MSComm通信控件相關(guān)理論,并以一個實例演示了MSComm控件的主要屬性。

        關(guān)鍵詞:串行通信;VB6.0;MSComm控件

        中圖分類號:F49文獻(xiàn)標(biāo)識碼:A

        在當(dāng)今這個科技飛速發(fā)展的時代,我們經(jīng)常需要在計算機(jī)與其他設(shè)備之間進(jìn)行通信,而串行通信作為一種靈活、方便、可靠的通信方式被廣泛采用。在開發(fā)串行通信程序的過程中,利用微軟的MSComm通信控件相對比較簡單,該控件具有豐富的與串行通信密切相關(guān)的屬性及事件,提供了對串口的各種操作。MSComm控件在VB中容易使用,在串口編程時也非常方便,程序員不必花時間去了解較為復(fù)雜的API函數(shù)。

        一、用VB6.0進(jìn)行串行通信程序的設(shè)計方法簡介

        用visual basic6.0進(jìn)行串行通信程序的設(shè)計有兩種方式:(1)直接調(diào)用Windows API。(2)使用通信組件。該方式實際上是通過通信組件間接調(diào)用Windows API函數(shù),其過程要比直接調(diào)用API要復(fù)雜,但在程序上容易實現(xiàn)。使用MSComm控件時,實際上就是使用了API函數(shù),API函數(shù)將被Comm.drv解釋并傳送給外圍設(shè)備驅(qū)動程序,使用MSComm的用戶只需要關(guān)心如何使用MSComm所提供的屬性或事件,以驅(qū)動API函數(shù)的接口完成工作。

        二、串行通信程序的執(zhí)行過程

        MSComm控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能。該控件提供了兩種處理通信的方式:

        1、事件驅(qū)動通信。事件驅(qū)動通信是處理串行端口交互作用的一種非常有效的方式。在使用事件驅(qū)動通信時,每當(dāng)有一個字符到達(dá)或端口狀態(tài)發(fā)生改變,或發(fā)生錯誤時,MSComm控件將觸發(fā)OnComm事件進(jìn)行捕獲,通過檢查MSComm控件的CommEvent屬性獲知所發(fā)生的事件或錯誤,從而采取相應(yīng)的操作處理這些通信事件。這種方法的優(yōu)點是程序響應(yīng)及時,可靠性高。

        2、查詢法。該方法可以在程序的每個關(guān)鍵功能之后,通過檢查CommEvent屬性的值來查詢事件和錯誤。每個使用的MSComm控件對應(yīng)著一個串行端口。如果應(yīng)用程序需要訪問多個串行端口,必須使用多個MSComm控件。

        查詢法適合于較小的應(yīng)用程序,在這種情況下,每當(dāng)應(yīng)用程序執(zhí)行完某一串行口操作后,將不斷檢查MSComm控件的CommEvent屬性,以檢查執(zhí)行結(jié)果或檢查某一事件是否發(fā)生。

        而進(jìn)行串行通信時一般有兩種傳輸方式:

        (1)字符形式:通常以小于ASCII碼128的字符碼來傳遞,通常用于傳送指令。

        (2)二進(jìn)制形式:將數(shù)據(jù)以二進(jìn)制編碼的方式傳遞,它可能含有ASCII碼128以上的字符碼。通常用來傳送數(shù)據(jù),以提高速度。

        三、串行通信實例

        下面以一個實例來演示MSComm控件的主要屬性。根據(jù)程序需要,進(jìn)行以下操作步驟:

        1、新建工程。啟動VB后,新建一個標(biāo)準(zhǔn)的EXE工程。

        2、設(shè)計用戶界面。(1)在“工具”菜單中選中“部件”,在“控件”選項卡中選擇“Microsoft Comm Controls6.0”。然后從工具箱中將MSComm添加到窗體Form1中。(2)給窗體Form1添加1個計時器控件,3個命令按鈕控件,并設(shè)置控件的相關(guān)屬性。(表1)

        3、編寫程序代碼

        Option Explicit

        Public echo As Boolean'回應(yīng)‘打開/關(guān)閉標(biāo)志

        Dim ret As Integer'設(shè)為整數(shù)

        Dim starttime As Data'為端口計時器存儲開始時間

        Private Sub command1_click()

        On Error Resume Next

        Dim openflag

        MSComm1.PortOpen = Not MSComm1.PortOpen

        If Err Then MsgBox Error$,48

        openflag = MSComm1.PortOpen

        If MSComm1.PortOpen Then

        starttiming

        End If

        End Sub

        Private Sub Command2_Click()

        On Local Error Resume Next

        Static num As String

        num="1-029-8936-6735"'MSDN的電話號碼'從用戶處獲得電話號碼

        num=InputBox$("輸入電話號碼:","撥打電話號碼",num)

        If num="" Then Exit Sub

        If Not MSComm1.PortOpen Then'如果端口沒有打開則打開它

        If Err Then Exit Sub

        End If

        MSComm1.Output="ATDT" & num & vbCrLf'撥打電話號碼

        starttiming'啟動端口計時器

        End Sub

        Private Sub Command3_Click()

        On Error Resume Next

        MSComm1.Output="ATH"'發(fā)送掛機(jī)字符串

        ret=MSComm1.DTREnable'保存當(dāng)前設(shè)置

        MSComm1.DTREnable=True'打開DTR

        MSComm1.DTREnable=False'關(guān)閉DTR

        MSComm1.DTREnable=ret'恢復(fù)原來的設(shè)置'如果端口確實處于打開狀態(tài),則關(guān)閉它

        If MSComm1.PortOpen Then MSComm1.PortOpen = False

        If Err Then MsgBox Error$,48'通知用戶錯誤信息

        stoptiming'停止端口計時器

        On Error GoTo 0

        End Sub

        'oncomm事件被用于捕獲communications事件及錯誤

        Private Static Sub MSComm1_OnComm()

        Dim evmsg$

        Dim ermsg$

        '依據(jù)commecent屬性進(jìn)行分支

        Select Case MSComm1.CommEvent

        '事件信息

        Case comEvReceive

        Dim buffer As Variant

        buffer = MSComm1.Input

        Debug.Print "接收-" & StrConv(buffer,vbUnicode)

        'showdate txtterm,(StrConv(buffer,vbUnicode))

        Case comEvSend

        Case comEvCTS

        evmsg$="被檢測的CTS改變"

        Case comEvDSR

        evmsg$="被檢測的DSR改變"

        Case comEvCD

        evmsg$="被檢測的CD改變"

        Case comEvRing

        evmsg$="電話鈴響起"

        Case comEvEOF

        evmsg$="被檢測的文件結(jié)尾"

        Case comBreak

        ermsg$="收到中斷"

        Case comCDTO

        ermsg$="運(yùn)輸檢測超時"

        Case comCTSTO

        ermsg$="CTS超時"

        Case comDCB

        ermsg$="檢索DCB錯誤"

        Case comDSRTO

        ermsg$="DSR超時"

        Case comFrame

        ermsg$="幀錯誤"

        Case comOverrun

        ermsg$="超限錯誤"

        Case comRxOver

        ermsg$="接收緩沖區(qū)溢出"

        Case comRxParity

        ermsg$="奇偶校驗錯"

        Case comTxFull

        ermsg$="傳送緩沖區(qū)滿"

        Case Else

        ermsg$="未知的錯誤或事件"

        End Select

        End Sub

        Private Sub starttiming()

        '調(diào)用此函數(shù)啟動連接時間計時器

        starttime=Now

        Timer1.Enabled=True

        End Sub

        Private Sub stoptiming()

        '調(diào)用此函數(shù)停止計時

        Timer1.Enabled = False

        End Sub

        程序執(zhí)行時的界面如下圖:

        (作者單位:西安歐亞學(xué)院信息工程學(xué)院)

        猜你喜歡
        程序
        給Windows添加程序快速切換欄
        電腦愛好者(2020年6期)2020-05-26 09:27:33
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        基于VMM的程序行為異常檢測
        偵查實驗批準(zhǔn)程序初探
        我國刑事速裁程序的構(gòu)建
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        恐怖犯罪刑事訴訟程序的完善
        欧美xxxxx高潮喷水麻豆| 国产视频网站一区二区三区| 亚洲av无码成人专区片在线观看| 秋霞午夜无码鲁丝片午夜精品| 久久成年片色大黄全免费网站| 日本在线免费精品视频| 精品av一区二区在线| 午夜视频一区二区三区四区| 欧美做受又硬又粗又大视频| 性无码免费一区二区三区在线| 国外亚洲成av人片在线观看| 国产成人午夜福利在线小电影 | 国产偷国产偷亚洲清高| 精品国产一级毛片大全| 国产96在线 | 免费| 中文字幕视频一区懂色| 久久精品丝袜高跟鞋| 国产成人亚洲精品青草天美| 亚洲天堂第一区| 日本视频一区二区二区| 国产极品裸体av在线激情网| 人妻少妇边接电话边娇喘| 日韩欧美亚洲中字幕在线播放| 国产精品久久国产精麻豆| 亚洲av男人电影天堂热app| 亚洲精品无码不卡av| 国产成人精品男人的天堂网站| 一本色道久久亚洲精品| 中文字幕免费在线观看动作大片| 女人扒开下面无遮挡| 亚洲欧美变态另类综合| 久久亚洲中文字幕伊人久久大| 玩中年熟妇让你爽视频| 免费AV一区二区三区无码| 国产一区二区三区特黄| 日本一区二区三区视频国产| 人人摸人人搞人人透| 国产中出视频| 国产精品又黄又爽又色| 极品老师腿张开粉嫩小泬| 欧美国产日韩a在线视频|