PIP  0.4.0_beta2
Platform-Independent Primitives
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PISerial Class Reference

Serial device. More...

+ Inheritance diagram for PISerial:

Public Types

enum  Parameters { ParityControl = 0x1, ParityOdd = 0x2, TwoStopBits = 0x4 }
 Parameters of PISerial. More...
 
enum  Speed {
  S50 = 50, S75 = 75, S110 = 110, S300 = 300,
  S600 = 600, S1200 = 1200, S2400 = 2400, S4800 = 4800,
  S9600 = 9600, S19200 = 19200, S38400 = 38400, S57600 = 57600,
  S115200 = 115200
}
 Speed of PISerial. More...
 
- Public Types inherited from PIIODevice
enum  DeviceMode { ReadOnly = 0x01, WriteOnly = 0x02, ReadWrite = 0x03 }
 Open modes for PIIODevice. More...
 
- Public Types inherited from PIThread
enum  Priority {
  piHighest, piHigh, piNormal, piLow,
  piLowerst
}
 Priority of thread. More...
 

Public Member Functions

 PISerial ()
 Contructs an empty PISerial.
 
 PISerial (const PIString &device, PISerial::Speed speed=S115200, PIFlags< PISerial::Parameters > params=0)
 Contructs PISerial with device name "device", speed "speed" and parameters "params".
 
void setSpeed (PISerial::Speed speed)
 Set both input and output speed to "speed".
 
void setOutSpeed (PISerial::Speed speed)
 Set output speed to "speed".
 
void setInSpeed (PISerial::Speed speed)
 Set input speed to "speed".
 
void setDevice (const PIString &dev)
 Set device name to "dev".
 
void setParameters (PIFlags< PISerial::Parameters > parameters_)
 Set parameters to "parameters_".
 
void setParameter (PISerial::Parameters parameter, bool on=true)
 Set parameter "parameter" to "on" state.
 
bool isParameterSet (PISerial::Parameters parameter) const
 Returns if parameter "parameter" is set.
 
PIFlags< PISerial::Parametersparameters () const
 Returns parameters.
 
void setDataBitsCount (int bits)
 Set data bits count. Valid range is from 5 to 8, befault is 8.
 
int dataBitsCount () const
 Returns data bits count.
 
bool setPin (int number, bool on)
 Set pin number "number" to logic level "on". Valid numbers are 4 (DTR) and 7 (RTS)
 
bool isPin (int number) const
 Returns pin number "number" logic level. Valid numbers range is from 1 to 9.
 
void setReadIsBlocking (bool yes)
 Set read is blocking for function read(void * read_to, int max_size)
 
PIString device () const
 Returns device name.
 
PISerial::Speed outSpeed () const
 Returns output speed.
 
PISerial::Speed inSpeed () const
 Returns input speed.
 
void flush ()
 Discard all buffered input and output data.
 
int read (void *read_to, int max_size)
 Basic read function. More...
 
bool read (void *read_to, int max_size, double timeout_ms)
 Advanced read function. More...
 
PIString read (int size=-1, double timeout_ms=1000.)
 Advanced read function. More...
 
PIByteArray readData (int size=-1, double timeout_ms=1000.)
 Advanced read function. More...
 
int write (const void *data, int max_size, bool wait=false)
 Write to device data "data" with maximum size "max_size" and wait for data written if "wait" is true. More...
 
bool send (const void *data, int size, bool wait=false)
 Write to device data "data" with maximum size "size" and wait for data written if "wait" is true. More...
 
bool send (const PIString &data, bool wait=false)
 Write to device string "data" and wait for data written if "wait" is true. More...
 
bool send (const PIByteArray &data, bool wait=false)
 Write to device byte array "data" and wait for data written if "wait" is true. More...
 
PIString constructFullPath () const
 Reimplement to construct full unambiguous string, describes this device, default returns path()
 
- Public Member Functions inherited from PIIODevice
 PIIODevice ()
 Constructs a empty PIIODevice.
 
 PIIODevice (const PIString &path, DeviceMode mode=ReadWrite)
 Constructs a PIIODevice with path and mode. More...
 
DeviceMode mode () const
 Current open mode of device.
 
PIString path () const
 Current path of device.
 
void setPath (const PIString &path)
 Set path of device.
 
bool isReadable () const
 Return true if mode is ReadOnly or ReadWrite.
 
bool isWriteable () const
 Return true if mode is WriteOnly or ReadWrite.
 
bool isOpened () const
 Return true if device is successfully opened.
 
bool isClosed () const
 Return true if device is closed.
 
bool canRead () const
 Return true if device can read now.
 
bool canWrite () const
 Return true if device can write now.
 
void setReopenEnabled (bool yes=true)
 Set execution of open enabled while threaded read on closed device.
 
void setReopenTimeout (int msecs)
 Set timeout in milliseconds between open tryings if reopen is enabled.
 
bool isReopenEnabled () const
 Return reopen enable.
 
int reopenTimeout ()
 Return reopen timeout.
 
void setThreadedReadSlot (ReadRetFunc func)
 Set "threaded read slot". More...
 
void setThreadedReadData (void *d)
 Set custom data that will be passed to "threaded read slot".
 
void setThreadedReadBufferSize (int new_size)
 Set size of threaded read buffer. More...
 
int threadedReadBufferSize () const
 Return size of threaded read buffer.
 
const uchar * threadedReadBuffer () const
 Return content of threaded read buffer.
 
void * threadedReadData () const
 Return custom data that will be passed to "threaded read slot".
 
bool isThreadedRead () const
 Return true if threaded read is started.
 
void startThreadedRead ()
 Start threaded read.
 
void startThreadedRead (ReadRetFunc func)
 Start threaded read and assign "threaded read slot" to "func".
 
void stopThreadedRead ()
 Stop threaded read.
 
bool isThreadedWrite () const
 Return true if threaded write is started.
 
void startThreadedWrite ()
 Start threaded write.
 
void stopThreadedWrite ()
 Stop threaded write.
 
void clearThreadedWriteQueue ()
 Clear threaded write task queue.
 
void start ()
 Start both threaded read and threaded write.
 
void stop (bool wait=false)
 Stop both threaded read and threaded write and if "wait" block until both threads are stop.
 
PIByteArray read (int max_size)
 Read from device maximum "max_size" bytes and return them as PIByteArray.
 
PIByteArray readForTime (double timeout_ms)
 Read from device for "timeout_ms" milliseconds and return readed data as PIByteArray. Timeout should to be greater than 0.
 
int write (const PIByteArray &data)
 Write "data" to device.
 
ullong writeThreaded (const void *data, int max_size)
 Add task to threaded write queue and return task ID.
 
ullong writeThreaded (const PIByteArray &data)
 Add task to threaded write queue and return task ID.
 
bool configure (const PIString &config_file, const PIString &section, bool parent_section=false)
 Configure device from section "section" of file "config_file", if "parent_section" parent section also will be read.
 
bool open ()
 Open device.
 
bool open (const PIString &_path)
 Open device with path "path".
 
bool open (const DeviceMode &_mode)
 Open device with mode "mode".
 
bool open (const PIString &_path, const DeviceMode &_mode)
 Open device with path "path" and mode "mode".
 
bool close ()
 Close device.
 
bool initialize ()
 Initialize device.
 
void opened ()
 Raise if succesfull open.
 
void closed ()
 Raise if succesfull close.
 
void threadedReadEvent (uchar *readed, int size)
 Raise if read thread succesfull read some data.
 
void threadedWriteEvent (ullong id, int written_size)
 Raise if write thread succesfull write some data of task with ID "id".
 
- Public Member Functions inherited from PIThread
 PIThread (void *data, ThreadFunc func, bool startNow=false, int timer_delay=-1)
 Contructs thread with custom data "data", external function "func" and main cycle delay "timer_delay".
 
 PIThread (bool startNow=false, int timer_delay=-1)
 Contructs thread with main cycle delay "timer_delay".
 
void setData (void *d)
 Set common data passed to external function.
 
void setSlot (ThreadFunc func)
 Set external function that will be executed after every run()
 
void setPriority (PIThread::Priority prior)
 Set priority of thread.
 
PIThread::Priority priority () const
 Return priority of thread.
 
bool isRunning () const
 Return true if thread is running.
 
void needLockRun (bool need)
 Set necessity of lock every run with internal mutex.
 
PIMutexmutex ()
 Return internal mutex.
 
bool start (int timer_delay)
 Start thread. More...
 
bool start (ThreadFunc func, int timer_delay)
 Start thread. More...
 
bool startOnce ()
 Start thread without internal loop. More...
 
bool startOnce (ThreadFunc func)
 Start thread without internal loop. More...
 
void stop (bool wait)
 Stop thread. More...
 
void terminate ()
 Strongly stop thread. More...
 
bool waitForStart (int timeout_msecs)
 Wait for thread start. More...
 
bool waitForFinish (int timeout_msecs)
 Wait for thread finish. More...
 
void lock ()
 Lock internal mutex.
 
void unlock ()
 Unlock internal mutex.
 
void started ()
 Raise on thread start.
 
void stopped ()
 Raise on thread stop.
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
bool debug () const
 Return if debug of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object debug active.
 
const PIMap< PIString,
PIVariant > & 
properties () const
 Returns properties of the object.
 
int propertiesCount () const
 Returns properties count of the object.
 
PIVariant property (const PIString &name) const
 Returns property with name "name".
 
void setProperty (const PIString &name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const PIString &name) const
 Returns if property with name "name" exists.
 

Static Public Member Functions

static PIVector< int > availableSpeeds ()
 Returns all available speeds for serial devices.
 
static PIStringList availableDevices (bool test=false)
 Returns all available system devices. If "test" each device will be tried to open.
 
- Static Public Member Functions inherited from PIIODevice
static PIIODevicecreateFromFullPath (const PIString &full_path)
 Try to determine suitable device, create new one, configure it with configureFromFullPath() and returns it. More...
 
- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static void piDisconnect (PIObject *src)
 Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 

Protected Member Functions

PIString fullPathPrefix () const
 Reimplement to construct full unambiguous string prefix. Creating devices by unambiguous string.
 
void configureFromFullPath (const PIString &full_path)
 Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
 
bool configureDevice (const void *e_main, const void *e_parent=0)
 Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
 
int write (const void *data, int max_size)
 Reimplement this function to write to your device.
 
virtual void received (const void *data, int size)
 Executes when any read function was successful. Default implementation does nothing.
 
bool openDevice ()
 Reimplement to open device, return value will be set to "opened_" variable.
 
bool closeDevice ()
 Reimplement to close device, inverse return value will be set to "opened_" variable.
 
- Protected Member Functions inherited from PIIODevice
virtual bool init ()
 Function executed before first openDevice() or from constructor.
 
virtual bool threadedRead (uchar *readed, int size)
 Function executed when thread read some data, default implementation execute external slot "ret_func_".
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const PIString &name)
 Virtual function executes after property with name "name" has been changed.
 

Configurable parameters

string device
 device, default ""
 
int speed
 input/output speed, default 115200
 
int dataBitsCount
 dataBitsCount, default 8
 
bool parityControl
 parityControl, default false
 
bool parityOdd
 parityOdd, default false
 
bool twoStopBits
 twoStopBits, default false
 

Additional Inherited Members

- Public Attributes inherited from PIIODevice
bool reopenEnabled
 setReopenEnabled, default "true"
 
int reopenTimeout
 setReopenTimeout in ms, default 1000
 
int threadedReadBufferSize
 setThreadedReadBufferSize in bytes, default 4096
 

Detailed Description

Serial device.

Synopsis

This class provide access to serial device, e.g. COM port. It can read, write, wait for write. There are several read and write functions.

Member Enumeration Documentation

Parameters of PISerial.

Enumerator
ParityControl 

Enable parity check and generate

ParityOdd 

Parity is odd instead of even

TwoStopBits 

Two stop bits instead of one

Speed of PISerial.

Enumerator
S50 

50 baud

S75 

75 baud

S110 

110 baud

S300 

300 baud

S600 

600 baud

S1200 

1200 baud

S2400 

2400 baud

S4800 

4800 baud

S9600 

9600 baud

S19200 

19200 baud

S38400 

38400 baud

S57600 

57600 baud

S115200 

115200 baud

Member Function Documentation

int PISerial::read ( void *  read_to,
int  max_size 
)
virtual

Basic read function.

Read to pointer "read_to" no more than "max_size". If read is set to blocking this function will be wait at least one byte.

Returns
Readed bytes count
See Also
readData()

Reimplemented from PIIODevice.

bool PISerial::read ( void *  data,
int  size,
double  timeout_ms 
)

Advanced read function.

Read to pointer "read_to" no more than "max_size" and no longer than "timeout_ms" milliseconds. If "timeout_ms" < 0 function will be wait forever until "max_size" will be readed. If size <= 0 function immediate returns false. For read data with unknown size use function readData().

Returns
True if readed bytes count = "max_size", else false
See Also
readData()
PIString PISerial::read ( int  size = -1,
double  timeout_ms = 1000. 
)

Advanced read function.

Read all or no more than "size" and no longer than "timeout_ms" milliseconds. If "timeout_ms" < 0 function will be wait forever until "size" will be readed. If "size" <= 0 function will be read all until "timeout_ms" elaped.
If size <= 0 and "timeout_ms" <= 0 function immediate returns empty string.
This function similar to readData() but returns data as string.

See Also
readData()
PIByteArray PISerial::readData ( int  size = -1,
double  timeout_ms = 1000. 
)

Advanced read function.

Read all or no more than "size" and no longer than "timeout_ms" milliseconds. If "timeout_ms" < 0 function will be wait forever until "size" will be readed. If "size" <= 0 function will be read all until "timeout_ms" elaped.
If size <= 0 and "timeout_ms" <= 0 function immediate returns empty byte array.
This function similar to read() but returns data as byte array.

See Also
read()
int PISerial::write ( const void *  data,
int  max_size,
bool  wait = false 
)

Write to device data "data" with maximum size "max_size" and wait for data written if "wait" is true.

Returns
sended bytes count
bool PISerial::send ( const void *  data,
int  size,
bool  wait = false 
)
inline

Write to device data "data" with maximum size "size" and wait for data written if "wait" is true.

Returns
true if sended bytes count = "size"
bool PISerial::send ( const PIString data,
bool  wait = false 
)
inline

Write to device string "data" and wait for data written if "wait" is true.

Returns
true if sended bytes count = size of string
bool PISerial::send ( const PIByteArray data,
bool  wait = false 
)
inline

Write to device byte array "data" and wait for data written if "wait" is true.

Returns
true if sended bytes count = size of string