利用 MFC 實現串行通信

發表于:2007-07-14來源:作者:點擊數: 標簽:
吉林大學 尚金瑞 在微軟公司推出的Visual C++中,不僅可以利用串行通信控件或調用 Windows API來進行串行通信,而且可以利用MFC CFile類來實現串行通訊。這種通信方式與訪問磁盤普通文件沒有太大不同。較簡單的實現方式是利用VC++中的MFC向導建立一個支持MFC
吉林大學 尚金瑞

在微軟公司推出的Visual C++中,不僅可以利用串行通信控件或調用Windows API來進行串行通信,而且可以利用MFC CFile類來實現串行通訊。這種通信方式與訪問磁盤普通文件沒有太大不同。較簡單的實現方式是利用VC++中的MFC向導建立一個支持MFC的工作臺工程,添入如下相關代碼即可。
1)打開一個串口需使用:

CFile file;

CFileException e;

file.Open (

portName, //example "COM1","COM2"

CFile::modeReadWrite,  

&e);  

2)關閉一個串口需使用:

file.Close();

3)從端口進行讀操作,需使用:

char m_ReadBuff[UINT?。頬;

UINT nByte=file.Read (

&m_ReadBuff, //buffer to store byte

UINT nCount //number of bytes to read

);

4)從端口進行寫操作,需使用:

char m_WriteBuff[UINT?。頬;

file.Write (

&m_WriteBuff, //buffer to store byte

UINT nCount //number of bytes to write

);

5)配置串口
串行端口創建時,必須對其進行設置以匹配與其對話的設備。雖然可以通過操作系統設置這些參數,但也可以用Windows API 中的SetCommState()函數來設置它們。一般地,可用如下程序設置它們:
DCB dcb;  

::GetCommState( (HANDLE)file.m_hFile, &dcb );

dcb.BaudRate = 1200,…;  

dcb.ByteSize = 7 or 8;  

dcb.StopBits = 0,1,2=0,1.5,2;  

dcb.Parity = 0-4=no,odd,even,mark,space;  

::SetCommState((HANDLE)file.m_hFile, &dcb );

為了更好地控制端口可以利用SetCommTimeouts()函數打開或關閉超時功能,具體程序如下:

COMMTIMEOUTS cto;

::GetCommTimeouts((HANDLE)file.m_hFile , &cto );  

cto.ReadIntervalTimeout =0;

cto.ReadTotalTimeoutMultiplier =0;

cto.ReadTotalTimeoutConstant =0;

cto.WriteTotalTimeoutMultiplier=0;

cto.WriteTotalTimeoutConstant =0;

::SetCommTimeouts((HANDLE)file.m_hFile , &cto );
采用上面的程序,利用MFC CFile類進行串行通信,代碼簡單、編程量小,可應用于在線監測、自動化控制等許多方面,對科研、生產有著廣泛的實用價值。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97