Low-level communication class to access a CAN port from company PEAK (http://www.peak-system.com) More...
#include <canserial-peak.h>
Public Member Functions | |
cCANSerial_PEAK (unsigned long _baudrate, double _timeout, int _id_read, int _id_write, const char *device="/dev/pcanusb0") | |
cCANSerial_PEAK (tDeviceHandle _peak_handle, double _timeout, int _id_read, int _id_write) | |
void | Close (void) |
Close the previously opened CAN PEAK interface port. More... | |
virtual char const * | GetErrorMessage (tErrorCode dw) |
virtual tErrorCode | GetErrorNumber () |
tDeviceHandle | GetHandle () |
bool | IsOpen (void) throw () |
Return true if interface to CAN PEAK is open. More... | |
void | Open (void) |
ssize_t | Read (void *data, ssize_t size, long timeout_us, bool return_on_less_data) |
void | SetTimeout (double _timeout) |
set the timeout for next readline() calls (negative value means: no timeout, wait for ever) More... | |
int | write (char const *ptr, int len=0) |
Write data to a previously opened port. More... | |
~cCANSerial_PEAK () | |
destructor: clean up More... | |
Public Member Functions inherited from cSerialBase | |
cSerialBase () | |
ctor More... | |
char const * | GetLastErrorMessage (void) |
return the last error message as string. The string returned will be overwritten by the next call to the function More... | |
virtual double | GetTimeout () |
get the timeout for next readline() calls (negative value means: no timeout, wait for ever) More... | |
virtual char * | readline (char *line, int size, char const *eol="\n", bool return_on_less_data=false) |
Read a line from the device. More... | |
virtual bool | UseCRC16 () |
virtual | ~cSerialBase (void) |
dtor More... | |
Protected Member Functions | |
int | BaudrateToBaudrateCode (unsigned long baudrate) |
Translate a baudrate given as unsigned long into a baudrate code for struct termios. More... | |
Protected Attributes | |
unsigned long | baudrate |
the baudrate to use in bit/s More... | |
int | id_read |
the CAN ID used for reading More... | |
int | id_write |
the CAN ID used for writing More... | |
char | m_device [64] |
Protected Attributes inherited from cSerialBase | |
double | timeout |
timeout in seconds More... | |
char | ungetch |
an already read data byte of the next line More... | |
bool | ungetch_valid |
Flag, true if ungetch is valid. More... | |
Private Member Functions | |
cCANSerial_PEAK (cCANSerial_PEAK const &other) | |
private copy constructor without implementation, since copying of cCANSerial_PEAK objects makes no sense More... | |
cCANSerial_PEAK & | operator= (cCANSerial_PEAK const &rhs) |
private copy assignment operator without implementation, since copying of cCANSerial_PEAK objects makes no sense More... | |
Private Attributes | |
cCANSerial_PEAK_Internal * | pimpl |
ptr to private, implementation specific members (using the 'Pimpl' (pointer to implementatino) design pattern) More... | |
Additional Inherited Members | |
Public Types inherited from cSerialBase | |
typedef int | tErrorCode |
type of the error code, DWORD on windows and int on Linux/cygwin More... | |
Public Attributes inherited from cSerialBase | |
cDBG | dbg |
A stream object to print colored debug messages. More... | |
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().
Definition at line 78 of file canserial-peak.h.
|
private |
private copy constructor without implementation, since copying of cCANSerial_PEAK objects makes no sense
NAMESPACE_SDH_END cCANSerial_PEAK::cCANSerial_PEAK | ( | unsigned long | _baudrate, |
double | _timeout, | ||
int | _id_read, | ||
int | _id_write, | ||
const char * | device = "/dev/pcanusb0" |
||
) |
Constructor: constructs an object to communicate with an SDH via CAN bus using a PEAK CAN card.
_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!) |
Definition at line 160 of file canserial-peak.cpp.
cCANSerial_PEAK::cCANSerial_PEAK | ( | tDeviceHandle | _peak_handle, |
double | _timeout, | ||
int | _id_read, | ||
int | _id_write | ||
) |
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).
cCANSerial_PEAK::~cCANSerial_PEAK | ( | ) |
destructor: clean up
Definition at line 202 of file canserial-peak.cpp.
|
protected |
Translate a baudrate given as unsigned long into a baudrate code for struct termios.
Definition at line 309 of file canserial-peak.cpp.
|
virtual |
Close the previously opened CAN PEAK interface port.
Implements cSerialBase.
Definition at line 299 of file canserial-peak.cpp.
|
virtual |
Overloaded helper function that returns a PEAK error message for error code dw.
Reimplemented from cSerialBase.
Definition at line 517 of file canserial-peak.cpp.
|
virtual |
Overloaded helper function that returns the last Peak error number.
Reimplemented from cSerialBase.
Definition at line 526 of file canserial-peak.cpp.
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()!
Definition at line 532 of file canserial-peak.cpp.
|
virtual |
Return true if interface to CAN PEAK is open.
Implements cSerialBase.
Definition at line 291 of file canserial-peak.cpp.
|
virtual |
Open the device as configured by the parameters given to the constructor
Implements cSerialBase.
Definition at line 234 of file canserial-peak.cpp.
|
private |
private copy assignment operator without implementation, since copying of cCANSerial_PEAK objects makes no sense
|
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 cSerialBase.
Definition at line 375 of file canserial-peak.cpp.
|
virtual |
set the timeout for next readline() calls (negative value means: no timeout, wait for ever)
Reimplemented from cSerialBase.
Definition at line 507 of file canserial-peak.cpp.
|
virtual |
Write data to a previously opened port.
Write len bytes from *ptr to the CAN device
ptr | - pointer the byte array to send in memory |
len | - number of bytes to send |
Implements cSerialBase.
Definition at line 329 of file canserial-peak.cpp.
|
protected |
the baudrate to use in bit/s
Definition at line 84 of file canserial-peak.h.
|
protected |
the CAN ID used for reading
Definition at line 87 of file canserial-peak.h.
|
protected |
the CAN ID used for writing
Definition at line 90 of file canserial-peak.h.
|
protected |
Definition at line 97 of file canserial-peak.h.
|
private |
ptr to private, implementation specific members (using the 'Pimpl' (pointer to implementatino) design pattern)
Definition at line 101 of file canserial-peak.h.