當前位置:編程學習大全網 - 源碼下載 - VB怎麽通過串口收發數據,謝謝,我是新手,希望能附上代碼,感激

VB怎麽通過串口收發數據,謝謝,我是新手,希望能附上代碼,感激

VB裏面有串口控件MSComm。 使用比較簡單的。

提供了兩種處理通信問題的方法:壹是事件驅動(Event-driven)方法,壹是查詢法。

1.MSComm控件兩種處理通訊的方式

MSComm控件提供下列兩種處理通訊的方式:事件驅動方式和查詢方式。

1.1 事件驅動方式

事件驅動通訊是處理串行端口交互作用的壹種非常有效的方法。在許多情況下,在事件發生時需要得到通知,例如,在串口接收緩沖區中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 線上壹個字符到達或壹個變化發生時。在這些情況下,可以利用 MSComm 控件的 OnComm 事件捕獲並處理這些通訊事件。OnComm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 CommEvent 屬性。在編程過程中,就可以在OnComm事件處理函數中加入自己的處理代碼。這種方法的優點是程序響應及時,可靠性高。每個MSComm 控件對應著壹個串行端口。如果應用程序需要訪問多個串行端口,必須使用多個 MSComm 控件。

1.2 查詢方式

查詢方式實質上還是事件驅動,但在有些情況下,這種方式顯得更為便捷。在程序的每個關鍵功能之後,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。如果應用程序較小,並且是自保持的,這種方法可能是更可取的。例如,如果寫壹個簡單的電話撥號程序,則沒有必要對每接收壹個字符都產生事件,因為唯壹等待接收的字符是調制解調器的“確定”響應。

2.MSComm 控件的常用屬性

MSComm 控件有很多重要的屬性,但首先必須熟悉幾個屬性。

CommPort 設置並返回通訊端口號。

Settings 以字符串的形式設置並返回波特率、奇偶校驗、數據位、停止位。

PortOpen 設置並返回通訊端口的狀態。也可以打開和關閉端口。

Input 從接收緩沖區返回和刪除字符。

Output 向傳輸緩沖區寫壹個字符串。

下面分別描述:

CommPort屬性:設置並返回通訊端口號。

語法 object.CommPort[value ] (value 壹整型值,說明端口號。)

說明 在設計時,value 可以設置成從 1 到 16 的任何數(缺省值為 1)。但是如果用 PortOpen 屬性打開壹個並不存在的端口時,MSComm 控件會產生錯誤 68(設備無效)。

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

RThreshold 屬性:在 MSComm 控件設置 CommEvent 屬性為 comEvReceive 並產生 OnComm 之前,設置並返回的要接收的字符數。

語法:object.Rthreshold [ = value ](value 整型表達式,說明在產生 OnComm 事件之前要接收的字符數。 )

說明:當接收字符後,若 Rthreshold 屬性設置為 0(缺省值)則不產生 OnComm 事件。例如,設置 Rthreshold 為 1,接收緩沖區收到每壹個字符都會使 MSComm 控件產生 OnComm 事件。

CTSHolding 屬性:確定是否可通過查詢 Clear To Send (CTS) 線的狀態發送數據。Clear To Send 是調制解調器發送到相聯計算機的信號,指示傳輸可以進行。該屬性在設計時無效,在運行時為只讀。

語法: object.CTSHolding(Boolean)

Mscomm 控件的 CTSHolding 屬性設置值:

True Clear To Send 線為高電平。

False Clear To Send 線為低電平。

說明:如果 Clear To Send 線為低電平 (CTSHolding = False) 並且超時時,MSComm 控件設置 CommEvent 屬性為 comEventCTSTO (Clear To Send Timeout) 並產生 OnComm 事件。

Clear To Send 線用於 RTS/CTS (Request To Send/Clear To Send) 硬件握手。如果需要確定 Clear To Send 線的狀態,CTSHolding 屬性給出壹種手工查詢的方法。

SThreshold 屬性: MSComm 控件設置 CommEvent 屬性為 comEvSend 並產生 OnComm 事件之前,設置並返回傳輸緩沖區中允許的最小字符數。

語法 object.SThreshold [ = value ] value 整形表達式,代表在 OnComm 事件產生之前在傳輸緩沖區中的最小字符數。

說明:若設置 Sthreshold 屬性為 0(缺省值),數據傳輸事件不會產生 OnComm 事件。若設置 Sthreshold 屬性為 1,當傳輸緩沖區完全空時,MSComm 控件產生 OnComm 事件。如果在傳輸緩沖區中的字符數小於 value,CommEvent 屬性設置為 comEvSend,並產生 OnComm 事件。comEvSend 事件僅當字符數與 Sthreshold 交叉時被激活壹次。例如,如果 Sthreshold 等於 5,僅當在輸出隊列中字符數從 5 降到 4 時,comEvSend 才發生。如果在輸出隊列中從沒有比 Sthreshold 多的字符,comEvSend 事件將絕不會發生。

Handshake 常數

常數    值   描述

comNone    0    無握手。

comXonXoff 1    XOn/Xoff 握手。

comRTS    2    Request-to-send/clear-to-send 握手。

comRTSXOnXOff 3    Request-to-send 和 clear-to-send 握手皆可。

OnComm 常數

常數      值   描述

comEvSend  1  發送事件。

comEvReceive  2    接收事件。

comEvCTS   3    clear-to-send 線變化。

comEvDSR   4    data-set ready 線變化。

comEvCD    5    carrier detect 線變化。

comEvRing   6    振鈴檢測。

comEvEOF   7    文件結束。

Settings 屬性: 設置並返回波特率、奇偶校驗、數據位、停止位參數。

語法: object.Settings[ = value]

說明:當端口打開時,如果 value 非法,則 MSComm 控件產生錯誤 380(非法屬性值)。

Value 由四個設置值組成,有如下的格式:

"BBBB,P,D,S"

BBBB 為波特率,P 為奇偶校驗,D 為數據位數,S 為停止位數。value 的缺省值是:

"9600,N,8,1"

InputLen 屬性:設置並返回 Input 屬性從接收緩沖區讀取的字符數。

語法 object.InputLen [ = value]

InputLen 屬性語法包括下列部分:

value 整型表達式,說明 Input 屬性從接收緩沖區中讀取的字符數。

說明:InputLen 屬性的缺省值是 0。設置 InputLen 為 0 時,使用 Input 將使 MSComm 控件讀取接收緩沖區中全部的內容。

若接收緩沖區中 InputLen 字符無效,Input 屬性返回壹個零長度字符串 ("")。在使用 Input 前,用戶可以選擇檢查 InBufferCount 屬性來確定緩沖區中是否已有需要數目的字符。該屬性在從輸出格式為定長數據的機器讀取數據時非常有用。

  • 上一篇:漢諾塔,周期怎麽寫?
  • 下一篇:徐渭《水仙六首(選壹)》詠水仙詩賞析
  • copyright 2024編程學習大全網