CESeries.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*-----------------------------------------
  2. * Copyright (c) 2008 Eric Wong
  3. * 本版紧供读者参考,不得用于任何商业行为
  4. *
  5. * 文件名称: CESeries.h
  6. * 文件标识:
  7. * 摘要:用于封装WINCE 串口通讯
  8. *
  9. * 当前版本: 1.0
  10. * 作者: 汪兵 Eric Wong
  11. * 完成日期: 2008年1月17日
  12. *
  13. * 取代版本:
  14. * 原作者:
  15. * 完成日期:
  16. ----------------------------------------*/
  17. #pragma once
  18. //定义串口接收数据函数类型
  19. typedef void (CALLBACK* ONSERIESREAD)(void * pOwner /*父对象指针*/
  20. ,BYTE* buf /*接收到的缓冲区*/
  21. ,DWORD dwBufLen /*接收到的缓冲区长度*/);
  22. class CCESeries
  23. {
  24. public:
  25. bool bCanComRead;
  26. CCESeries(void);
  27. ~CCESeries(void);
  28. public:
  29. //m_portNo = 3; //串口号使用串口3,可转换为485 //中控器模块和满意度调查器共用
  30. //m_baud = 57600; //波特率
  31. //m_parity = 0; //奇偶校验,0-None,1-Odd,2-Even
  32. //m_databits = 8; //数据位
  33. //m_stopbits = 0; //停止位 0-停止位1,1-停止位1.5,2-停止位2
  34. //打开串口
  35. BOOL OpenPort(void* pOwner,/*指向父指针*/
  36. UINT portNo = 1, /*串口号*/
  37. UINT baud = 9600, /*波特率*/
  38. UINT parity = 0, /*奇偶校验*/
  39. UINT databits = 8, /*数据位*/
  40. UINT stopbits = 0 /*停止位*/
  41. );
  42. //关闭串口
  43. void ClosePort();
  44. //同步写入数据
  45. BOOL WriteSyncPort(const BYTE*buf , DWORD bufLen);
  46. //设置串口读取、写入超时
  47. BOOL SetSeriesTimeouts(COMMTIMEOUTS CommTimeOuts);
  48. //得到串口是否打开
  49. BOOL GetComOpened();
  50. private:
  51. //串口读线程函数
  52. static DWORD WINAPI ReadThreadFunc(LPVOID lparam);
  53. private:
  54. //关闭读线程
  55. void CloseReadThread();
  56. private:
  57. //已打开的串口句柄
  58. // HANDLE m_hComm;
  59. //读线程句柄
  60. HANDLE m_hReadThread;
  61. //读线程ID标识
  62. DWORD m_dwReadThreadID;
  63. //读线程退出事件
  64. HANDLE m_hReadCloseEvent;
  65. BOOL m_bOpened; //串口是否打开
  66. void * m_pOwner; //指定父对象指针
  67. public:
  68. ONSERIESREAD m_OnSeriesRead; //串口读取回调函数
  69. HANDLE m_hComm;
  70. };