#include <QtSerialPort/QSerialPort>
#include <QApplication>
#include <QtCore/QTime>
#include <QtCore/QTextStream>
int main(int argc, char *argv[])
{
// QApplication app(argc, argv);
QTextStream cout(stdout);
QTextStream cin(stdin);
QSerialPort serial;
QString portName = "ttyUSB0";
serial.setPortName(portName);
if (!serial.open(QIODevice::ReadWrite)) {
cout << QObject::tr("Failed to open port %1, error: %2")
.arg(portName)
.arg(serial.errorString()) << endl;
return 1;
}
if (!serial.setBaudRate(QSerialPort::Baud115200)) {
cout << QObject::tr("Can't set baud rate 9600 baud to port %1, error code %2")
.arg(portName).arg(serial.error());
return 1;
}
if (!serial.setDataBits(QSerialPort::Data8)) {
cout << QObject::tr("Can't set 8 data bits to port %1, error code %2")
.arg(portName).arg(serial.error());
return 1;
}
if (!serial.setParity(QSerialPort::NoParity)) {
cout << QObject::tr("Can't set no parity to port %1, error code %2")
.arg(portName).arg(serial.error());
return 1;
}
if (!serial.setStopBits(QSerialPort::OneStop)) {
cout << QObject::tr("Can't set 1 stop bit to port %1, error code %2")
.arg(portName).arg(serial.error());
return 1;
}
if (!serial.setFlowControl(QSerialPort::NoFlowControl)) {
cout << QObject::tr("Can't set no flow control to port %1, error code %2")
.arg(portName).arg(serial.error());
return 1;
}
QByteArray requestData("ls");
requestData.append(QLatin1String("\x0A"));
// write request
serial.write(requestData);
if (serial.waitForBytesWritten(5000)) {
//! [8] //! [10]
// read response
if (serial.waitForReadyRead(5000)) {
QByteArray responseData = serial.readAll();
while (serial.waitForReadyRead(10))
responseData += serial.readAll();
QString response(responseData);
//! [12]
cout << response << endl;
//! [10] //! [11] //! [12]
} else {
cout << QObject::tr("Wait read response timeout %1")
.arg(QTime::currentTime().toString());
}
//! [9] //! [11]
} else {
cout << QObject::tr("Wait write request timeout %1")
.arg(QTime::currentTime().toString());
}
return 0;
}
When i run the program, it appears like this:
QApplication::qAppName: Please instantiate the QApplication object first
How can i do ?
↧