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

SDH::cCANSerial_PEAK Class Reference

Low-level communication class to access a CAN port from company PEAK (http://www.peak-system.com) More...

#include <canserial-peak.h>

Inheritance diagram for SDH::cCANSerial_PEAK:
Collaboration diagram for SDH::cCANSerial_PEAK:

List of all members.

Public Member Functions

 cCANSerial_PEAK (unsigned long _baudrate, double _timeout, int _id_read, int _id_write, const char *device="/dev/pcanusb0") throw (cCANSerial_PEAKException*)
 cCANSerial_PEAK (tDeviceHandle _peak_handle, double _timeout, int _id_read, int _id_write) throw (cCANSerial_PEAKException*)
 ~cCANSerial_PEAK ()
 destructor: clean up
tDeviceHandle GetHandle ()
void Open (void) throw (cCANSerial_PEAKException*)
bool IsOpen (void) throw ()
 Return true if interface to CAN PEAK is open.
void Close (void) throw (cCANSerial_PEAKException*)
 Close the previously opened CAN PEAK interface port.
int write (char const *ptr, int len=0) throw (cCANSerial_PEAKException*)
 Write data to a previously opened port.
ssize_t Read (void *data, ssize_t size, long timeout_us, bool return_on_less_data) throw (cCANSerial_PEAKException*)
void SetTimeout (double _timeout) throw (cSerialBaseException*)
 set the timeout for next readline() calls (negative value means: no timeout, wait for ever)
virtual tErrorCode GetErrorNumber ()
virtual char const * GetErrorMessage (tErrorCode dw)

Protected Member Functions

int BaudrateToBaudrateCode (unsigned long baudrate) throw (cCANSerial_PEAKException*)
 Translate a baudrate given as unsigned long into a baudrate code for struct termios.

Protected Attributes

unsigned long baudrate
 the baudrate to use in bit/s
int id_read
 the CAN ID used for reading
int id_write
 the CAN ID used for writing
char m_device [64]

Detailed Description

Low-level communication class to access a CAN port from company PEAK (http://www.peak-system.com)

Since SDHLibrary-C++ release 0.0.2.0 implementation specific parts of the access to PEAK CAN devices have been removed from the header file here in order to get rid of dependencies from the Pcan_usb.h. Specifically the peak_handle of type PEAK_HANDLE member was removed. You can still provide an existing handle for reuse on construction, but you must cast your HANDLE to a tDeviceHandle. You can get the internally used PEAK_HANDLE cast to a tDeviceHandle with GetHandle().


Constructor & Destructor Documentation

cCANSerial_PEAK::cCANSerial_PEAK ( unsigned long  _baudrate,
double  _timeout,
int  _id_read,
int  _id_write,
const char *  device = "/dev/pcanusb0" 
) throw (cCANSerial_PEAKException*)

Constructor: constructs an object to communicate with an SDH via CAN bus using a PEAK CAN card.

Parameters:
_baudrate- the baudrate in bit/s. Only some bitrates are valid: (1000000,800000,500000,250000,125000,100000,50000,20000,10000)
_timeout- the timeout in seconds (0 for no timeout = wait for ever)
_id_read- the CAN ID to use for reading (The SDH sends data on this ID)
_id_write- the CAN ID to use for writing (The SDH receives data on this ID)
device- the name of the char device to communicate with the PEAD driver (Needed on Linux only!)
cCANSerial_PEAK::cCANSerial_PEAK ( tDeviceHandle  _peak_handle,
double  _timeout,
int  _id_read,
int  _id_write 
) throw (cCANSerial_PEAKException*)

Constructor: constructs an object to communicate with an SDH via CAN bus using a PEAK CAN card by reusing an already existing handle (will work in Linux only).

Parameters:
_peak_handle- the PEAK CAN handle to reuse (Works on Linux only!)
_timeout- the timeout in seconds (0 for no timeout = wait for ever)
_id_read- the CAN ID to use for reading (The SDH sends data on this ID)
_id_write- the CAN ID to use for writing (The SDH receives data on this ID)
cCANSerial_PEAK::~cCANSerial_PEAK ( )

destructor: clean up


Member Function Documentation

int cCANSerial_PEAK::BaudrateToBaudrateCode ( unsigned long  baudrate) throw (cCANSerial_PEAKException*) [protected]

Translate a baudrate given as unsigned long into a baudrate code for struct termios.

void cCANSerial_PEAK::Close ( void  ) throw (cCANSerial_PEAKException*) [virtual]

Close the previously opened CAN PEAK interface port.

Implements SDH::cSerialBase.

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

Overloaded helper function that returns a PEAK error message for error code dw.

Remarks:
The string returned will be overwritten by the next call to the function

Reimplemented from SDH::cSerialBase.

cSerialBase::tErrorCode cCANSerial_PEAK::GetErrorNumber ( ) [virtual]

Overloaded helper function that returns the last Peak error number.

Reimplemented from SDH::cSerialBase.

tDeviceHandle cCANSerial_PEAK::GetHandle ( )

Return the value of the HANDLE to the actual CAN device. Works on Linux only! Only returns a valid handle after a call to Open()!

Remarks:
The returned handle can be used to open a connection to a second SDH on the same CAN bus
Returns:
the handle to the actual CAN device
bool cCANSerial_PEAK::IsOpen ( void  ) throw () [virtual]

Return true if interface to CAN PEAK is open.

Implements SDH::cSerialBase.

void cCANSerial_PEAK::Open ( void  ) throw (cCANSerial_PEAKException*) [virtual]

Open the device as configured by the parameters given to the constructor

Implements SDH::cSerialBase.

ssize_t cCANSerial_PEAK::Read ( void *  data,
ssize_t  size,
long  timeout_us,
bool  return_on_less_data 
) throw (cCANSerial_PEAKException*) [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.

Implements SDH::cSerialBase.

void cCANSerial_PEAK::SetTimeout ( double  _timeout) throw (cSerialBaseException*) [virtual]

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

Reimplemented from SDH::cSerialBase.

int cCANSerial_PEAK::write ( char const *  ptr,
int  len = 0 
) throw (cCANSerial_PEAKException*) [virtual]

Write data to a previously opened port.

Write len bytes from *ptr to the CAN device

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

Implements SDH::cSerialBase.


Member Data Documentation

unsigned long SDH::cCANSerial_PEAK::baudrate [protected]

the baudrate to use in bit/s

the CAN ID used for reading

the CAN ID used for writing

char SDH::cCANSerial_PEAK::m_device[64] [protected]

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