libcommonc++
0.7
|
A class representing a serial communications port. More...
#include <SerialPort.h++>
Public Types | |
enum | BaudRate { BaudOther = -1, Baud300 = 300, Baud600 = 600, Baud1200 = 1200, Baud1800 = 1800, Baud2400 = 2400, Baud4800 = 4800, Baud9600 = 9600, Baud19200 = 19200, Baud38400 = 38400, Baud57600 = 57600, Baud115200 = 115200, Baud230400 = 230400 } |
Baud rates. More... | |
enum | Parity { ParityOther = -1, ParityNone, ParityOdd, ParityEven, ParityMark, ParitySpace } |
Parity types. More... | |
enum | DataBits { DataBitsOther = -1, DataBits5 = 5, DataBits6 = 6, DataBits7 = 7, DataBits8 = 8 } |
Data bits per byte. More... | |
enum | StopBits { StopBitsOther = -1, StopBits1 = 1, StopBits2 = 2, StopBits1_5 = 3 } |
Stop bits. More... | |
enum | FlowControl { FlowOther = -1, FlowOff, FlowHardware, FlowXOnXOff } |
Flow control modes. More... | |
Public Member Functions | |
SerialPort (const String &device) | |
Construct a new SerialPort for the given device. More... | |
virtual | ~SerialPort () |
Destructor. More... | |
virtual void | open () |
Open the serial port connection. More... | |
void | flush () |
Flush any pending I/O on the connection. More... | |
void | setTimeout (timespan_ms_t timeout) |
Set the stream I/O timeout, in milliseconds. More... | |
void | setBaudRate (BaudRate baud) |
Set the baud rate for the connection. More... | |
BaudRate | getBaudRate () |
Get the baud rate for the connection. More... | |
void | setParity (Parity parity) |
Set the parity type for the connection. More... | |
Parity | getParity () |
Get the parity type for the connection. More... | |
void | setDataBits (DataBits bits) |
Set the number of data bits for the connection. More... | |
DataBits | getDataBits () |
Get the data bits value for the connection. More... | |
void | setStopBits (StopBits bits) |
Set the number of stop bits for the connection. More... | |
StopBits | getStopBits () |
Get the stop bits value for the connection. More... | |
void | setFlowControl (FlowControl flow) |
Set the flow control mode for the connection. More... | |
FlowControl | getFlowControl () |
Get the flow control mode for the connection. More... | |
void | sendBreak (uint_t duration) |
Send a break on the serial port for the specified amount of time. More... | |
String | getDevice () const |
Get the device for this serial port. More... | |
virtual size_t | read (ByteBuffer &buffer) |
Read data from the stream into a ByteBuffer. More... | |
virtual size_t | read (CharBuffer &buffer) |
Read data from the stream into a CharBuffer. More... | |
template<typename T > | |
size_t | read (Buffer< T > &buffer, size_t &partial) |
Read data from the stream into a Buffer of arbitrary type. More... | |
virtual size_t | read (byte_t *buffer, size_t buflen) |
Read data from the stream into a raw buffer. More... | |
size_t | read (byte_t *buffer, size_t buflen, int64_t offset, AsyncIOTask &task) |
Read data asynchronously from the stream into a raw buffer. More... | |
size_t | read (ByteBuffer &buffer, int64_t offset, AsyncIOTask &task) |
Read data asynchronously from the stream into a Buffer. More... | |
virtual size_t | read (MemoryBlock *vec, uint_t count) |
Read data from the stream into a series of I/O buffers. More... | |
size_t | write (const byte_t *buffer, size_t buflen, int64_t offset, AsyncIOTask &task) |
Write data asynchronously to the stream from a raw buffer. More... | |
size_t | write (ByteBuffer &buffer, int64_t offset, AsyncIOTask &task) |
Write data asynchronously to the stream from a Buffer. More... | |
virtual size_t | write (ByteBuffer &buffer) |
Write data to the stream from a ByteBuffer. More... | |
virtual size_t | write (CharBuffer &buffer) |
Write data to the stream from a CharBuffer. More... | |
template<typename T > | |
size_t | write (Buffer< T > &buffer, size_t &partial) |
Write data to the stream from a Buffer of arbitrary type. More... | |
virtual size_t | write (const byte_t *buffer, size_t buflen) |
Write data to the stream from a raw buffer, until either the entire buffer is written or an error or timeout occurs. More... | |
virtual size_t | write (const MemoryBlock *vec, uint_t count) |
Write data to the stream from a series of I/O buffers. More... | |
virtual size_t | readFully (ByteBuffer &buffer, size_t count=0) |
Read data from the stream into a ByteBuffer, until either the buffer is full or an error or timeout occurs. More... | |
virtual size_t | readFully (CharBuffer &buffer, size_t count=0) |
Read data from the stream into a CharBuffer, until either the buffer is full or an error or timeout occurs. More... | |
template<typename T > | |
size_t | readFully (Buffer< T > &buffer, size_t &partial) |
Read data from the stream into a Buffer of arbitrary type, until either the buffer is full or an error or timeout occurs. More... | |
virtual size_t | readFully (byte_t *buffer, size_t buflen) |
Read data from the stream into a raw buffer, until either the buffer is full or an error or timeout occurs. More... | |
virtual size_t | writeFully (ByteBuffer &buffer) |
Write data to the stream from a ByteBuffer, until either the entire buffer is written or an error or timeout occurs. More... | |
virtual size_t | writeFully (CharBuffer &buffer) |
Write data to the stream from a CharBuffer, until either the entire buffer is written or an error or timeout occurs. More... | |
template<typename T > | |
size_t | writeFully (Buffer< T > &buffer, size_t &partial) |
Write data to the stream from a Buffer of arbitrary type, until either the entire buffer is written or an error or timeout occurs. More... | |
virtual size_t | writeFully (const byte_t *buffer, size_t buflen) |
Write data to the stream from a raw buffer. More... | |
virtual int64_t | seek (int64_t offset, SeekMode mode=SeekAbsolute) |
Reposition the seek pointer in the stream. More... | |
virtual int64_t | tell () |
Get the current (absolute) offset of the seek pointer. More... | |
bool | isOpen () const |
Test if the stream is open. More... | |
bool | isSeekable () const |
Test if the stream supports seeking. More... | |
bool | isReadable () const |
Test if the stream can be read from. More... | |
bool | isWritable () const |
Test if the stream can be written to. More... | |
bool | isFullDuplex () const |
Test if the stream is full-duplex (i.e., supports both reading and writing). More... | |
bool | isHalfDuplex () const |
Test if the stream is half-duplex (i.e., supports either reading or writing, but not both). More... | |
virtual void | close (IOMode mode=IOReadWrite) |
Close the stream for reading, writing, or both. More... | |
timespan_ms_t | getTimeout () const |
Get the stream I/O timeout, in milliseconds. More... | |
Static Public Member Functions | |
static BaudRate | lookupBaudRate (uint_t baudRate) |
Get the BaudRate enumeration value for the given baud rate value. More... | |
Static Public Attributes | |
static const uint_t | MAX_IOBLOCK_COUNT = 16 |
The maximum number of I/O buffers that can be passed to the vector I/O methods. More... | |
Protected Member Functions | |
void | _init (FileHandle handle, bool seekable, bool readable, bool writable) |
Initialize the stream for use with an open file. More... | |
A class representing a serial communications port.
enum BaudRate |
enum DataBits |
enum FlowControl |
enum Parity |
enum StopBits |
SerialPort | ( | const String & | device | ) |
Construct a new SerialPort for the given device.
device | The device: a serial device file like "/dev/ttyS0" on Linux or "/dev/cu.serial0" on Mac OS X, or a label like "\\.\COM1" on Windows. |
|
virtual |
Destructor.
Closes the serial port connection.
|
protectedinherited |
Initialize the stream for use with an open file.
handle | The handle to an open file. |
seekable | A flag indicating whether the stream is seekable. |
readable | A flag indicating whether the stream is readable. |
writable | A flag indicating whether the stream is writable. |
|
virtualinherited |
Close the stream for reading, writing, or both.
mode | The close mode. |
Reimplemented in StreamSocket, and StreamPipe.
void flush | ( | ) |
Flush any pending I/O on the connection.
IOException | If an I/O error occurs, or if the conneciton is not open. |
SerialPort::BaudRate getBaudRate | ( | ) |
Get the baud rate for the connection.
BaudOther
if the baud rate is not one of the predefined enum values. IOException | If an I/O error occurs, or if the connection is not open. |
SerialPort::DataBits getDataBits | ( | ) |
Get the data bits value for the connection.
DataBitsOther
if the value is not one of the predefined enum values. IOException | If an I/O error occurs, or if the connection is not open. |
|
inline |
Get the device for this serial port.
SerialPort::FlowControl getFlowControl | ( | ) |
Get the flow control mode for the connection.
FlowControlOther
if the flow control mode is not one of the predefined enum values. IOException | If an I/O error occurs, or if the connection is not open. |
SerialPort::Parity getParity | ( | ) |
Get the parity type for the connection.
ParityOther
if the parity type is not one of the predefined enum values. IOException | If an I/O error occurs, or if the connection is not open. |
SerialPort::StopBits getStopBits | ( | ) |
Get the stop bits value for the connection.
StopBitsOther
if the value is not one of the predefined enum values. IOException | If an I/O error occurs, or if the connection is not open. |
|
inlineinherited |
Get the stream I/O timeout, in milliseconds.
|
inlineinherited |
Test if the stream is full-duplex (i.e., supports both reading and writing).
|
inlineinherited |
Test if the stream is half-duplex (i.e., supports either reading or writing, but not both).
|
inlineinherited |
Test if the stream is open.
|
inlineinherited |
Test if the stream can be read from.
|
inlineinherited |
Test if the stream supports seeking.
|
inlineinherited |
Test if the stream can be written to.
|
static |
Get the BaudRate enumeration value for the given baud rate value.
baudRate | A baud rate. |
|
virtual |
Open the serial port connection.
This method must be called before any of the get*() or set*() methods can be used.
IOException | If an I/O error occurs. |
|
virtualinherited |
Read data from the stream into a ByteBuffer.
buffer | The buffer to read into. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
Reimplemented in StreamSocket.
|
virtualinherited |
Read data from the stream into a CharBuffer.
buffer | The buffer to read into. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
Reimplemented in StreamSocket.
|
inlineinherited |
Read data from the stream into a Buffer of arbitrary type.
If sizeof(T) is greater than 1 byte, then there can be no guarantee that the number of bytes read before a timeout or error occurs will be evenly divisible by sizeof(T). If the final element was partially read, the number of bytes of the element that were read will be stored in partial; this value should be passed unmodified to the next invocation of this method to continue reading from the appropriate offset within the partially-read element.
buffer | The buffer to read into. |
partial | The number of bytes remaining to read for a partially-read element; on return, the number of bytes read of a partially-read element, or 0 if the last element was read completely. Should be set to 0 prior to the first call to this method for a fresh buffer. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
|
virtualinherited |
Read data from the stream into a raw buffer.
buffer | The buffer to read into. |
buflen | The number of bytes to read. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
Reimplemented in StreamSocket.
|
inherited |
Read data asynchronously from the stream into a raw buffer.
buffer | The buffer to read into. |
buflen | The number of bytes to read. |
offset | The file offset to read from. |
task | The async I/O control block for monitoring the operation. |
IOException | If an I/O error occurred. |
|
inherited |
Read data asynchronously from the stream into a Buffer.
buffer | The Buffer to read into. This object must not be destroyed before the asynchronous I/O operation is completed or cancelled. |
offset | The file offset to read from. |
task | The async I/O control block for monitoring the operation. |
IOException | If an I/O error occurred. |
|
virtualinherited |
Read data from the stream into a series of I/O buffers.
This operation is known as "vector read" or "scatter read." The buffers are read into in order. On systems that support it, the operation is performed with a single system call.
vec | An array of buffers to read into. |
count | The number of buffers in the array. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
Reimplemented in StreamSocket.
|
virtualinherited |
Read data from the stream into a ByteBuffer, until either the buffer is full or an error or timeout occurs.
buffer | The buffer to read into. |
count | The number of bytes to read. If 0 or greater than the number of bytes between the position and the limit, reads up to the limit. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
|
virtualinherited |
Read data from the stream into a CharBuffer, until either the buffer is full or an error or timeout occurs.
buffer | The buffer to read into. |
count | The number of characters to read. If 0 or greater than the number of bytes between the position and the limit, reads up to the limit. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
|
inlineinherited |
Read data from the stream into a Buffer of arbitrary type, until either the buffer is full or an error or timeout occurs.
If sizeof(T) is greater than 1 byte, then there can be no guarantee that the number of bytes read before a timeout or error occurs will be evenly divisible by sizeof(T). If the final element was partially read, the number of bytes of the element that were read will be stored in partial; this value should be passed unmodified to the next invocation of this method to continue reading from the appropriate offset within the partially-read element.
buffer | The buffer to read into. |
partial | The number of bytes remaining to read for a partially-read element; on return, the number of bytes read of a partially-read element, or 0 if the last element was read completely. Should be set to 0 prior to the first call to this method for a fresh buffer. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
|
virtualinherited |
Read data from the stream into a raw buffer, until either the buffer is full or an error or timeout occurs.
buffer | The buffer to read into. |
buflen | The number of bytes to read. |
IOException | If the end-of-file was reached or some other I/O error occurred. |
|
virtualinherited |
Reposition the seek pointer in the stream.
offset | The new offset. |
mode | The seek mode. |
IOException | If the stream does not support seeking, or if some other I/O error occurred. |
void sendBreak | ( | uint_t | duration | ) |
Send a break on the serial port for the specified amount of time.
duration | The duration. On Windows, the duration is specified in milliseconds. On other platforms, the meaning of the value is implementation-defined. |
void setBaudRate | ( | SerialPort::BaudRate | baud | ) |
Set the baud rate for the connection.
baud | The new baud rate. |
IOException | If an I/O error occurs, or if the supplied baud rate is BaudOther , or if the connection is not open. |
void setDataBits | ( | SerialPort::DataBits | bits | ) |
Set the number of data bits for the connection.
bits | The new data bits value. |
IOException | If an I/O error occurs, or if the supplied data bits value is DataBitsOther , or if the connection is not open. |
void setFlowControl | ( | SerialPort::FlowControl | flow | ) |
Set the flow control mode for the connection.
flow | The new flow control mode. |
IOException | If an I/O error occurs, or if the supplied flow control mode is FlowControlOther , or if the connection is not open. |
void setParity | ( | SerialPort::Parity | parity | ) |
Set the parity type for the connection.
parity | The new parity type. |
IOException | If an I/O error occurs, or if the supplied parity type is ParityOther , or if the connection is not open. |
void setStopBits | ( | SerialPort::StopBits | bits | ) |
Set the number of stop bits for the connection.
bits | The new stop bits value. |
IOException | If an I/O error occurs, or if the supplied stop bits value is StopBitsOther , or if the connection is not open. |
|
virtual |
Set the stream I/O timeout, in milliseconds.
A timeout of 0 indicates no timeout, and a timeout of -1 indicates infinite timeout (blocking I/O).
Reimplemented from Stream.
|
virtualinherited |
Get the current (absolute) offset of the seek pointer.
IOException | If the stream does not support seeking, or if some other I/O error occurred. |
|
inherited |
Write data asynchronously to the stream from a raw buffer.
buffer | The buffer to write. |
buflen | The number of bytes to write. |
offset | The file offset to write to. |
task | The async I/O control block for monitoring the operation. |
IOException | If an I/O error occurred. |
|
inherited |
Write data asynchronously to the stream from a Buffer.
buffer | The Buffer to write. This object must not be destroyed before the asynchronous I/O operation is completed or cancelled. |
offset | The file offset to write to. |
task | The async I/O control block for monitoring the operation. |
IOException | If an I/O error occurred. |
|
virtualinherited |
Write data to the stream from a ByteBuffer.
buffer | The buffer to write. |
IOException | If an I/O error occurred. |
Reimplemented in StreamSocket.
|
virtualinherited |
Write data to the stream from a CharBuffer.
buffer | The buffer to write. |
IOException | If an I/O error occurred. |
Reimplemented in StreamSocket.
|
inlineinherited |
Write data to the stream from a Buffer of arbitrary type.
If sizeof(T) is greater than 1 byte, then there can be no guarantee that the number of bytes written before a timeout or error occurs will be evenly divisible by sizeof(T). If the final element was partially written, the number of bytes of the element that were written will be stored in partial; this value should be passed unmodified to the next invocation of this method to continue writing from the appropriate offset within the partially-written element.
buffer | The buffer to write. |
partial | The number of bytes remaining to write for a partially-written element; on return, the number of bytes written of a partially-written element, or 0 if the last element was written completely. Should be set to 0 prior to the first call to this method for a fresh buffer. |
IOException | If an I/O error occurred. |
|
virtualinherited |
Write data to the stream from a raw buffer, until either the entire buffer is written or an error or timeout occurs.
buffer | A pointer to the buffer. |
buflen | The number of bytes to write. |
IOException | If an I/O error occurred. |
Reimplemented in StreamSocket.
|
virtualinherited |
Write data to the stream from a series of I/O buffers.
This operation is known as "vector write" or "gather write." The buffers are written in order. On systems that support it, the operation is performed with a single system call.
vec | An array of buffers to write. |
count | The number of buffers in the array. |
IOException | If an I/O error occurred. |
Reimplemented in StreamSocket.
|
virtualinherited |
Write data to the stream from a ByteBuffer, until either the entire buffer is written or an error or timeout occurs.
buffer | The buffer to write. |
IOException | If and I/O error occurred. |
|
virtualinherited |
Write data to the stream from a CharBuffer, until either the entire buffer is written or an error or timeout occurs.
buffer | The buffer to write. |
IOException | If an I/O error occurred. |
|
inlineinherited |
Write data to the stream from a Buffer of arbitrary type, until either the entire buffer is written or an error or timeout occurs.
If sizeof(T) is greater than 1 byte, then there can be no guarantee that the number of bytes written before a timeout or error occurs will be evenly divisible by sizeof(T). If the final element was partially written, the number of bytes of the element that were written will be stored in partial; this value should be passed unmodified to the next invocation of this method to continue writing from the appropriate offset within the partially-written element.
buffer | The buffer to write. |
partial | The number of bytes remaining to write for a partially-written element; on return, the number of bytes written of a partially-written element, or 0 if the last element was written completely. Should be set to 0 prior to the first call to this method for a fresh buffer. |
IOException | If an I/O error occurred. |
|
virtualinherited |
Write data to the stream from a raw buffer.
buffer | A pointer to the buffer. |
buflen | The number of bytes to write. |
IOException | If an I/O error occurred. |
|
staticinherited |
The maximum number of I/O buffers that can be passed to the vector I/O methods.