CMSComm控件串口編程


MSComm控件進行串口編程步驟:

1.  在建立的程序工程中插入MSComm控件。

2.  添加MSComm控件ID 的控制變量(或者對象)。

3.  對串口進行初始化,設置MSComm控件的屬性。

4.  添加串口事件的消息處理函數OnComm()函數,在函數中根據應用需要,編寫數據處理代碼

5.  編寫串口發送等其他代碼。

6.  關閉串口。

+MSComm控件

常用屬性:

1.CommPort:設置並返回通信端口號

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

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

4.Input:  從接收緩沖區返回和刪除字符

5.Output:  向傳輸緩沖區寫一個字符

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

7.InBufferSize:設置或返回輸入緩沖區的大小。

8.OutBufferSize:設置或返回輸入緩沖區的大小。

9.InBufferCount:  設置或返回輸入緩沖區內等待讀取的字節個數。

10.OutBufferCount:  設置或返回輸入緩沖區內等待讀取的字節個數。

對MSComm控件通過Get/Set函數對來獲取或設置控件的屬性,每個屬性均有與之對應的Get/Set函數對。

用法 說明

1.CommPort:設置並返回通信端口號

Void CMSComm::SetCommPort(short n);  設置串口號

Short CMSComm::GetCommPort();  查詢當前串口號

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

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

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

Void CMSComm::SetSettings(LPCTSTR lpszNewValue);

CString CMSComm::GetSettings();

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

Value 由四個設置值組成,有如下格式:“BBBB,P,D,S”

BBBB:波特率  P: 奇偶校驗,D:數據位數,S:停止位數

Value的缺省值:“9600,N,8,1”。

3.PortOpen: 用於打開或關閉串口,或者返回串口的開、關狀態

Void CMSComm::SetPortOpen(BOOL  bNewValue);

BOOL  CMSComm::GetPortOpen();

說明:bNewValue值設置為TRUE,則打開串口;bNewValue值設置為FALSE,則關閉串口。編程時可以再程序中打開或關閉串口,當程序終止,MSComm控件自動關閉串口。

4.InPut: 從接收緩沖區內讀出數據

VARIANT CMSComm::GetInPut();

說明:返回數據類型為VARIANT型變量,該屬性在串口沒有打開時不能用,在運行時是只讀的。

InPutMode=0時(檢取數據為文本方式),變量中含String型數據。

InPutMode=1時(檢取數據位二進制方式),變量中含Byte型數據。

5.OutPut:向發送緩沖區寫數據,或返回發送緩沖區當前的數據

Void CMSComm::SetOutPut(const VARIANT&  newValue);

VARIANT CMSComm::GetOutPort();

說明:變量類型為VARIANT,該屬性在串口未打開時不可用。OutPut可以發送文本或二進制數據,當發送文本類型數據時,將字符型數據放入VARIANT型變量中;發送二進制數據時(按字節發送),將字節型數據放入VARIANT型變量中。若數據中包含了內嵌控制字符。空字符等,必須將其作為二進制數據發送。

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

Void CMSComm::SetInputLen(short  nNewValue);

Short CMSComm::GetInputLen();

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

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

7.InBufferSize:設置或返回輸入緩沖區的大小。

VoidCMSComm::SetInBufferSize(short nNewValue);

Short CMSComm::GetInBufferSize();

說明:設置值的缺省值(默認值大小為1024字節(byte))。

8.OutBufferSize: 設置或返回發送緩沖區內的大小。

VoidCMSComm::SetOutBufferSize(short nNewValue);

Short CMSComm::GetOutBufferSize();

說明:設置值的缺省值,默認值大小為512字節(byte),此值太小,緩沖區數據易溢出,太大會占不必要的內存。

9.InBufferCount: 設置或返回輸入緩沖區內等待讀取的字節個數。

Void CMSComm::SetInBufferCount(short  nNewValue);

Short CMSComm::GetInBufferCount();

說明:當設置InBufferCount屬性值為0時,可以清空接收緩沖區。

10.OutBufferCount: 設置或返回輸入緩沖區內等待讀取的字節個數。

Void CMSComm::SetOutBufferCount(short  nNewValue);

Short CMSComm::GetOutBufferCount();

說明:當設置InBufferCount屬性值為0時,可以清空發送緩沖區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM