/*************************************************************************** * E-Com Technology Ltd. * * ECOMPACS DICOM Network Transport Libraries * Version 0.1 Beta ***************************************************************************/ #pragma once #ifndef _SerialPortServer_DLL #define SERIALPORTSERVER_API _declspec(dllimport) #else #define SERIALPORTSERVER_API _declspec(dllexport) #endif ////////////////////////////////////////////////////////////////////// // class InBuffer class SERIALPORTSERVER_API InBuffer { protected: class charQueue * m_Queue; public: InBuffer (); ~InBuffer (); InBuffer & operator >> (BYTE & x); InBuffer & operator >> (char & x) { return ((*this) >> (BYTE &) x); } UINT Read (BYTE * Data, UINT cbNumBytes); protected: UINT PrepareRead (UINT cbNumByte); private: BOOL ReadBlock (void); virtual INT ReadBinary(BYTE *, UINT) = 0; }; ////////////////////////////////////////////////////////////////////// // class FileBuffer class SERIALPORTSERVER_API FileBuffer { public: enum ShareMode { shareCompat = (int) 0x00000, shareExclusive = (int) 0x00010, shareDenyWrite = (int) 0x00020, shareDenyRead = (int) 0x00030, shareDenyNone = (int) 0x00040, }; FileBuffer () { m_hFile = INVALID_HANDLE_VALUE; m_bEOF = TRUE; } ~FileBuffer () { CloseFile (); } virtual BOOL Open (const char * filename, ShareMode mode) = 0; BOOL CloseFile (void); void SeekToBegin (void); UINT32 SeekToEnd (void); virtual LONG Seek (LONG lOff, UINT nFrom); virtual DWORD GetLength (void) const; virtual DWORD GetPosition (void) const; enum SeekPosition { begin = 0x0, current = 0x1, end = 0x2 }; virtual BOOL IsEOF (void) const; virtual BOOL IsOpened (void) const; protected: BOOL m_bEOF; HANDLE m_hFile; }; ////////////////////////////////////////////////////////////////////// // class SerialPortBuffer ////////////////////////////////////////////////////////////////////// class SERIALPORTSERVER_API SerialPortBuffer : public InBuffer, public FileBuffer { public: virtual BOOL Open (const char * filename, ShareMode mode); INT ReadBinary (BYTE * Data, UINT Count); BOOL SendBinary (const BYTE * Data, UINT Count); virtual BOOL Close (void); public: int SendCommands (const char * pchcommand, int ncommandsize); int SendCommands (const unsigned char * pchcommand, int ncommandsize); protected: OVERLAPPED m_OverlappedRead; OVERLAPPED m_OverlappedWrite; public: SerialPortBuffer (); ~SerialPortBuffer (); BOOL Open ( UINT portnr = 1, UINT baud = 19200, char parity = NOPARITY, UINT databits = 8, UINT stopsbits = 1); public: bool SetDumpIn (bool bDump); bool SetDumpOut (bool bDump); protected: bool m_bDumpIn; bool m_bDumpOut; protected: int m_nPort; protected: DWORD ReadDataWaiting (void); protected: DCB m_DCB; };