UartContext.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * UartContext.h
  3. *
  4. * Created on: Sep 5, 2017
  5. * Author: guoxs
  6. */
  7. #ifndef _UART_UARTCONTEXT_H_
  8. #define _UART_UARTCONTEXT_H_
  9. #include <vector>
  10. #include "system/Thread.h"
  11. #include "CommDef.h"
  12. class UartContext : public Thread {
  13. public:
  14. virtual ~UartContext();
  15. bool openUart(const char *pFileName, UINT baudRate);
  16. void closeUart();
  17. bool isOpen() { return mIsOpen; }
  18. bool send(const BYTE *pData, UINT len);
  19. static void init();
  20. static void destroy();
  21. static bool sendTo(int uart, const BYTE *pData, UINT len);
  22. static bool Uart1IsOpen();
  23. static bool Uart2IsOpen();
  24. static bool Uart3IsOpen();
  25. //static UartContext* getInstance();
  26. protected:
  27. virtual bool readyToRun();
  28. virtual bool threadLoop();
  29. private:
  30. UartContext(int uartnum);
  31. private:
  32. bool mIsOpen;
  33. int mUartID;
  34. // 用于拼接缓存数据,可能存在上一包数据解析未完全,残留有数据
  35. // Used for splicing cached data, there may be incomplete data parsing of the previous packet, and data remains
  36. BYTE *mDataBufPtr;
  37. int mDataBufLen;
  38. int mUartNumber; //串口代号
  39. };
  40. //#define UARTCONTEXT UartContext::getInstance()
  41. #endif /* _UART_UARTCONTEXT_H_ */