设为首页 加入收藏

TOP

13.5.1 打开串口
2013-10-07 14:36:21 来源: 作者: 【 】 浏览:59
Tags:13.5.1 打开 串口

13.5.1  打开串口

在很多系统中(包括Windows系统)把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile()来打开或创建的。该函数的原型为:

  1. HANDLE CreateFile(   
  2.     LPCTSTR                 lpFileName,             //将要打开的串口逻辑名  
  3.     DWORD                   dwDesiredAccess,        //指定串口访问的类型  
  4.     DWORD                   dwShareMode,            //指定共享属性  
  5.     LPSECURITY_ATTRIBUTES   lpSecurityAttributes,   //引用安全型属性结构  
  6.     DWORD                   dwCreationDistribution, //创建标志  
  7.     DWORD                   dwFlagsAndAttributes,   //属性描述  
  8.     HANDLE                  hTemplateFile   //对串口而言该参数必须置为NULL  
  9. ); 

同步I/O方式打开串口的示例代码如下:
  1. 01  HANDLE OpenCom()  
  2. 02  {  
  3. 03      HANDLE hCom;                                //串口句柄  
  4. 04      hCom=CreateFile( "COM1 ",                   //打开COM1口  
  5. 05                      GENERIC_READ|GENERIC_WRITE, //允许读和写  
  6. 06                      0,                          //独占方式   
  7. 07                      NULL,  
  8. 08                      OPEN_EXISTING,              //打开已存在的文件  
  9. 09                      0,                          //同步方式打开  
  10. 10                      NULL);  
  11. 11      if(hCom==(HANDLE)-1)                        //打开失败  
  12. 12      {  
  13. 13          AfxMessageBox( "打开串口失败! ");  
  14. 14          Return NULL;  
  15. 15      }  
  16. 16      return hCom;  
  17. 17  } 

与同步I/O方式打开的过程与步骤相同,只是参数有点变化,异步I/O打开串口的示例代码如下:
  1. 01  HANDLE OpenCom()  
  2. 02  {  
  3. 03      HANDLE hCom;                                //串口句柄  
  4. 04      hCom=CreateFile( "COM1 ",                   //打开COM1口  
  5. 05                      GENERIC_READ|GENERIC_WRITE, //允许读和写  
  6. 06                      0,                          //独占方式   
  7. 07                      NULL,  
  8. 08                      OPEN_EXISTING,              //打开已存在的文件  
  9. 09                      FILE_ATTRIBUTE_NORMAL|  
  10. 10                      FILE_FLAG_OVERLAPPED,       //重叠方式  
  11. 11                      NULL);  
  12. 12      if(hCom==(HANDLE)-1)                        //打开失败  
  13. 13      {  
  14. 14          AfxMessageBox( "打开串口失败! ");  
  15. 15          Return NULL;  
  16. 16      }  
  17. 17      return hCom;  
  18. 18  } 


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.5.4 关闭串口 下一篇13.4.1 串口简介

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: