CSerialPort.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #pragma once
  2. #include <cassert>
  3. typedef unsigned long ulong;
  4. typedef unsigned char uchar;
  5. class CSerialPort
  6. {
  7. public:
  8. CSerialPort(
  9. std::wstring portNum, // 串口号
  10. DWORD baudRate = 9600, // 波特率
  11. BYTE byteSize = 8, // 数据位
  12. BYTE parityBit = NOPARITY, // 检验位
  13. BYTE stopBit = ONESTOPBIT // 停止位
  14. );
  15. CSerialPort(
  16. DWORD baudRate = 9600, // 波特率
  17. BYTE byteSize = 8, // 数据位
  18. BYTE parityBit = NOPARITY, // 检验位
  19. BYTE stopBit = ONESTOPBIT // 停止位
  20. );
  21. ~CSerialPort();
  22. public:
  23. bool openComm(); // 打开串口
  24. void closeComm(); // 关闭串口
  25. bool writeToComm(BYTE data[], DWORD dwLegnth); // 发送数据
  26. bool readFromComm(char buffer[], DWORD dwLength, DWORD* nReaded); // 读取数据
  27. private:
  28. HANDLE m_hComm; // 通信设备
  29. std::wstring m_portNum; // 串口号
  30. DWORD m_dwBaudRate; // 波特率
  31. BYTE m_byteSize; // 数据位
  32. BYTE m_parityBit; // 校验位
  33. BYTE m_stopBit; // 停止位
  34. bool m_bOpen; // 串口开关标志
  35. public:
  36. enum BufferSize
  37. {
  38. MIN_BUFFER_SIZE = 256,
  39. BUFFER_SIZE = 512,
  40. MAX_BUFFER_SIZE = 1024
  41. };
  42. // 设置串口号
  43. void setPortNum(const std::wstring &portNum)
  44. {
  45. this->m_portNum = portNum;
  46. }
  47. // 设置波特率
  48. void setBaudRate(const ulong baudRate)
  49. {
  50. this->m_dwBaudRate = baudRate;
  51. }
  52. // 设置数据位
  53. void setByteSize(const uchar byteSize)
  54. {
  55. this->m_byteSize = byteSize;
  56. }
  57. // 设置检验位
  58. void setParityBit(const uchar parityBit)
  59. {
  60. this->m_parityBit = parityBit;
  61. }
  62. // 设置停止位
  63. void setStopBit(const uchar stopBit)
  64. {
  65. this->m_stopBit = stopBit;
  66. }
  67. // 获取串口号
  68. std::wstring getPortNum()
  69. {
  70. return m_portNum;
  71. }
  72. // 获取波特率
  73. ulong getBaudRate()
  74. {
  75. return m_dwBaudRate;
  76. }
  77. // 获取数据位
  78. uchar getByteSize()
  79. {
  80. return m_byteSize;
  81. }
  82. // 获取检验位
  83. uchar getParityBit()
  84. {
  85. return m_parityBit;
  86. }
  87. // 获取停止位
  88. uchar getStopBit()
  89. {
  90. return m_stopBit;
  91. }
  92. };