Com.cpp
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:2k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. // Com.cpp: implementation of the CCom class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "..stdafx.h"
  5. #include "Com.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. CCom::CCom()
  15. {
  16. this->hCom = NULL;
  17. }
  18. CCom::~CCom()
  19. {
  20. }
  21. BOOL CCom::Open( int nPort ,const char *buf )
  22. {
  23. CString szPort;
  24. szPort.Format( "COM%d" ,nPort );
  25. //打开端口
  26.     this->hCom = ::CreateFile(szPort, //端口
  27. GENERIC_READ | GENERIC_WRITE, // 允许读写 
  28. 0, // 此项必须为0
  29. NULL,//安全模式
  30. OPEN_EXISTING,//打开现成端口
  31. 0, //打开模式
  32. NULL);
  33. if(this->hCom == INVALID_HANDLE_VALUE) //检测打开串口操作是否成功 
  34. return FALSE;
  35. //设定DCB
  36. DCB dcb;
  37. memset(&dcb,0,sizeof(dcb));
  38.     if(!::BuildCommDCB(buf,&dcb))
  39. goto end;
  40. if(!::SetCommState(this->hCom,&dcb))
  41. goto end;
  42.     if(!::PurgeComm(this->hCom,PURGE_RXCLEAR | PURGE_TXCLEAR))
  43. goto end;
  44. return TRUE;
  45. end :
  46. ::CloseHandle(this->hCom);this->hCom = NULL; return FALSE;
  47. }
  48. void CCom::Close(void)
  49. {
  50. ::CloseHandle(this->hCom);this->hCom = NULL; return ;
  51. }
  52. BOOL CCom::Write(void *buffer,DWORD size)
  53. {
  54. if(this->hCom != NULL)
  55. {
  56. DWORD write = size;
  57. return ::WriteFile(this->hCom,buffer,size,&write,NULL) != NULL;
  58. }
  59. return FALSE;
  60. }
  61. BOOL CCom::Read(void *buffer,DWORD size)
  62. {
  63. return TRUE;
  64. }