/**
\mainpage Unofficial Qt Serial Port Library
%QSerialPort is a cross-platform serial port library, using Qt datatypes and
conventions. %QSerialPort inherits from QIODevice
and works natively with any Qt class that uses QIODevice objects as input or output.
%QSerialPort should work everywhere %Qt does, including Windows/Unix/Linux/Embedded Linux/WinCE/MacOSX. This
version of %QSerialPort is for Qt4, and requires no Qt3 compatibility code.
\section Characteristics Device Characteristics
%QSerialPort has the following QIODevice characteristics:
- Supports event-driven and polling programming models
- It is a sequential device like QProcess and
QTcpSocket
- It is an unbuffered device
\section using Using QSerialPort
The application simply includes <QSerialPort> and links to
libqserialport. There are additional examples available in the "examples" directory.
You will notice that %QSerialPort is part of TNX namespace. TNX stands for Tonix
which is a Qt based cross-platform hardware control framework with built in JavaScript support. Since Tonix
is specially designed for embedded system development and robotics projects %QSerialPort is an essential part of it.
Example:
\code
#include
int main(int argc, char *argv[])
{
using namespace TNX;
QCoreApplication a(argc, argv);
QSerialPort serport("COM5", "9600,8,n,1");
if ( !serport.open() )
qFatal("Cannot open serial port %s. Exiting..", qPrintable(portName));
if ( !serport.setCommTimeouts(QSerialPort::CtScheme_NonBlockingRead) )
qWarning("Cannot set communications timeout values at port %s.", qPrintable(portName));
int byteCounter = 0;
forever {
if ( serport.waitForReadyRead(5000) ) { // 5sec
QByteArray data = serport.read(512);
byteCounter += data.size();
std::cout << "Received data @ " << qPrintable(QDateTime::currentDateTime().toString("hh:mm:ss.zzz")) <<
". Echo back." << std::endl;
serport.write(data);
if ( byteCounter >= 4096 )
break;
}
else {
std::cout << "Timeout while waiting for incoming data @ " <<
qPrintable(QDateTime::currentDateTime().toString("hh:mm:ss.zzz")) << std::endl;
}
}
std::cout << "Polling example is terminated successfully." << std::endl;
return 0;
}
\endcode
*/