(1) 開啟串口
Win32系統把檔的概念進行了擴展。無論是檔、通信設備、具名管道、郵件槽、磁片、還是控制台,都是用API函數CreateFile來打開或創建的。該函數的原型為:
HANDLE CreateFile( LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
- dwDesiredAccess:將要打開的串口邏輯名,如“COM1;
- dwDesiredAccess:指定串口訪問的類型,可以是讀取、寫入或二者並列;
- dwShareMode:指定共用屬性,由於串口不能共用,該參數必須置為0;
- lpSecurityAttributes:引用安全性屬性結構,缺省值為NULL;
- dwCreationDistribution:創建標誌,對串口操作該參數必須置為OPEN_EXISTING;
- dwFlagsAndAttributes:屬性描述,用於指定該串口是否進行非同步作業,該值為FILE_FLAG_OVERLAPPED,表示使用非同步的I/O;該值為0,表示同步I/O操作;
- hTemplateFile:對串口而言該參數必須置為NULL;
HANDLE hCom; //全域變數,串口控制碼
hCom = CreateFile("COM1",//COM1口
GENERIC_READ|GENERIC_WRITE, //允許讀和寫
0, //獨佔方式
NULL,
OPEN_EXISTING, //打開而不是創建
0, //同步方式
NULL);
if(hCom==(HANDLE)-1)
{
AfxMessageBox("打開COM失敗!");
return FALSE;
}
return TRUE;
重疊I/O打開串口的示例代碼:
HANDLE hCom; //全域變數,串口控制碼
hCom = CreateFile("COM1", //COM1口
GENERIC_READ|GENERIC_WRITE, //允許讀和寫
0, //獨佔方式
NULL,
OPEN_EXISTING, //打開而不是創建
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //重疊方式
NULL);
if(hCom ==INVALID_HANDLE_VALUE)
{
AfxMessageBox("打開COM失敗!");
return FALSE;
}
return TRUE;
沒有留言:
張貼留言