/** \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 */