UartContext.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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 Uart3IsOpen();
  24. //static UartContext* getInstance();
  25. protected:
  26. virtual bool readyToRun();
  27. virtual bool threadLoop();
  28. private:
  29. UartContext(int uartnum);
  30. private:
  31. bool mIsOpen;
  32. int mUartID;
  33. // 用于拼接缓存数据,可能存在上一包数据解析未完全,残留有数据
  34. // Used for splicing cached data, there may be incomplete data parsing of the previous packet, and data remains
  35. BYTE *mDataBufPtr;
  36. int mDataBufLen;
  37. int mUartNumber; //串口代号
  38. };
  39. //#define UARTCONTEXT UartContext::getInstance()
  40. #endif /* _UART_UARTCONTEXT_H_ */