當前位置:編程學習大全網 - 源碼下載 - VC6.0下MSComm控件的使用

VC6.0下MSComm控件的使用

MSComm控件屬性的秘密

MSComm控件的屬性

(必須熟悉的幾個-commport:設置並返回通信端口號;設置:以字符串形式設置並返回數據傳輸速率、奇偶校驗、數據位和停止位;PortOpen:設置並返回通信端口的狀態,也可以打開和關閉端口;輸入:從接收緩沖區返回和刪除字符;輸出:設置壹個字符串到傳輸緩沖區)

1)通信屬性

void SetCommPort(短nnew value);short GetCommPort();

此屬性設置並返回連接的串行端口號,Windows將使用該端口號與外界通信。在設計時,nNewValue可以設置為1到16之間的任何數字(默認值為1)。但是,如果使用PortOpen屬性打開了壹個不存在的端口,MSComm控件將生成錯誤68(無效設備)。

註意:必須在打開端口之前設置CommPort屬性。

2)設置屬性

void設置(LPCTSTR lpszNewValue);string get settings();

該屬性用於設置和返回數據傳輸速率、奇偶校驗、數據位和停止位參數。當端口打開時,如果值非法,MSComm控件將生成錯誤380(非法屬性值)。其中,lpszNewValue表示為壹個字符串,由四個設定值組成,組成格式如下:

BBBB,博士,碩士

BBBB是數據傳輸速率,P是奇偶校驗,D是數據位,S是停止位。Value的默認值為“9600,N,8,1”,數據傳輸速率的合法值可以是110,300,600,1200,2400,4800,9600,1444。

奇偶校驗值可以是下表中設置的任何值。

設定點描述

e-偶數檢查(偶數)

m標簽檢查(標記)

無檢查(無)

o奇數奇偶校驗(奇數)

■空間檢查(空間)

數據位的數量可以是4、5、6、7和8。

停止位數可以是1、1.5和2。

註意:只有當通信雙方的設置屬性值相同時,通信連接才能生效。

3)握手屬性

此屬性用於設置或返回硬件握手協議,即PC和通信設備之間設置的控制流量的內部協議。屬性值可以設置為下列任何壹個表。

設定值描述

ComNone0默認值,無握手協議。

Comxonxoff1x0n/xoff握手

ComRTS 2RTS/CTS握手

ComRtsXOnXOff3 RTS/CTS和XON/XOFF可以握手。

4)閾值屬性

void SetRThreshold(短nnew value);short GetRThreshold();

在MSComm控件將CommEvent屬性設置為comEvReceive並生成OnComm之前,由RThreshold屬性設置並返回的要接收的字符數。這裏,nNewValue是壹個短參數,它描述在生成OnComm事件之前要接收的字符數。

當接收到壹個字符時,如果RThreshold屬性設置為0(默認值),則不會生成OnComm事件。否則,該屬性是壹個閾值,當接收緩沖區中的字節數達到或超過該值時,將會生成壹個OnComm事件。例如,如果RThreshold設置為1,則接收緩沖區中接收的每個字符都將導致MSComm控件生成壹個OnComm事件。

5)CTSHolding屬性

void SetCTSHolding(BOOL bNewValue);BOOL GetCTSHolding();

屬性設置值如下表所示。

設定點功能描述

TRUECTS線很高。

真實cts線低。

此屬性通過查詢CTS線路的狀態來確定是否可以發送數據。CTS是調制解調器向連接的計算機發送的信號,表示可以進行傳輸。該屬性在設計時無效,在運行時是只讀的。

如果CTS線為低(CTSHolding =

FALSE)並且發生超時,MSComm控件將CommEvent屬性設置為comEventCTSTO(清除發送

超時)並生成壹個OnComm事件。CTS線路用於RTS/CTS硬件握手。如果需要確定CTS線路的狀態,CTSHolding屬性給出了壹個手動查詢的方法。

6)閾值屬性

void SetSThreshold(短nnew value);short gets threshold();

在將CommEvent屬性設置為comEvSend並生成OnComm事件之前,MSComm控件設置並返回傳輸緩沖區中允許的最小字符數。這裏的nNewValue是短數據,表示在生成OnComm事件之前,傳輸緩沖區中的最小字符數。

如果Sthreshold屬性設置為0(默認值),則數據傳輸事件不會生成OnComm事件。如果Sthreshold屬性設置為0,則當傳輸緩沖區完全為空時,MSComm控件將生成壹個OnComm事件。如果傳輸緩沖區中的字符數小於值,則CommEvent屬性設置為comEvSend,並生成壹個OnComm事件。當字符數超過閾值時,comEvSend事件僅被激活壹次。例如,如果Sthreshold等於5,則只有當輸出隊列中的字符數從5減少到4時,comEvSend才會發生。如果輸出隊列中的字符數從未超過Sthreshold,則comEvSend事件將永遠不會發生。

7)輸入模式屬性

void SetInputMode(long nnew value);long GetInputMode();

訪問屬性用於設置或返回傳輸數據的類型。其值和基本含義如下表所示。

設定值描述

ComInputModeText(默認值)0通過Input屬性以文本形式檢索數據。

ComInputModeBinary1通過Input屬性檢索二進制形式的數據。

8)輸入屬性

void SetInputLen(短nnew value);short GetInputLen();

此屬性用於設置和返回輸入屬性從接收緩沖區讀取的字符數。NNewValue是壹個短值,描述輸入屬性從接收緩沖區讀取的字符數。

InputLen屬性的默認值為0。當InputLen設置為0時,使用Input將使MSComm控件讀取接收緩沖區中的所有內容。如果接收緩沖區中的輸入字符無效,則Input屬性返回零長度字符串(" ")。在使用Input之前,用戶可以選擇檢查InBufferCount屬性,以確定緩沖區中是否有所需數量的字符。當從輸出格式為固定長度數據的機器中讀取數據時,該屬性非常有用。

9)InBuffersize屬性

void SetBufferSize(短nnew value);short GetInBufferSize();

InBuffersize屬性用於設置或返回輸入緩沖區的大小。默認值是1024字節。

10)InBufferCount屬性

void SetInBufferCount(短nnew value);短的

GetInBufferCount();

InBufferCount屬性用於返回輸入緩沖區中等待讀取的字節數,通過將屬性值設置為0可以清除接收緩沖區。

11)輸入屬性

VARIANT GetInput();

Input屬性指示從接收緩沖區中移除壹個字符串,並將緩沖區中接收的數據讀入壹個變量。屬性值是壹個VARIAN變量。當端口未打開並且在運行時為只讀時,此屬性不可用。

註意:當InputMode屬性值

當它為0(文本模式)時,變量包含字符串數據。當InputMode屬性值為1(二進制模式)時,變量包含字節數組數據。

12)端口打開屬性

void SetPortOpen(BOOL bNewValue);BOOL GetPortOpen();

PortOpen屬性用於打開或關閉端口。如果bNewValue設置為TRUE,則可以打開端口;當設置為FALSE時,端口可以關閉。

通常,端口在程序開始時打開,在程序結束時關閉。當應用程序終止時,MSComm控件將自動關閉字符串。

嘴巴。在打開端口之前,請確保將CommPort屬性調整到正確的端口號。此外,用戶的串行設備必須支持設置屬性中的設置。如果硬件設備不支持設置屬性中的某些設置,硬件可能無法正常工作。

13)OutBuffersize屬性

void SetOutBufferSize(短nnew value);

OutBuffersize屬性用於設置或返回發送緩沖區的大小。該值是壹個整數表達式,表示傳輸緩沖區中的字節數。默認值是512字節。發送緩沖區設置得越大,應用程序可以使用的內存就越少。但是,如果發送緩沖區太小,除非使用握手協議,否則緩沖區會溢出。

14)外部緩沖計數器屬性

void SetOutBufferSize(短nnew value);短的

GetOutBufferSize();

OutBufferCounter屬性用於返回發送緩沖區中等待發送的字節數。通過將該屬性設置為0,可以清空發送緩沖區。

15)輸出屬性

無效輸出(常量變量& ampnew value);

Output屬性用於將數據流寫入發送緩沖區。該屬性是壹個變量。當端口未打開時,此屬性不可用,並且僅在運行時寫入。

註意:Output屬性可以發送文本數據或二進制數據。傳輸文本數據時,字符類型應為

將數據放入變量中;傳輸二進制數據(即按字節)時,字節數據要放入變量變量中。如果您通常向應用程序發送ANSI字符串,則可以將其作為文本發送。如果數據包含嵌入的控制字符、空字符等。,它必須以二進制形式傳遞。

16)CommEvent屬性

short GetCommEvent();

如果在通信過程中發生錯誤或事件,它將引發OnComm事件並更改其屬性值。CommEvent的屬性值反映了錯誤或事件的類型,在通信的設計中可以根據這個屬性值進行同樣的操作。當端口未打開並且在運行時為只讀時,此屬性不可用。通信錯誤和通信事件的設定值分別如以下兩個表所示。

通信錯誤設定值

設定值描述

ComEventBreak 1001收到壹個中斷信號。

ComEventCTSTO1002CTS超時

ComEventDSRTO1003DSR超時

ComEventFrame1004幀錯誤,當硬件檢測到壹個幀錯誤,雙方設置的格式不壹致時,就會造成這個錯誤。

ComEventOverrun1006端口超速。壹個字符在下壹個字符到達之前沒有被硬件讀取,該字符就丟失了。

ComEventCDTO 1007數據檢測超時。

comeventrcover 1008接收緩沖區溢出

ComEventRxParity1009奇偶校驗錯誤

ComEventTxFull1010傳輸緩沖區溢出,表示輸出緩沖區已滿,字符無法再輸出到緩沖區。

comeventdcb 1011檢索端口和設備控制塊(dcb)時出現意外錯誤。

通信事件設定值

設定值描述

ComEvSend1發送壹個事件。發送緩沖區的內容小於SThreshold指定的值。

ComEvReceive2接收事件。接收緩沖區中的字符數達到RThreshold的值,此事件將繼續發生,直到緩沖區中的數據被刪除。這個事件可以用來寫接收數據的過程。

ComEvCTS3CTS行更改

ComEvDSR4DSR線路變更

ComEvCD5CD行更改

來電6振鈴檢測

ComEvEOF7文件結束。文件結束(ASCII碼26)字符出現在接收的數據中。

17)DTREnable屬性

void SetDTREnable(BOOL bNewValue);BOOL GetDTREnable();

DTREnable屬性確定DTR線在通信過程中是否有效。DTR是計算機發送給調制解調器的信號,表示計算機正在等待數據傳輸。

18)RTSEnable屬性

void SetRTSEnable(BOOL bNewValue);BOOL GetRTSEnable();

RTSEnable屬性確定RTS行是否有效。通常,計算機會向連接的調制解調器發送RTS信號,請求發送數據的許可。

19)可防禦屬性

void SetEOFEnable(BOOL bNewValue);BOOL GetEOFEnable();

EOFEnable屬性確定MSComm控件在輸入過程中是否查找文件尾(EOF)字符。如果找到EOF字符,輸入將停止,OnComm事件將被激活。此時,CommEvent屬性被設置為comEvEOF,其中bNewValue是壹個布爾表達式,它決定在找到EOF字符時是否激活OnComm事件。當bNewValue設置為TRUE時,當找到EOF字符時,OnComm事件被激活。否則,當值設置為。

FALSE(默認值),當找到EOF字符時,不會激活OnComm事件。

註意:當EOFEnable屬性設置為FALSE時,OnComm控件不會在輸入流中查找EOF字符。

20)CDHolding屬性

void setcd holding(BOOL bNewValue);BOOL getcd holding();

通過查詢CD線路的狀態來確定當前是否有傳輸。CD是從調制解調器發送到連接的計算機的信號,表示調制解調器在線。該屬性在設計時無效,在運行時是只讀的。該屬性的設置值為:當bNewValue為真時,CD線為高;當bNewValue為假時,CD線為低。請註意,當CD行為高電平(CDHolding=TRUE)且超時時,MSComm控件會將CommEvent屬性設置為comEventCDTO(CD超時錯誤)並生成壹個OnComm事件。

註意:在宿主應用程序(如公告板)中捕獲丟失的傳輸尤其重要,因為呼叫者可以隨時掛斷(放棄傳輸)。CD也稱為接收。

線路信號檢測(RLSD).

21)DSRHolding屬性

void SetDSRHolding(BOOL bNewValue);BOOL GetDSRHolding();

確定DSR線的狀態。DSR信號由調制解調器發送到所連接的計算機,表明它已準備好運行。該屬性在設計時無效,在運行時是只讀的。當DSRHolding屬性返回TRUE時,表示DSR線高,返回FALSE時,表示DSR線低。當DSR線為高電平(DSRHolding=TRUE)且超時時,MSComm控件將CommEvent屬性設置為comEventDSRTO,並生成壹個OnComm事件。當DTE(數據)

終端設備)機編寫DSR/DTR握手例程時,這個屬性非常有用。

  • 上一篇:為什麽MAS發短信提交後會提示登錄超時?
  • 下一篇:流年運勢2024測算
  • copyright 2024編程學習大全網