技術頻道

      MSComm控件的使用方法(232通訊用)

      MSComm控件
      MSComm 控件為應用程序提供了串口通信功能,該應用程序允許通過串口發送和接收數據。
      語法
      MSComm
      說明
      MSComm控件提供了兩種處理通信的方法:
      *事件驅動通信,是一種功能很強的處理串口活動的方法。在大多數情況下,用戶需要獲知事件發生的時間,例如,在CD(Carrier Detect)線或RTS(Request To Send)線上有字符到達或發生了改變等。在這種情況下,使用MSComm 控件的OnComm 事件捕獲和處理這些通信事件。OnComm也可以捕獲和處理通信中的錯誤。要獲取所有事件和通信錯誤的完整清單,請參閱CommEvent屬性。
      *用戶也可以在每個重要的程序功能之后檢查CommEvent 屬性的值來檢測事件和通信錯誤。這對小的自含程序可能比較常用。例如,如果編寫一個簡單的電話撥號程序,那么在接收了每個字符后都產生一個事件并沒有意義,因為你只打算從調制解調器中接收OK響應信息。
      使用的每個MSComm 控件都與一個串口對應。如果在應用程序中需要訪問多個串口,必須使用多個MSComm 控件。可以在Windows 控制面板中修改串口地址的中斷地址。
      雖然MSComm控件有許多很重要的屬性,但應先熟悉下面幾個屬性:
      屬性描述
      CommPort 設置或返回通信端口號
      Settings 以字符串的形式設置或返回波特率、奇偶校驗、數據位和停止位
      PortOpen 設置或返回通信端口的狀態。也可以打開和關閉端口
      Input 返回和刪除接收緩沖區中的字符
      Output 將字符串寫入發送緩沖區
      示例
      下面的例子演示了使用調制解調器進行基本的通信。
      Private Sub Form_Load ()
      Buffer to hold input string
      Dim Instring As String
      Use COM1.
      MSComm1.CommPort = 1
      9600 baud, no parity, 8 data, and 1 stop bit.
      MSComm1.Settings = “9600,N,8,1”
      Tell the control to read entire buffer when Input
      is used.
      MSComm1.InputLen = 0
      Open the port.
      MSComm1.PortOpen = True
      Send the attention command to the modem.
      MSComm1.Output = “ATVtQ0”& + Chr$(13) Ensure that
      the modem responds with “OK”
      Wait for data to come back to the serial port.
      Do
      DoEvents
      Buffer$ = Buffer$ MSComm1.Input
      Loop Until InStr (Buffer$, “OK” & vbCRLF)
      Read the “OK” response data in the serial port.
      Close the serial port.
      MSComm1.PortOpen = False
      End Sub
      注意:MSComm 控件可以使用查詢或事件驅動的方法從串口接收數據。本例使用了查詢的方法。對于事件驅動方法的例子,請參閱OnComm 事件的幫助。
      Break屬性
      設置或清除斷開信號狀態。在設計時該屬性不可用。
      語法
      object.Break [=value]
      Break屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個布爾表達式,指明是否設置斷開信號狀態,如“設置”中所示
      設置
      vlaue 值的設置如下:
      設置描述
      True 設置斷開信號狀態
      False 清除斷開信號狀態
      說明
      當設置為True 時,Break 屬性就發送一個斷開信號。斷開信號將停止字符發送,將發送線置為斷開狀態,直到將Break屬性置為False。通常,為短時間區以及只有當用于通信的設備需要設置斷開狀態時才設置斷開狀態。
      數據類型
      Boolean。

      示例
      下面的例子演示了如何發送十分之一秒的斷開信號。
      Set the Break condition.
      MSComm1.Break = True
      Set duration to 1/10 second.
      Duration! = Timer + .1
      Wait for the duration to pass.
      Do Until Timer > Duration!
      Dummy = DoEvents()
      Loop
      Clear the Break condition.
      MSComm1.Break = False
      CDHolding屬性
      通過檢查CD 線的狀態來查詢是否有載波。CD(Carrier Detect,載波檢測)是調制解調器發送給連接計算機的指示調制解調器在線的信號。該屬性在設計時不可用,在運行時是只讀的。
      語法
      object.CDHolding
      CDHolding屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      設置
      CDHolding屬性的設置如下:
      設置描述
      True CD線高
      False CD線低
      說明
      當CD線高(CDHolding = True)并超時,MSComm控件就將CommEvent屬性設置為commEventCDTO(Carrier Detect Timeout Error),并產生一個OnComm事件。CD也稱為RLSD(Receive Line Singal Detect,接收線信號檢測)。
      注意:尤其要注意的是,在主機應用程序比如電子公告板中要偵測載波信號的丟失問題,因為呼叫者隨時都有可能掛起。
      數據類型:
      Boolean。

      CommEvent 屬性
      返回最近的通信事件或錯誤。該屬性在設計時不可用,在運行時是只讀的。
      語法
      object.CommEvent
      CommEvent屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      說明
      盡管通信事件或錯誤都產生OnComm 事件,但CommEvent 屬性中包含了事件或錯誤的代碼。要確定導致OnComm 事件的實際錯誤或事件,必須引用CommEvent屬性。
      CommEvent 屬性為通信事件或錯誤返回下列值之一。在該控件的對象庫中也可以找到這些常量。
      通信錯誤包含了下面的設置:
      常量值描述
      ComEventBreak 1001 收到了斷開信號
      ComEventCTST
      O
      1002 Clear To Send Timeout。在發送字符時,在系統指定的事件內,CTS(Clear To Send)線是低電平ComEventDSRT
      O
      1003 Data Set Ready Timeout。在發送字符時,在系統指定的事件內,DSR(Data Set Ready)線是低電平ComEventFrame 1004 數據幀錯誤。硬件檢測到一個數據幀錯誤ComEventOverru
      n
      1006 端口溢出。硬件中的字符尚未讀,下一個字符又到達,并且丟失
      ComEventCDTO 1007 Carrier Detect Time。在發送字符時,在系統指定的事件內,CD(Carrier Detect)線是低電平。CD也稱為RLSD(Receive Line Singal Detect,接收線信號檢測)ComEventRxOve
      r
      1008 接收緩沖區溢出。在接收緩沖區中沒有空間
      ComEventRxPari
      ty
      1009 奇偶校驗錯。硬件檢測到奇偶校驗錯誤
      續表
      ComEventTxFull 1010 發送緩沖區滿。在對發送字符排隊時,發送緩沖區滿ComEventDCB 1011 檢取端口DCB(Device Control Blick)時發生了沒有預料到的錯誤
      通信事件包含了下面的設置:
      常量值描述
      ComEvSend 1 發送緩沖區中的字符數比Sthreshold值低ComEvRecei
      ve
      2 接收到了Rthreshold 個字符。持續產生該事件,直到使用了Input屬性刪除了接收緩沖區中的數據ComEvCTS 3 CTS(Clear To Send)線改變
      ComEvDSR 4 DSR(Data Set Ready)線改變。當DSR 從1 到0 改變時,該事件發生ComEvCD 5 CD(Carrier Detect)線改變ComEvRing 6 檢測到響鈴信號。一些URAT(Universal Asynchronous Reciver-Transmitters,通用異步收發器)不支持該事件ComEvEOF 7 收到了EOF字符(ASCII字符26)
      數據類型
      Integer。
      CommID屬性
      返回標識通信設備的句柄。該屬性在設計時不可用,在運行時是只讀的。
      語法
      object.CommID
      CommID屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      說明
      該值與Windows API 函數CreateFile 返回值是一樣的。在Windows API 中調用任何通信例程都使用該值。
      數據類型
      Long

      CommPort屬性
      返回或設置通信端口號。
      語法
      object.CommPort [=value]
      CommPort屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 指定端口號的整數
      說明
      在設計時,可以將value 置為1 到16 之間的整數(缺省為1)。然而,當試圖使用PortOpen 屬性打開一個不存在的端口號時,MSComm 控件就產生68
      錯誤(Device unavilable)。
      警告:必須在打開端口前設置CommPort屬性。
      數據類型
      Integer。
      CTSHolding屬性
      檢查CTS(Clear To Send)線的狀態,確定是否可以發送數據。通常,調制解調器給連接的計算機發送CTS 信號,指明正在處理發送過程。該屬性在設計時不可用,在運行時是只讀的。
      語法
      object.CTSHolding
      CTSHolding屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      CTSHolding屬性的設置如下表所示:
      設置描述
      True CTS(Clear To Send)線高
      False CTS(Clear To Send)線低
      說明
      當CTS線低(CTSHolding = False)并超時,MSComm控件就設置CommEvent
      屬性為comEventCTSTO(Clear To Send Timout)并激活OnComm事件。
      在RTS/CTS( Request To Send / Clear To Send)硬件握手中使用CTS線。如果需要確定CTS線的狀態,可以使用CTSHolding屬性手動查詢。
      要獲取更多信息或握手協議,請參閱Handshaking屬性。
      數據類型
      Boolean
      DSRHolding屬性
      確定DSR(Data Set Ready)線的狀態。通常,調制解調器給連接的計算機發送CTS信號,指明準備就緒。該屬性在設計時不可用,在運行時是只讀的。
      語法
      object.DSRHolding
      object置換元表示一個對象表達式,其值為“應用于”列表中的一個對象。
      DSRHolding屬性返回如下值:
      值描述
      True DSR(DataSetReady)線高
      False DSR(DataSetReady)線低
      說明
      當DSR線高(DSRHolding = False)并超時,MSComm控件設置CommEvent
      屬性為comEventDTSTO(Data Set Ready Timeout)并激活OnComm事件。
      在為DTE(Data Terminal Equipment)計算機編寫DSR/DTR(Data Set Ready/Data Terminal Equipment )握手例程時,該屬性很有用。
      數據類型
      Boolean

      DRTEnable 屬性
      確定在通信過程中是否使用DTR(Data Terminal Ready)線。通常,DTR 信號是計算機發送給調制解調器的,指明計算機可以接收輸入數據了。
      語法
      object.DTREnable [=value]
      DTREnable屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個布爾表達式,指定是否使用DTR線,如“設置”中所示
      設置
      value 值的設置如下:
      設置描述
      True 使用DTR線
      False (缺省)禁止DTR線
      說明
      當DTREnable屬性設置為True時,如果端口打開,DTR線被設置為高(on),
      如果端口關閉,DTR線被設置為低(off)。
      注意:在大多數情況下,將DTR線設置為低將掛起電話。
      數據類型
      Boolean
      EOFEnable屬性
      EOFEnable 屬性確定MSComm 控件是否檢查輸入中的EOF 字符。如果發現了EOF 字符,停止輸入,將把CommenEvent 屬性置為comEvEOF,激活OnComm事件。
      語法
      object.EOFEnable [=value]
      EOFEnable屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個布爾表達式,指定發現了EOF 字符時是否觸發OnComm 事件,如“設置”所示
      設置
      value 設置如下:
      設置描述
      True 當發現EOF字符時就觸發On Comm事件
      False (缺省值)當發現EOF字符時不觸發On Comm事件
      說明
      當EOFEnable屬性設置為False時,控件將不在輸入流中掃描EOF字符。
      Error 消息(MSComm控件)
      下表列出了MSComm控件可捕獲的錯誤消息:
      常量值描述
      ComInvalidPropertyVal
      ue
      380 無效的屬性值
      ComSetNotSupported 383 屬性只讀
      ComGetNotSupported 394 屬性只讀
      ComPortOpen 8000 端口打開時該存在無效
      8001 超時設置必須比0 值大
      ComPortInvalid 8002 無效的端口號
      8003 屬性只在運行時有效
      8004 屬性在運行時是只讀的
      ComPortAleadyOpen 8005 端口已經打開
      8006 設備標識符無效或不支持
      8007 不支持設備的波特率
      8008 指定的字節大小無效
      8009 缺省參數錯誤
      8010 硬件不可用(被其他設備鎖住)
      8011 函數不能分配隊列
      ComNoOpen 8012 設備沒有打開
      8013 設備已經打開
      8014 不能使用通信通知
      續表
      ComSetCommStateFaile
      d
      8015 不能設置通信狀態
      8016 不能設置通信事件屏蔽
      ComPortNotOpen 8018 該存在只在端口打開是有效
      8019 設備忙
      ComReadError 8020 通信設備讀錯誤
      ComDCBError 8021 檢取端口設備控制塊時出現內部錯誤
      Handshaking屬性
      設置或返回硬件握手協議。
      語法
      object.Handshaking [=value]
      Handshaking屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個整數表達式,指定握手協議,如“設置”中所示
      設置
      value 值的設置如下:
      設置值描述
      comNone 0 (缺省)沒有握手協議
      ComXOnXOff 1 XON/XOFF握手協議
      ComRTS 2 RTS/CTS(Request To Send / Clear To Send)握手協議
      ComRTSXOnXOff 3 RTS和XON/XOFF協議
      說明
      握手協議是指從硬件端口向接收緩沖區傳輸數據時使用的內部通信協議。
      當一個字符數據到達串口時,通信設備必須將其移動到接收緩沖區,使應用程序可以讀取數據。如果沒有接收緩沖區而應用程序希望直接從硬件讀取每個字符,你將可能丟失數據,因為數據到達的速度很快。
      握手協議保證緩沖區溢出時不丟失沒有數據,到達串口的數據將被通信設備很快地移動到接收緩沖區中。
      數據類型
      Integer

      InBufferCount屬性
      返回在接收緩沖區中等待的字符數。該屬性在設計時不可用。
      語法
      object.InBufferCount [=value]
      InBufferCount屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個整數表達式,指定在接收緩沖區中等待的字符數
      說明
      InBufferCount 是指已被接收到接收緩沖區、等待應用程序讀取的字符數。
      將InBufferCount設置置為0將清除接收緩沖區。
      注意:不要將該屬性與InBufferize 屬性混淆。InBufferSize 屬性
      反映的是接收緩沖區總的大小。
      數據類型
      Integer

      InBufferSize屬性
      設置或返回接收緩沖區大小的字節數。
      語法
      object.InBufferSize[=value]
      InBufferSize屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個整數表達式,指定接收緩沖區大小的字節數
      說明
      InBufferSize 是指整個接收緩沖區的大小。缺省是1024 個字節。不要將該屬性與反映等待應用程序讀取字符數的nBufferCount屬性混淆。
      注意:對接收緩沖區設置的越大,應用程序可以使用的內存就越少。
      然而,如果接收緩沖區太小,緩沖區將會溢出,除非使用握手協議。通常,將緩沖區設置為1024。如果發生了溢出,就增大該緩沖區,以滿足應用程序傳輸速率。
      數據類型
      Integer

      Input屬性
      返回或刪除接收緩沖區中的數據流。該屬性在設計時不可用,在運行時是只讀的。
      語法
      object.Input
      Input屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      說明
      InputLen屬性確定了Input屬性讀入的字符數。將InputLen 屬性設置為0將導致Input屬性讀入整個接收緩沖區

      的內容。
      InputMode 屬性確定了Input 屬性檢取數據的類型。如果InputMode 設置為comInputModeText,則Input屬性將返回Variant類型的文本數據。如果InputMode屬性設置為comInputModeBinary,則Input 屬性返回一個Variant

      類型的二進制
      字節矩陣。
      數據類型
      Variant
      示例
      下面的例子演示了如何從接收緩沖區中檢取數據。
      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屬性
      設置和返回Input屬性從接收緩沖區中讀取的字符數。
      應用于
      MSComm控件。
      語法
      object.InputLen [=value]
      InputLen屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象value 一個整數表達式,指定Input 屬性從接收緩沖區中讀取的字符數
      說明
      InputLen 屬性的缺省值是0。將InputLen 屬性設置為0 將導致Input 屬性讀入整個接收緩沖區的內容。
      如果接收緩沖區中沒有可讀的字符,就返回空字符串。在使用Input 之前,用戶可以檢查InBufferCount的值,以便確定是否讀取了所要求的字符數。
      從輸出格式固定的計算機讀取定長數據塊時該屬性很有用。
      數據類型
      Integer
      示例
      下面的例子演示了如何檢取10個字符的數據。
      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屬性
      設置和返回Input屬性所檢取數據的類型。
      應用于
      MSComm控件。
      語法
      object.InputMode [=value]
      InputMode屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個值或常量,指定輸入模式,如“設置”中所示
      設置
      value 值的設置如下:
      常量值描述
      comInputModeText 0 (缺省)Input 屬性檢取的數據是文本
      comInputModeBinary 1 Input屬性檢取的數據是二進制數據
      說明
      InputMode 屬性確定了如果通過Input 屬性檢取數據。數據將被看作字符串或一個二進制字節矩陣。
      對于使用ANSI 字符集的數據應使用comInputModeText 類型。所有其他數據如內嵌控制字符、Null等都使用comInputModeBinary類型。
      示例
      下面的例子從通信端口中讀取了10字節的二進制數據并分配給一個矩陣。
      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字符傳輸給接收緩沖區。
      應用于
      MSComm控件。
      語法
      object.NullDiscard [=value]
      NullDiscard屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個布爾表達式,確定是否將端口來的Null 字符發送給接收緩沖區,如“設置”中所示
      設置
      value 值的設置如下:
      設置描述
      True 不把端口來的Null 字符傳輸給接收緩沖區
      False (缺省)將端口來的Null字符傳輸給接收緩沖區
      說明
      Null字符定義為ASCII字符0──Chr$(0)。
      數據類型
      Boolean
      OnComm事件
      當CommEvent 屬性值改變時產生該事件,表明產生了通信事件或通信錯誤。
      應用于MSComm控件。
      語法
      Private Sub object_OnComm()
      OnComm事件的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      說明
      CommEvent 屬性捕獲了OnComm 產生事件或錯誤的代碼。注意,將RThreshold 或Sthreshold 屬性置為0 將不捕獲comEvReceive 和comEvSend 事件。
      示例
      下面的例子演示了如何處理通信錯誤和事件。你可以在Case 語句的后面插入代碼處理相應的錯誤或事件。
      Private Sub MSComm_OnComm ()
      Select Case MSComm1.CommEvent
      Handle each event or error by placing
      code below each case statement
      Errors
      Case comEventBreak A Break was received.
      Case comEventCDTO CD (RLSD) Timeout.
      Case comEventCTSTO CTS Timeout.
      Case comEventDSRTO DSR Timeout.
      Case comEventFrame Framing Error
      Case comEventOverrun Data Lost.
      Case comEventRxOver Receive buffer overflow.
      Case comEventRxParity Parity Error.
      Case comEventTxFull Transmit buffer full.
      Case comEventDCB Unexpected error retrieving DCB]
      Events
      Case comEvCD Change in the CD line.
      Case comEvCTS Change in the CTS line.
      Case comEvDSR Change in the DSR line.
      Case comEvRing Change in the Ring Indicator.
      Case comEvReceive Received RThreshold # of
      chars.
      Case comEvSend There are SThreshold number of
      characters in the transmit
      buffer.
      Case comEvEof An EOF charater was found in
      the input stream
      End Select
      End Sub
      OutBufferCount 屬性
      返回在發送緩沖區中等待的字符數。你可以使用該屬性清除發送緩沖區。
      該屬性在設計時不可用。
      應用于MSComm控件。
      語法
      object.OutBufferCount [=value]
      OutBufferCount屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個整數表達式,指定發送緩沖區中等待的字符數
      說明
      將OutBufferCount屬性置為0將清除發送緩沖區。
      注意:不要將OutBufferCount屬性與OutBufferSize屬性混淆起來。
      數據類型
      Integer

      OutBufferSize 屬性
      返回或設置發送緩沖區的字節大小。
      應用于
      MSComm控件。
      語法
      object.OutBufferSize [=value]
      OutBufferSize屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個整數表達式,指定發送緩沖區的字節大小
      說明
      OutBufferSize 指整個發送緩沖區的大小。缺省值是512 字節。不要將該屬性與OutBufferCount 屬性混淆起來,OutBufferCount 屬性反映的是發送緩沖區當前等待的字節數。
      注意:對發送緩沖區設置的越大,應用程序可以使用的內存就越少。
      然而,如果你的發送緩沖區太小,緩沖區將會溢出,除非使用握手協議。
      通常,將緩沖區設置為512 字節。如果發生了溢出,就增大該緩沖區,以滿足你的應用程序傳輸速率。
      數據類型
      Integer

      Output屬性
      將數據寫入發送緩沖區。該屬性在設計時不可用,在運行時是只寫的。
      應用于
      MSComm控件。
      語法
      object.Output [=value]
      Output屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個字符串,是寫入發送緩沖區中的字符
      說明
      Output 屬性可以發送文本數據或二進制數據。要使用Output 屬性發送文本數據,你必須指明包含字符串的一個Variant 變量。要發送二進制數據,必須將包含字節矩陣的Variant變量傳遞給Output屬性。
      通常,如果你給應用程序發送ANSI 字符串,可以文本方式發送。如果數據包含了內嵌控制字符、Null字符等,必須將其作為二進制傳遞過去。
      數據類型
      Variant

      示例
      下面的例子演示了如何將用戶輸入的字符發送給串口。
      Private Sub Form_KeyPress (KeyAscii As Integer)
      Dim Buffer as Variant
      Set and open port
      MSComm1.CommPort = 1
      MSComm1.PortOpen = True
      Buffer = Chr$(KeyAscii)
      MSComm1.Output = Buffer
      End Sub

      ParityReplace 屬性
      設置或返回一個字符,該字符在方式了奇偶校驗錯誤時將替換數據流中的無效字符。
      應用于
      MSComm控件。
      語法
      object.ParityReplace [=value]
      ParityReplace屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 字符串表達式,表示替換字符,如“說明”中所示
      說明
      parity bit 是一個比特位,與指定的數據比特一起傳送,可以提供一定的錯誤檢測功能。
      當你使用奇偶校驗位時,MSComm 控件將數據中所有設置(即“1”)的比特位相加,來檢測結果的奇偶性(根據端口的奇偶設置)。
      缺省地,控件使用問號(“?”)替換無效字符。將ParityReplace 屬性設置為空字符串(....)將在奇偶校驗

      錯誤時不替換無效字符,但仍將CommEvent屬性設置為commEventRXParity并觸發OnComm事件。
      ParityReplace 字符是面向字節的操作,必須是單字節字符。你可以指定任意的0到255的ANSI字符作為替換字符。
      數據類型
      String

      PortOpen屬性
      設置或返回通信端口的狀態(打開或關閉)。在設計時該屬性不可用。
      應用于
      MSComm控件。
      語法
      object.PortOpen [=value]
      PortOpen屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個布爾表達式,指定通信端口的狀態
      說明
      將PortOpen 屬性設置為True 將打開端口。設置為False 將關閉端口并清除接收和發送緩沖區。當你的應用程序終止時,MSComm控件將自動關閉串口。
      在打開端口前,確定CommPort 屬性設置為正確的端口號。如果CommPort屬性設置為無效的端口號,在你試圖打開端口時,MSComm 控件將產生error68(Device unavailable)錯誤。
      而且,你的串口設備必須支持Settings 屬性中的設置。如果你的硬件設備不支持Settings屬性中的一些設置,則你的硬件工作或許不正確。
      如果端口在打開之前將DTREnable 或RTSEnable 屬性設置為True,則當端口關閉時這些屬性就自動設置為False。另外,DTR 和RTS 線保持它們原來的狀態。
      數據類型
      Boolean

      示例
      下面的例子打開端口1,波特率是9600,沒有奇偶校驗,8 個數據位,一個停止位。
      MSComm1.Settings = “9600, n, 8,1”
      MSComm1.CommPort = 1
      MSComm1.PortOpen =True

      RThreshold屬性
      設置或返回在MSComm 控件將CommEvent 屬性設置為comEvReceive 并在產生OnComm事件之前所接收的字符數。
      應用于MSComm控件。
      語法
      object.Rthreshold [=value]
      RThreshold屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個整數表達式,指定產生OnComm事件之前接收的字符數
      說明
      將RThreshold屬性設置為0(缺省)將在接收字符時不產生OnComm事件。
      例如,將RThreshold 屬性設置為1 將導致MSComm 控件在每個字符放入緩沖區時就觸發OnComm事件。
      數據類型
      Integer
      RTSEnable 屬性
      確定是否使用RTS(Request To Send)線。通常RTS信號是計算機發送該連接的調制解調器,請求準許發送數據。應用于MSComm控件。
      語法
      object. RTSEnable [=value]
      RTSEnable屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個布爾表達式,指定是否使用RTS線,如“設置”中所示
      設置
      value 值的設置如下:
      設置描述
      True 使用RTS線
      False (缺省)不使用RTS線
      說明
      當RTSEnable 屬性設置為True 時,打開端口將把RTS 線置為高,關閉端口將把RTS線置為低。
      在RTS/CTS 握手協議中使用RTS 線。如果你需要確定RTS 線的狀態,RTSEnable屬性允許你手工檢測該線。
      想了解有關握手協議中的更多信息,請參閱HardShaking屬性。
      數據類型
      Boolean

      Settings屬性
      設置或返回波特率、奇偶校驗、數據位和停止位參數。
      應用于MSComm控件。
      語法
      object.Settings [=value]
      Settings 屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個字符串表達式,代表通信端口設置,如下所示
      說明
      當端口打開時value 值設置不正確,MSComm 控件就產生error 380(Invalidproperty value)錯誤。
      value 由4部分組成,格式如下:
      “BBBB, P, D, S”
      BBBB 是波特率,P 是奇偶校驗,D 是數據位,S 是停止位。Value 的缺省值如下:
      " 9600, N, 8, 1"
      下表列出了有效的波特率:
      設置
      110
      300
      600
      1200
      2400
      9600(缺省)
      14400
      19200
      28800
      38400(保留)
      56000(保留)
      128000(保留)
      256000(保留)
      下表列出了有效的奇偶校驗值:
      設置描述
      E 偶校驗
      M 屏蔽
      N (缺省)None
      O 奇校驗
      S 空格
      下表列出了有效的數據位:
      設置
      4
      5
      6
      7
      8(缺省)
      下表列出了有效的停止位:
      設置
      1(缺省)
      1.5
      2
      數據類型
      String

      示例
      下面的例子將端口設置為波特率9600,沒有奇偶校驗,8 個數據位,一個停止位。
      MSComm1.Settings = “9600, N, 8, 1”

      SThreshold屬性
      設置或返回在MSComm控件將CommEvent 屬性設置為comEvSend 并產生OnComm事件之前所發送緩沖區中允許的最少字符數。
      應用于MSComm控件。
      語法
      object.Sthreshold [=value]
      SThreshold屬性的語法有如下幾個部分:
      部分描述
      object 對象表達式,其值是“應用于”列表中的一個對象
      value 一個整數表達式,指定產生OnComm 事件之前發送緩沖區中的最少字符數
      說明
      將SThreshold屬性設置為0(缺省)將在發送字符時不產生OnComm事件。
      例如,將SThreshold屬性設置為1將導致發送緩沖區完全變空。
      如果發送緩沖區中的字符比value 值小,則將CommEvent 屬性設置為comEvSend,并產生OnComm 事件。comEvSend 事件只產生一次,在字符數低于SThreshold 時。例如,如果SThreshold 等于5,當字符數從5 降低到4 時產生一次comEvSend事件。如果輸出隊列中的字符數總不多于SThreshold屬性值,則永不產生該事件。
      數據類型
      Integer

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 国产精品一区二区久久| 人妻体内射精一区二区三四| 少妇人妻精品一区二区三区| 日韩三级一区二区| 国产精品熟女一区二区| 日韩精品无码Av一区二区| 无码丰满熟妇浪潮一区二区AV | 国产人妖在线观看一区二区 | 亚洲一区在线观看视频| 亚洲av无码天堂一区二区三区| 51视频国产精品一区二区| 射精专区一区二区朝鲜| 无码国产精品一区二区免费式芒果| 红杏亚洲影院一区二区三区| 一区二区免费电影| 日韩社区一区二区三区| 国产一区二区三区四| 国产一区二区三区在线观看影院| 精品亚洲福利一区二区| 精品免费国产一区二区三区| 成人一区二区三区视频在线观看| 亚洲精品无码一区二区| 久久精品无码一区二区三区免费| 日本精品无码一区二区三区久久久 | 熟女性饥渴一区二区三区| 国产精品污WWW一区二区三区| 高清一区二区三区视频| 亚洲国产精品一区二区三区久久| 国产精品被窝福利一区 | 日本一区午夜爱爱| 中文字幕一区在线观看| 日本精品一区二区三区在线观看| 消息称老熟妇乱视频一区二区| 无码国产精品一区二区免费3p| 91在线视频一区| 成人精品一区二区不卡视频| 无码国产亚洲日韩国精品视频一区二区三区 | 极品少妇伦理一区二区| 日韩精品人妻一区二区中文八零| 久久99精品一区二区三区| 高清精品一区二区三区一区|