|
[摘要]本文詳述ActiveX的MSComm控件在VFP6.0中實現(xiàn)控制串行端口操作方法,并提供具體實現(xiàn)的樣本源程序。
[關(guān)鍵詞] ActiveX 控件 MSComm OLE
VFP6.0提供了一個非常完整的OLE(對象鏈接嵌入)的環(huán)境,擴展了它與其他應(yīng)用程序之間進行數(shù)據(jù)交換的手段和能力, 本文詳述ActiveX的MSComm控件實現(xiàn)的串行端口傳輸和接收方法,同樣也支持VB6.0和WEB程序。
按鈕對象 Click Event 事件過程的內(nèi)容 ThisForm.Olecontrol2.portopen=.T. 通信控件Olecontrol2 的 OnComm事件過程的內(nèi)容 *** ActiveX 控件事件 *** ThisForm.Text1.value=ThisForm.Olecontrol2.input 三. 通信控件Olecontrol2(MSComm 控件)屬性說明 MSComm控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通訊功能。它提供下列兩種處理通訊的方式: 事件驅(qū)動通訊是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發(fā)生時需要得到通知,例如,在 Carrier Detect (CD) 或 Request To Send (RTS) 線上一個字符到達或一個變化發(fā)生時。在這些情況下,可以利用 MSComm 控件的 OnComm 事件捕獲并處理這些通訊事件。OnComm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 CommEvent 屬性。 在程序的每個關(guān)鍵功能之后,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。如果應(yīng)用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的讀寫端口程序,則沒有必要對每接收一個字符都產(chǎn)生事件 每個使用的 MSComm 控件對應(yīng)著一個串行端口。如果應(yīng)用程序需要訪問多個串行端口,必須使用多個 MSComm 控件??梢栽?Windows“控制面板”中改變端口地址和中斷地址。 盡管 MSComm 控件有很多重要的屬性,但首先必須熟悉幾個屬性。
1. CommPort 屬性(設(shè)置并返回通訊端口號。) 語法 : object.CommPort[ = value ] CommPort 屬性語法包括下列部分:
說明: 在設(shè)計時,value 可以設(shè)置成從 1 到 16 的任何數(shù)(缺省值為 1)。但是如果用 PortOpen 屬性打開一個并不存在的端口時,MSComm 控件會產(chǎn)生錯誤 68(設(shè)備無效)。 警告: 必須在打開端口之前設(shè)置 CommPort 屬性。 2. Settings 屬性(設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位參數(shù)。) 語法 : object.Settings[ = value] Settings 屬性語法包括下列部分: 部 分 描 述 object 對象表達式,其值是“應(yīng)用于”列表中的對象。 value 字符串表達式,說明通訊端口的設(shè)置值,如下所述。 Settings 示例 下面的例子設(shè)置控件端口通訊,波特率 9600,無奇偶校驗檢查,8 個數(shù)據(jù)位,1 個停止位: MSComm1.Settings = "9600,N,8,1" 說明: 當(dāng)端口打開時,如果 value 非法,則 MSComm 控件產(chǎn)生錯誤 380(非法屬性值)。 Value 由四個設(shè)置值組成,有如下的格式:"BBBB,P,D,S" a)BBBB 為波特率,P 為奇偶校驗,D 為數(shù)據(jù)位數(shù),S 為停止位數(shù)。value 的缺省值是: "9600,N,8,1" 合法的波特率:設(shè)置值 110,300,600,1200,2400,9600缺省,14400 19200 ,28800 ,38400 ,56000 ,128000 ,256000 b)合法的奇偶校驗值。設(shè)置值 E 偶數(shù)(Even) ,M 標記(Mark) ,N 缺省(Default) None O 奇數(shù) (Odd) ,S 空格 (Space) c)合法的數(shù)據(jù)位值。設(shè)置值 4 ,5 ,6 ,7 ,8(缺省) d)合法的停止位值。設(shè)置值 1(缺?。? 1.5 ,2 3. PortOpen 屬性:設(shè)置并返回通訊端口的狀態(tài)(開或關(guān))。在設(shè)計時無效。 語法 : object.PortOpen[ = value] PortOpen 屬性語法包括下列部分: 部 分 描 述 object 對象表達式,其值是“應(yīng)用于”列表中的對象。 value 布爾表達式,說明通訊端口的狀態(tài)。 value 設(shè)置值是:True 端口開,False 端口關(guān) 下例以波特率 9600 打開 1 號通訊端口,沒有奇偶檢查,8 個數(shù)據(jù)位,1 個停止位。 MSComm1.Settings = "9600,n,8,1" MSComm1.CommPort = 1 MSComm1.PortOpen = True 說明 設(shè)置 PortOpen 屬性為 True 打開端口。設(shè)置為 False 關(guān)閉端口并清除接收和傳輸 緩沖區(qū)。當(dāng)應(yīng)用程序終止時,MSComm 控件自動關(guān)閉串行端口。 在打開端口之前,確定 CommPort 屬性設(shè)置為一個合法的端口號。如果 CommPort 屬性設(shè)置為一個非法的端口號,則當(dāng)打開該端口時,MSComm 控件產(chǎn)生錯誤 68(設(shè) 備無效)。 另外,串行端口設(shè)備必須支持 Settings 屬性當(dāng)前的設(shè)置值。如果 Settings 屬性包含硬件不支持的通訊設(shè)置值,那么硬件可能不會正常工作。 如果在端口打開之前,DTREnable 或 RTSEnable 屬性設(shè)置為 True,當(dāng)關(guān)閉端口時,該屬性設(shè)置為 False。否則,DTR 和 RTS 線保持其先前的狀態(tài)。 4. InputLen 屬性: 設(shè)置并返回 Input 屬性從接收緩沖區(qū)讀取的字符數(shù)。 語法 : object.InputLen [ = value] InputLen 屬性語法包括下列部分: 部 分 描 述 object 對象表達式,其值是“應(yīng)用于”列表中的對象。 value 整型表達式,說明 Input 屬性從接收緩沖區(qū)中讀取的字符數(shù)。 說明: InputLen 屬性的缺省值是 0。設(shè)置 InputLen 為 0 時,使用 Input 將使 MSComm 控件讀取接收緩沖區(qū)中全部的內(nèi)容。 若接收緩沖區(qū)中 InputLen 字符無效,Input 屬性返回一個零長度字符串 ("")。在使用 Input 前,用戶可以選擇檢查 InBufferCount 屬性來確定緩沖區(qū)中是否已有需要數(shù)目的字符。 該屬性在從輸出格式為定長數(shù)據(jù)的機器讀取數(shù)據(jù)時非常有用。 5. Output 屬性:往傳輸緩沖區(qū)寫數(shù)據(jù)流。該屬性在設(shè)計時無效,在運行時為只讀。 語法: object.Output [ = value ] Output 屬性語法包括下列部分: 部 分 描 述 object 對象表達式,其值是“應(yīng)用于”列表中的對象。 value 要寫到傳輸緩沖區(qū)中的一個字符串。 Output 屬性示例 下面的例子說明如何將用戶鍵入的每一個字符送到串行端口: 文本框?qū)ο?/b> KeyPress Event 事件過程的內(nèi)容 LPARAMETERS nKeyCode, nShiftAltCtrl Buffer=’ ’ MSComm1.CommPort = 1 MSComm1.PortOpen = True Buffer = Chr(nKeyCode) MSComm1.Output = Buffer 說明 Output 屬性可以傳輸文本數(shù)據(jù)或二進制數(shù)據(jù)。用 Output 屬性傳輸文本數(shù)據(jù),必須定義一個包含一個字符串。發(fā)送二進制數(shù)據(jù),必須傳遞一個包含字節(jié)數(shù)組的 Variant 到 Output 屬性。 正常情況下,如果發(fā)送一個 ANSI 字符串到應(yīng)用程序,可以以文本數(shù)據(jù)的形式發(fā)送。如果發(fā)送包含嵌入控制字符、Null 字符等等的數(shù)據(jù),要以二進制形式發(fā)送。 總之,OLE技術(shù)應(yīng)用是Microsoft所強調(diào)和大力推廣的技術(shù).通過以上的介紹您可發(fā)現(xiàn),將來在各種平臺,各種開發(fā)工具,應(yīng)用系統(tǒng),Internet或Intranet等應(yīng)用技術(shù)中,都可發(fā)現(xiàn)OLE技術(shù)的應(yīng)用,它已經(jīng)是達到”軟件IC組件”境界的一條寬闊大道! (作者:呂建鋒責(zé)任編輯:) |
|
|
來自: Alkaid2015 > 《75.VFP狐仙◆》