C++ serial port class for ROS. More...
#include <inc/CerealPort.h>
Public Member Functions | |
int | baudRate () |
Get the current baud rate. | |
CerealPort () | |
Constructor. | |
void | close () |
Close the serial port. | |
int | flush () |
Wrapper around tcflush. | |
void | open (const char *port_name, int baud_rate=115200) |
Open the serial port. | |
void | pauseStream () |
Pause streaming. | |
bool | portOpen () |
Check whether the port is open or not. | |
int | read (char *data, int max_length, int timeout=-1) |
Read from the port. | |
bool | readBetween (std::string *data, char start, char end, int timeout=-1) |
Read from the serial port between a start char and an end char. | |
int | readBytes (char *data, int length, int timeout=-1) |
Read a fixed number of bytes from the serial port. | |
int | readLine (char *data, int length, int timeout=-1) |
Read a line from the serial port. | |
bool | readLine (std::string *data, int timeout=-1) |
Read a line from the serial port. | |
void | resumeStream () |
Resume streaming. | |
bool | startReadBetweenStream (boost::function< void(std::string *)> f, char start, char end) |
Start a stream of readBetween() | |
bool | startReadLineStream (boost::function< void(std::string *)> f) |
Start a stream of readLine(std::string*, int) | |
bool | startReadStream (boost::function< void(char *, int)> f) |
Start a stream of read() | |
void | stopStream () |
Stop streaming. | |
int | write (const char *data, int length=-1) |
Write to the port. | |
~CerealPort () | |
Destructor. | |
Private Member Functions | |
void | readBetweenThread (char start, char end) |
Thread for a stream of readBetween() | |
void | readLineThread () |
Thread for a stream of readLine(std::string*, int) | |
void | readThread () |
Thread for a stream of read() | |
Private Attributes | |
int | baud_ |
Baud rate. | |
int | fd_ |
File descriptor. | |
boost::function< void(std::string *) | readBetweenCallback ) |
Stream readBetween callback boost function. | |
boost::function< void(char *, int) | readCallback ) |
Stream read callback boost function. | |
boost::function< void(std::string *) | readLineCallback ) |
Stream readLine callback boost function. | |
bool | stream_paused_ |
Whether streaming is paused or not. | |
bool | stream_stopped_ |
Whether streaming is stopped or not. | |
boost::thread * | stream_thread_ |
Stream thread. |
C++ serial port class for ROS.
This class was based on the serial port code found on the hokuyo_node as suggested by Blaise Gassend on the ros-users mailling list.
Definition at line 70 of file CerealPort.h.
Constructor.
Definition at line 59 of file CerealPort.cpp.
Destructor.
Definition at line 64 of file CerealPort.cpp.
int cereal::CerealPort::baudRate | ( | ) | [inline] |
Get the current baud rate.
Definition at line 98 of file CerealPort.h.
void cereal::CerealPort::close | ( | ) |
Close the serial port.
This call essentially wraps close.
Definition at line 133 of file CerealPort.cpp.
int cereal::CerealPort::flush | ( | ) |
Wrapper around tcflush.
Definition at line 358 of file CerealPort.cpp.
void cereal::CerealPort::open | ( | const char * | port_name, |
int | baud_rate = 115200 |
||
) |
Open the serial port.
This opens the serial port for communication. Wrapper for open.
port_name | A null terminated character array containing the name of the port. |
baud_rate | Baud rate of the serial port. Defaults to 115200. |
Definition at line 69 of file CerealPort.cpp.
void cereal::CerealPort::pauseStream | ( | ) |
Pause streaming.
Definition at line 484 of file CerealPort.cpp.
bool cereal::CerealPort::portOpen | ( | ) | [inline] |
Check whether the port is open or not.
Definition at line 95 of file CerealPort.h.
int cereal::CerealPort::read | ( | char * | data, |
int | max_length, | ||
int | timeout = -1 |
||
) |
Read from the port.
This function allows to read data from the serial port. Simple wrapper for read.
data | Data coming from the serial port. |
max_length | Maximum length of the incoming data. |
timeout | Timeout in milliseconds. |
Definition at line 159 of file CerealPort.cpp.
bool cereal::CerealPort::readBetween | ( | std::string * | data, |
char | start, | ||
char | end, | ||
int | timeout = -1 |
||
) |
Read from the serial port between a start char and an end char.
This function allows to read data from the serial port between a start and an end char.
data | Data coming from the serial port. |
start | Start character of the incoming data stream. |
end | End character of the incoming data stream. |
timeout | Timeout in milliseconds. |
Definition at line 289 of file CerealPort.cpp.
void cereal::CerealPort::readBetweenThread | ( | char | start, |
char | end | ||
) | [private] |
Thread for a stream of readBetween()
Stream version of the readBetween function.
start | Start character of the incoming data stream. |
end | End character of the incoming data stream. |
Definition at line 454 of file CerealPort.cpp.
int cereal::CerealPort::readBytes | ( | char * | data, |
int | length, | ||
int | timeout = -1 |
||
) |
Read a fixed number of bytes from the serial port.
This function allows to read a fixed number of data bytes from the serial port, no more, no less.
data | Data coming from the serial port. |
length | Fixed length of the incoming data. |
timeout | Timeout in milliseconds. |
Definition at line 183 of file CerealPort.cpp.
int cereal::CerealPort::readLine | ( | char * | data, |
int | length, | ||
int | timeout = -1 |
||
) |
Read a line from the serial port.
This function allows to read a line from the serial port. Data is return as char*
data | Data coming from the serial port. |
length | Length of the incoming data. |
timeout | Timeout in milliseconds. |
Definition at line 212 of file CerealPort.cpp.
bool cereal::CerealPort::readLine | ( | std::string * | data, |
int | timeout = -1 |
||
) |
Read a line from the serial port.
This function allows to read a line from the serial port. Data is return as std::string
data | Data coming from the serial port. |
timeout | Timeout in milliseconds. |
Definition at line 245 of file CerealPort.cpp.
void cereal::CerealPort::readLineThread | ( | ) | [private] |
Thread for a stream of readLine(std::string*, int)
Stream version of the readLine function.
Definition at line 420 of file CerealPort.cpp.
void cereal::CerealPort::readThread | ( | ) | [private] |
Thread for a stream of read()
Stream version of the read function.
Definition at line 379 of file CerealPort.cpp.
void cereal::CerealPort::resumeStream | ( | ) |
Resume streaming.
Definition at line 489 of file CerealPort.cpp.
bool cereal::CerealPort::startReadBetweenStream | ( | boost::function< void(std::string *)> | f, |
char | start, | ||
char | end | ||
) |
Start a stream of readBetween()
Stream version of the readBetween() function.
f | Callback boost function to receive the data. |
start | Start character of the incoming data stream. |
end | End character of the incoming data stream. |
Definition at line 441 of file CerealPort.cpp.
bool cereal::CerealPort::startReadLineStream | ( | boost::function< void(std::string *)> | f | ) |
Start a stream of readLine(std::string*, int)
Stream version of the readLine(std::string*, int) function.
f | Callback boost function to receive the data. |
Definition at line 407 of file CerealPort.cpp.
bool cereal::CerealPort::startReadStream | ( | boost::function< void(char *, int)> | f | ) |
Start a stream of read()
Stream version of the read function.
f | Callback boost function to receive the data. |
Definition at line 366 of file CerealPort.cpp.
void cereal::CerealPort::stopStream | ( | ) |
Stop streaming.
Definition at line 475 of file CerealPort.cpp.
int cereal::CerealPort::write | ( | const char * | data, |
int | length = -1 |
||
) |
Write to the port.
This function allows to send data through the serial port. Wraper for write.
data | Data to send in a character array or null terminated c string. |
length | Number of bytes being sent. Defaults to -1 if sending a c string. |
Definition at line 145 of file CerealPort.cpp.
int cereal::CerealPort::baud_ [private] |
Baud rate.
Definition at line 232 of file CerealPort.h.
int cereal::CerealPort::fd_ [private] |
File descriptor.
Definition at line 230 of file CerealPort.h.
boost::function<void(std::string*) cereal::CerealPort::readBetweenCallback) [private] |
Stream readBetween callback boost function.
Definition at line 266 of file CerealPort.h.
boost::function<void(char*, int) cereal::CerealPort::readCallback) [private] |
Stream read callback boost function.
Definition at line 262 of file CerealPort.h.
boost::function<void(std::string*) cereal::CerealPort::readLineCallback) [private] |
Stream readLine callback boost function.
Definition at line 264 of file CerealPort.h.
bool cereal::CerealPort::stream_paused_ [private] |
Whether streaming is paused or not.
Definition at line 269 of file CerealPort.h.
bool cereal::CerealPort::stream_stopped_ [private] |
Whether streaming is stopped or not.
Definition at line 271 of file CerealPort.h.
boost::thread* cereal::CerealPort::stream_thread_ [private] |
Stream thread.
Definition at line 259 of file CerealPort.h.