SynSerial.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /************************************************************************/
  2. /* Copyright (C), 2016-2020, [Home], 保留所有权利;
  3. /* 模 块 名:同步串口模块;
  4. /* 描 述:;
  5. /*
  6. /* 版 本:[V];
  7. /* 作 者:[Home];
  8. /* 日 期:[12/20/2017];
  9. /*
  10. /*
  11. /* 注 意:;
  12. /*
  13. /* 修改记录:[Home];
  14. /* 修改日期:;
  15. /* 修改版本:;
  16. /* 修改内容:;
  17. /************************************************************************/
  18. #ifndef __SYN_SERIAL__
  19. #define __SYN_SERIAL__
  20. #pragma once
  21. #define MAX_PORT_LEN 10
  22. class CSynSerial
  23. {
  24. public:
  25. CSynSerial(void);
  26. virtual ~CSynSerial(void);
  27. private:
  28. DCB m_dcb;
  29. HANDLE m_hSerialPort;
  30. COMMTIMEOUTS m_cts;
  31. // 串口号(1~255);
  32. TCHAR m_szSerialPort[MAX_PORT_LEN];
  33. // 输入缓存大小(byte);
  34. DWORD m_dwInQueue;
  35. // 输出缓存大小(byte);
  36. DWORD m_dwOutQueue;
  37. public:
  38. inline BOOL IsOpen() const {
  39. return (m_hSerialPort == NULL || m_hSerialPort == INVALID_HANDLE_VALUE) ? FALSE : TRUE;
  40. }
  41. // 打开串口;
  42. BOOL OpenSerialPort(
  43. IN BYTE byCommPort, // 串口号;
  44. IN DWORD dwBaudRate, // 波特率;
  45. IN BYTE bySize, // 数据位;
  46. IN BYTE byParity, // 校验位;
  47. IN BYTE byStopBits, // 停止位;
  48. IN BYTE byStartAddr, // 起始地址;
  49. IN INT nInterval // 间隔时间;
  50. );
  51. BOOL OpenSerialPort(
  52. IN LPCTSTR lpCommPort, // 串口号;
  53. IN DWORD dwBaudRate, // 波特率;
  54. IN BYTE bySize, // 数据位;
  55. IN BYTE byParity, // 校验位;
  56. IN BYTE byStopBits, // 停止位;
  57. IN BYTE byStartAddr, // 起始地址;
  58. IN INT nInterval // 间隔时间;
  59. );
  60. // 重装打开串口;
  61. BOOL ReOpenSerialPort();
  62. // 关闭串口;
  63. void CloseSerialPort();
  64. // 设置串口参数;
  65. BOOL SetSerialPort(
  66. IN CONST DWORD& dwBaudRate, // 波特率;
  67. IN CONST BYTE& byByteSize, // 数据位;
  68. IN CONST BYTE& byParity, // 校验位;
  69. IN CONST BYTE& byStopBits, // 停止位;
  70. IN CONST BYTE& byStartAddr, // 起始地址;
  71. IN CONST DWORD& dwInQueue, // 输入缓存;
  72. IN CONST DWORD& dwOutQueue // 输出缓存;
  73. );
  74. // 设置dcb参数;
  75. void SetSerialDCB(IN CONST DCB &dcb);
  76. // 设置commtimeouts参数;
  77. void SetSerialCommTimeouts(IN CONST COMMTIMEOUTS &commTimeouts);
  78. virtual DWORD WriteComm(IN BYTE *pWirteBuf, IN CONST INT32 nWriteSize);
  79. virtual DWORD ReadComm(IN BYTE *pReadBuf, IN CONST DWORD& dwReadSize, WORD timeout = 300);
  80. };
  81. #endif // __SYN_SERIAL__