SDHLibrary-CPP 0.0.2.10SCHUNK GmbH & Co. KG
C++ access library for SCHUNK Dextrous Hand SDH

SDH::cSerialBase Class Reference

Low-level communication class to access a serial port. More...

#include <serialbase.h>

Inheritance diagram for SDH::cSerialBase:
Collaboration diagram for SDH::cSerialBase:

List of all members.

Classes

class  cSetTimeoutTemporarily
 helper class to set timeout of _serial_base on construction and reset to previous value on destruction. (RAII-idiom) More...

Public Types

typedef int tErrorCode
 type of the error code, DWORD on windows and int on Linux/cygwin

Public Member Functions

 cSerialBase ()
 ctor
virtual ~cSerialBase (void)
 dtor
virtual void Open (void)=0 throw (cSerialBaseException*)
 Open rs232 port port.
virtual bool IsOpen (void)=0 throw ()
 Return true if communication channel is open.
virtual void Close (void)=0 throw (cSerialBaseException*)
 Close the previously opened communication channel.
virtual void SetTimeout (double _timeout) throw (cSerialBaseException*)
 set the timeout for next readline() calls (negative value means: no timeout, wait for ever)
virtual double GetTimeout ()
 get the timeout for next readline() calls (negative value means: no timeout, wait for ever)
virtual int write (char const *ptr, int len=0)=0 throw (cSerialBaseException*)
 Write data to a previously opened port.
virtual ssize_t Read (void *data, ssize_t size, long timeout_us, bool return_on_less_data)=0 throw (cSerialBaseException*)
virtual char * readline (char *line, int size, char const *eol="\n", bool return_on_less_data=false) throw (cSerialBaseException*)
 Read a line from the device.
virtual tErrorCode GetErrorNumber ()
virtual char const * GetErrorMessage (tErrorCode dw)
char const * GetLastErrorMessage (void)
 return the last error message as string. The string returned will be overwritten by the next call to the function
virtual bool UseCRC16 ()

Public Attributes

cDBG dbg
 A stream object to print colored debug messages.

Protected Attributes

char ungetch
 an already read data byte of the next line
bool ungetch_valid
 Flag, true if ungetch is valid.
double timeout
 timeout in seconds

Detailed Description

Low-level communication class to access a serial port.

(This is an abstract base class with pure virtual functions)


Member Typedef Documentation

type of the error code, DWORD on windows and int on Linux/cygwin


Constructor & Destructor Documentation

SDH::cSerialBase::cSerialBase ( ) [inline]

ctor

virtual SDH::cSerialBase::~cSerialBase ( void  ) [inline, virtual]

dtor


Member Function Documentation

virtual void SDH::cSerialBase::Close ( void  ) throw (cSerialBaseException*) [pure virtual]

Close the previously opened communication channel.

Implemented in SDH::cCANSerial_ESD, SDH::cCANSerial_PEAK, SDH::cRS232, SDH::cRS232, and SDH::cTCPSerial.

char const * cSerialBase::GetErrorMessage ( tErrorCode  dw) [virtual]

Helper function that returns an error message for error code dw.

  • On windows FormatMessageA() is used
  • On cygwin/linux this uses errno
Remarks:
The string returned will be overwritten by the next call to the function

Reimplemented in SDH::cCANSerial_ESD, and SDH::cCANSerial_PEAK.

virtual tErrorCode SDH::cSerialBase::GetErrorNumber ( ) [inline, virtual]

Helper function that returns the last error number.

  • On windows GetLastError() is used
  • On cygwin/linux this uses errno

Reimplemented in SDH::cCANSerial_ESD, SDH::cCANSerial_PEAK, and SDH::cTCPSerial.

char const* SDH::cSerialBase::GetLastErrorMessage ( void  ) [inline]

return the last error message as string. The string returned will be overwritten by the next call to the function

virtual double SDH::cSerialBase::GetTimeout ( ) [inline, virtual]

get the timeout for next readline() calls (negative value means: no timeout, wait for ever)

virtual bool SDH::cSerialBase::IsOpen ( void  ) throw () [pure virtual]

Return true if communication channel is open.

Implemented in SDH::cCANSerial_ESD, SDH::cCANSerial_PEAK, SDH::cRS232, SDH::cRS232, and SDH::cTCPSerial.

virtual void SDH::cSerialBase::Open ( void  ) throw (cSerialBaseException*) [pure virtual]

Open rs232 port port.

Open the device with the parameters provided in the constructor

Implemented in SDH::cCANSerial_ESD, SDH::cCANSerial_PEAK, SDH::cRS232, SDH::cRS232, and SDH::cTCPSerial.

virtual ssize_t SDH::cSerialBase::Read ( void *  data,
ssize_t  size,
long  timeout_us,
bool  return_on_less_data 
) throw (cSerialBaseException*) [pure virtual]

Read data from device. This function waits until max_time_us us passed or the expected number of bytes are received via serial line. if (return_on_less_data is true (default value), the number of bytes that have been received are returned and the data is stored in data If the return_on_less_data is false, data is only read from serial line, if at least size bytes are available.

Implemented in SDH::cCANSerial_ESD, SDH::cCANSerial_PEAK, SDH::cRS232, SDH::cRS232, and SDH::cTCPSerial.

char * cSerialBase::readline ( char *  line,
int  size,
char const *  eol = "\n",
bool  return_on_less_data = false 
) throw (cSerialBaseException*) [virtual]

Read a line from the device.

A line is terminated with one of the end-of-line (eol) characters ('
' by default) or until timeout. Up to size-1 bytes are read and a '\0' char is appended.

Parameters:
line- ptr to where to store the read line
size- space available in line (bytes)
eol- a string containing all the chars that mark an end of line
return_on_less_data- if (return_on_less_data is true (default value), the number of bytes that have been received are returned and the data is stored in data If the return_on_less_data is false, data is only read from serial line, if at least size bytes are available.

A pointer to the line read is returned.

virtual void SDH::cSerialBase::SetTimeout ( double  _timeout) throw (cSerialBaseException*) [inline, virtual]

set the timeout for next readline() calls (negative value means: no timeout, wait for ever)

Reimplemented in SDH::cCANSerial_ESD, SDH::cCANSerial_PEAK, SDH::cRS232, and SDH::cTCPSerial.

virtual bool SDH::cSerialBase::UseCRC16 ( ) [inline, virtual]

function that returns true if a CRC16 is used to protect binary communication.

The default is false since only RS232 communication needs this.

Reimplemented in SDH::cRS232, and SDH::cRS232.

virtual int SDH::cSerialBase::write ( char const *  ptr,
int  len = 0 
) throw (cSerialBaseException*) [pure virtual]

Write data to a previously opened port.

Write len bytes from *ptr to the rs232 device

Parameters:
ptr- pointer the byte array to send in memory
len- number of bytes to send
Returns:
the number of bytes actually written

Implemented in SDH::cCANSerial_ESD, SDH::cCANSerial_PEAK, SDH::cRS232, SDH::cRS232, and SDH::cTCPSerial.


Member Data Documentation

A stream object to print colored debug messages.

double SDH::cSerialBase::timeout [protected]

timeout in seconds

char SDH::cSerialBase::ungetch [protected]

an already read data byte of the next line

Flag, true if ungetch is valid.


The documentation for this class was generated from the following files: