握手例程時(shí),該屬性很有用。 數(shù)據(jù)類(lèi)型 BooleanDRTEnable 屬性 確定在通信過(guò)程中是否使用DTR(Data Terminal Ready)線(xiàn)。通常,DTR 信 號(hào)是計(jì)算機(jī)發(fā)送給調(diào)制解調(diào)器的,指明計(jì)算機(jī)可以接收輸入數(shù)據(jù)了。 語(yǔ)法 object.DTREnable [=value] DTREnable屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 value 一個(gè)布爾表達(dá)式,指定是否使用DTR線(xiàn),如“設(shè)置”中所示 設(shè)置 value 值的設(shè)置如下: 設(shè)置描述 True 使用DTR線(xiàn) False (缺?。┙笵TR線(xiàn) 說(shuō)明 當(dāng)DTREnable屬性設(shè)置為T(mén)rue時(shí),如果端口打開(kāi),DTR線(xiàn)被設(shè)置為高(on), 如果端口關(guān)閉,DTR線(xiàn)被設(shè)置為低(off)。 注意:在大多數(shù)情況下,將DTR線(xiàn)設(shè)置為低將掛起電話(huà)。 數(shù)據(jù)類(lèi)型 Boolean EOFEnable屬性 EOFEnable 屬性確定MSComm 控件是否檢查輸入中的EOF 字符。如果發(fā)現(xiàn)了EOF 字符,停止輸入,將把 CommenEvent 屬性置為comEvEOF,激活OnComm事件。 語(yǔ)法 object.EOFEnable [=value] EOFEnable屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 value 一個(gè)布爾表達(dá)式,指定發(fā)現(xiàn)了EOF 字符時(shí)是否觸發(fā)OnComm 事件,如“設(shè)置”所示 設(shè)置 value 設(shè)置如下: 設(shè)置描述 True 當(dāng)發(fā)現(xiàn)EOF字符時(shí)就觸發(fā)On Comm事件 False (缺省值)當(dāng)發(fā)現(xiàn)EOF字符時(shí)不觸發(fā)On Comm事件 說(shuō)明 當(dāng)EOFEnable屬性設(shè)置為False時(shí),控件將不在輸入流中掃描EOF字符。 Error 消息(MSComm控件) 下表列出了MSComm控件可捕獲的錯(cuò)誤消息: 常量值描述 ComInvalidPropertyVal ue 380 無(wú)效的屬性值 ComSetNotSupported 383 屬性只讀 ComGetNotSupported 394 屬性只讀 ComPortOpen 8000 端口打開(kāi)時(shí)該存在無(wú)效 8001 超時(shí)設(shè)置必須比0 值大 ComPortInvalid 8002 無(wú)效的端口號(hào) 8003 屬性只在運(yùn)行時(shí)有效 8004 屬性在運(yùn)行時(shí)是只讀的 ComPortAleadyOpen 8005 端口已經(jīng)打開(kāi) 8006 設(shè)備標(biāo)識(shí)符無(wú)效或不支持 8007 不支持設(shè)備的波特率 8008 指定的字節(jié)大小無(wú)效 8009 缺省參數(shù)錯(cuò)誤 8010 硬件不可用(被其他設(shè)備鎖?。?BR>8011 函數(shù)不能分配隊(duì)列 ComNoOpen 8012 設(shè)備沒(méi)有打開(kāi) 8013 設(shè)備已經(jīng)打開(kāi) 8014 不能使用通信通知 續(xù)表 ComSetCommStateFaile d 8015 不能設(shè)置通信狀態(tài) 8016 不能設(shè)置通信事件屏蔽 ComPortNotOpen 8018 該存在只在端口打開(kāi)是有效 8019 設(shè)備忙 ComReadError 8020 通信設(shè)備讀錯(cuò)誤 ComDCBError 8021 檢取端口設(shè)備控制塊時(shí)出現(xiàn)內(nèi)部錯(cuò)誤 Handshaking屬性 設(shè)置或返回硬件握手協(xié)議。 語(yǔ)法 object.Handshaking [=value] Handshaking屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 value 一個(gè)整數(shù)表達(dá)式,指定握手協(xié)議,如“設(shè)置”中所示 設(shè)置 value 值的設(shè)置如下: 設(shè)置值描述 comNone 0 (缺?。](méi)有握手協(xié)議 ComXOnXOff 1 XON/XOFF握手協(xié)議 ComRTS 2 RTS/CTS(Request To Send / Clear To Send)握手協(xié)議 ComRTSXOnXOff 3 RTS和XON/XOFF協(xié)議 說(shuō)明 握手協(xié)議是指從硬件端口向接收緩沖區(qū)傳輸數(shù)據(jù)時(shí)使用的內(nèi)部通信協(xié)議。 當(dāng)一個(gè)字符數(shù)據(jù)到達(dá)串口時(shí),通信設(shè)備必須將其移動(dòng)到接收緩沖區(qū),使應(yīng)用程序可以讀取數(shù)據(jù)。如果沒(méi)有接收 緩沖區(qū)而應(yīng)用程序希望直接從硬件讀取每個(gè)字符,你將可能丟失數(shù)據(jù),因?yàn)閿?shù)據(jù)到達(dá)的速度很快。 握手協(xié)議保證緩沖區(qū)溢出時(shí)不丟失沒(méi)有數(shù)據(jù),到達(dá)串口的數(shù)據(jù)將被通信設(shè)備很快地移動(dòng)到接收緩沖區(qū)中。 數(shù)據(jù)類(lèi)型 Integer InBufferCount屬性 返回在接收緩沖區(qū)中等待的字符數(shù)。該屬性在設(shè)計(jì)時(shí)不可用。 語(yǔ)法 object.InBufferCount [=value] InBufferCount屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 value 一個(gè)整數(shù)表達(dá)式,指定在接收緩沖區(qū)中等待的字符數(shù) 說(shuō)明 InBufferCount 是指已被接收到接收緩沖區(qū)、等待應(yīng)用程序讀取的字符數(shù)。 將InBufferCount設(shè)置置為0將清除接收緩沖區(qū)。 注意:不要將該屬性與InBufferize 屬性混淆。InBufferSize 屬性 反映的是接收緩沖區(qū)總的大小。 數(shù)據(jù)類(lèi)型 Integer InBufferSize屬性 設(shè)置或返回接收緩沖區(qū)大小的字節(jié)數(shù)。 語(yǔ)法 object.InBufferSize[=value] InBufferSize屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 value 一個(gè)整數(shù)表達(dá)式,指定接收緩沖區(qū)大小的字節(jié)數(shù) 說(shuō)明 InBufferSize 是指整個(gè)接收緩沖區(qū)的大小。缺省是1024 個(gè)字節(jié)。不要將該屬性與反映等待應(yīng)用程序讀取字符 數(shù)的InBufferCount屬性混淆。 注意:對(duì)接收緩沖區(qū)設(shè)置的越大,應(yīng)用程序可以使用的內(nèi)存就越少。 然而,如果接收緩沖區(qū)太小,緩沖區(qū)將會(huì)溢出,除非使用握手協(xié)議。通常,將緩沖區(qū)設(shè)置為1024。如果發(fā)生了 溢出,就增大該緩沖區(qū),以滿(mǎn)足應(yīng)用程序傳輸速率。 數(shù)據(jù)類(lèi)型 Integer Input屬性 返回或刪除接收緩沖區(qū)中的數(shù)據(jù)流。該屬性在設(shè)計(jì)時(shí)不可用,在運(yùn)行時(shí)是 只讀的。 語(yǔ)法 object.Input Input屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 說(shuō)明 InputLen屬性確定了Input屬性讀入的字符數(shù)。將InputLen 屬性設(shè)置為0將導(dǎo)致Input屬性讀入整個(gè)接收緩沖區(qū) 的內(nèi)容。 InputMode 屬性確定了Input 屬性檢取數(shù)據(jù)的類(lèi)型。如果InputMode 設(shè)置為comInputModeText,則Input屬性將 返回Variant類(lèi)型的文本數(shù)據(jù)。如果InputMode屬性設(shè)置為comInputModeBinary,則Input 屬性返回一個(gè)Variant 類(lèi)型的二進(jìn)制 字節(jié)矩陣。 數(shù)據(jù)類(lèi)型 Variant 示例 下面的例子演示了如何從接收緩沖區(qū)中檢取數(shù)據(jù)。 Private Sub Command1_Click() Dim InString as String Retrieve all available data. MSComm1.InputLen = 0 Check for data. If MSComm1.InBufferCount Then Read data. InString = MSComm1.Input End If End Sub InputLen屬性 設(shè)置和返回Input屬性從接收緩沖區(qū)中讀取的字符數(shù)。 應(yīng)用于 MSComm控件。 語(yǔ)法 object.InputLen [=value] InputLen屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象value 一個(gè)整數(shù)表達(dá)式,指定Input 屬性從接收緩沖 區(qū)中讀取的字符數(shù) 說(shuō)明 InputLen 屬性的缺省值是0。將InputLen 屬性設(shè)置為0 將導(dǎo)致Input 屬性讀入整個(gè)接收緩沖區(qū)的內(nèi)容。 如果接收緩沖區(qū)中沒(méi)有可讀的字符,就返回空字符串。在使用Input 之前,用戶(hù)可以檢查InBufferCount的值, 以便確定是否讀取了所要求的字符數(shù)。 從輸出格式固定的計(jì)算機(jī)讀取定長(zhǎng)數(shù)據(jù)塊時(shí)該屬性很有用。 數(shù)據(jù)類(lèi)型 Integer 示例 下面的例子演示了如何檢取10個(gè)字符的數(shù)據(jù)。 Private Command1_Click() Dim CommData as String Specify a 10 character block of data. MSComm1.InputLen = 10 Read data. CommData = MSComm1.Input End Sub InputMode屬性 設(shè)置和返回Input屬性所檢取數(shù)據(jù)的類(lèi)型。 應(yīng)用于 MSComm控件。 語(yǔ)法 object.InputMode [=value] InputMode屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 value 一個(gè)值或常量,指定輸入模式,如“設(shè)置”中所示 設(shè)置 value 值的設(shè)置如下: 常量值描述 comInputModeText 0 (缺?。㊣nput 屬性檢取的數(shù)據(jù)是文本 comInputModeBinary 1 Input屬性檢取的數(shù)據(jù)是二進(jìn)制數(shù)據(jù) 說(shuō)明 InputMode 屬性確定了如果通過(guò)Input 屬性檢取數(shù)據(jù)。數(shù)據(jù)將被看作字符串或一個(gè)二進(jìn)制字節(jié)矩陣。 對(duì)于使用ANSI 字符集的數(shù)據(jù)應(yīng)使用comInputModeText 類(lèi)型。所有其他數(shù)據(jù)如內(nèi)嵌控制字符、Null等都使用 comInputModeBinary類(lèi)型。 示例 下面的例子從通信端口中讀取了10字節(jié)的二進(jìn)制數(shù)據(jù)并分配給一個(gè)矩陣。 Private Sub Command1_Click() Dim Buffer as Variant Dim Arr() as Byte Set and open port MSComm1.CommPort = 1 MSComm1.PortOpen = True Set InputMode to read binary data MSComm1.InputMode = comInputModeBinary Wait until 10 bytes are in the input buffer Do Until MSComm1.InBufferCount 10 DoEvents Loop Store binary data in buffer Buffer = MSComm1.Input Assign to byte array for processing Arr = Buffer End Sub NullDiscard屬性 確定是否將null字符傳輸給接收緩沖區(qū)。 應(yīng)用于 MSComm控件。 語(yǔ)法 object.NullDiscard [=value] NullDiscard屬性的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 value 一個(gè)布爾表達(dá)式,確定是否將端口來(lái)的Null 字符發(fā)送給接收緩沖區(qū),如“設(shè)置”中所示 設(shè)置 value 值的設(shè)置如下: 設(shè)置描述 True 不把端口來(lái)的Null 字符傳輸給接收緩沖區(qū) False (缺?。⒍丝趤?lái)的Null字符傳輸給接收緩沖區(qū) 說(shuō)明 Null字符定義為ASCII字符0──Chr$(0)。 數(shù)據(jù)類(lèi)型 Boolean OnComm事件 當(dāng)CommEvent 屬性值改變時(shí)產(chǎn)生該事件,表明產(chǎn)生了通信事件或通信錯(cuò) 誤。 應(yīng)用于 MSComm控件。 語(yǔ)法 Private Sub object_OnComm() OnComm事件的語(yǔ)法有如下幾個(gè)部分: 部分描述 object 對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象 說(shuō)明 CommEvent 屬性捕獲了OnComm 產(chǎn)生事件或錯(cuò)誤的代碼。注意,將 RThreshold 或Sthreshold 屬性置為0 將不捕獲comEvReceive 和comEvSend 事件。 示例 下面的例子演示了如何處理通信錯(cuò)誤和事件。你可以在Case 語(yǔ)句的后面插入代碼處理相應(yīng)的錯(cuò)誤或事件。 Private Sub MSComm_OnComm () Select Case MSComm1.CommEvent Handle each event or error by placing code |