MySeries.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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* MY_ONSERIESREAD)(void * pOwner /*父对象指针*/
  20. ,BYTE* buf /*接收到的缓冲区*/
  21. ,DWORD dwBufLen /*接收到的缓冲区长度*/);
  22. class CMyCESeries
  23. {
  24. public:
  25. bool bCanComRead;
  26. bool m_bSyncOrAsync;//使用同步方式或者异步方式(重叠方式),默认值为true:异步方式
  27. CMyCESeries(UINT portNo = -1, UINT baud = 9600, UINT parity = NOPARITY, UINT databits = 8, UINT stopbits = 0);
  28. ~CMyCESeries(void);
  29. public:
  30. UINT m_portNo; //串口号
  31. UINT m_baud; //波特率
  32. UINT m_parity; //奇偶校验
  33. UINT m_databits; //数据位
  34. UINT m_stopbits; //停止位
  35. //打开串口
  36. BOOL OpenPort(void* pOwner,/*指向父指针*/
  37. UINT portNo = 1, /*串口号*/
  38. UINT baud = 9600, /*波特率*/
  39. UINT parity = 0, /*奇偶校验*/
  40. UINT databits = 8, /*数据位*/
  41. UINT stopbits = 0, /*停止位*/
  42. bool isASync = true
  43. );
  44. //关闭串口
  45. void ClosePort();
  46. //写入数据
  47. BOOL WriteSyncPort(const BYTE*buf , DWORD bufLen);
  48. //设置串口读取、写入超时
  49. BOOL SetSeriesTimeouts(COMMTIMEOUTS CommTimeOuts);
  50. //得到串口是否打开
  51. BOOL GetComOpened();
  52. private:
  53. //同步串口读线程函数
  54. static DWORD WINAPI ReadThreadFunc(LPVOID lparam);
  55. //static DWORD WINAPI ReadThreadFunc2(LPVOID lparam);
  56. private:
  57. //关闭读线程
  58. void CloseReadThread();
  59. private:
  60. //已打开的串口句柄
  61. // HANDLE m_hComm;
  62. //读线程句柄
  63. HANDLE m_hReadThread;
  64. //读线程ID标识
  65. DWORD m_dwReadThreadID;
  66. //读线程退出事件
  67. HANDLE m_hReadCloseEvent;
  68. bool m_bOpened; //串口是否打开
  69. void * m_pOwner; //指定父对象指针
  70. public:
  71. MY_ONSERIESREAD m_OnSeriesRead; //同步方式下,串口读取回调函数
  72. HANDLE m_hComm;
  73. OVERLAPPED m_olWrite;//假如该串口使用异步方式时,将会用到该变量
  74. };