(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;
沒有留言:
張貼留言