SerialBuffer.h
上传用户:chineseart
上传日期:2022-06-24
资源大小:52k
文件大小:2k
源码类别:

串口编程

开发平台:

Visual C++

  1. // SerialBuffer.h: interface for the CSerialBuffer class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_SerialBuffer_H__FD164A5F_9F09_451B_8E42_180999B4DB9A__INCLUDED_)
  5. #define AFX_SerialBuffer_H__FD164A5F_9F09_451B_8E42_180999B4DB9A__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <string>
  10. class CSerialBuffer  
  11. {
  12. std::string m_szInternalBuffer;
  13. CRITICAL_SECTION m_csLock;
  14. bool m_abLockAlways;
  15. long m_iCurPos;
  16. long  m_alBytesUnRead;
  17. void  Init();
  18. void ClearAndReset(HANDLE& hEventToReset);
  19. public:
  20. inline void LockBuffer() {::EnterCriticalSection(&m_csLock );}
  21. inline void UnLockBuffer() {::LeaveCriticalSection(&m_csLock );} 
  22.  
  23. CSerialBuffer( );
  24. virtual ~CSerialBuffer();
  25. //---- public interface --
  26. void AddData( char ch ) ;
  27. void AddData( std::string& szData ) ;
  28. void AddData( std::string& szData,int iLen ) ;
  29. void AddData( char *strData,int iLen ) ;
  30. std::string GetData() {return m_szInternalBuffer;}
  31. void Flush();
  32. long Read_N( std::string &szData,long alCount,HANDLE& hEventToReset);
  33.   bool Read_Upto( std::string &szData,char chTerm,long  &alBytesRead ,HANDLE& hEventToReset);
  34. bool Read_Available( std::string &szData,HANDLE & hEventToReset);
  35. inline long GetSize() {return m_szInternalBuffer.size();}
  36. inline bool IsEmpty() {return m_szInternalBuffer.size() == 0; }
  37. bool Read_Upto_FIX( std::string &szData,char chTerm,long  &alBytesRead,HANDLE & hEventToReset);
  38. };
  39. #endif // !defined(AFX_SerialBuffer_H__FD164A5F_9F09_451B_8E42_180999B4DB9A__INCLUDED_)