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時,可以清空發送緩沖區