QSerialPort не считывает данные
Код:
#include <QtSerialPort>
#include <QIODevice>
#include <QCoreApplication>
#include <stdio.h>
#include <stdlib.h>
#include <VLCSTR.H>
#include <VLCDSTR.H>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSerialPort qp("COM4");
if(qp.open(QIODevice::ReadWrite))
{
printf("-> QSerialPort.open()\t-\t[OK]\n\r");
}
else
{
printf("-> QSerialPort.open()\t-\t[FAILED]\n\r");
printf("-> Error: %s\n\r", qp.errorString());
}
if(qp.setBaudRate(QSerialPort::Baud57600) &&
qp.setDataBits(QSerialPort::Data8) &&
qp.setStopBits(QSerialPort::OneStop) &&
qp.setParity(QSerialPort::NoParity) &&
qp.setFlowControl(QSerialPort::NoFlowControl))
{
printf("-> port set up\t-\t[OK]\n\r");
}
//CDconString ds;
//ds.CreateDINQuery(16);
char buf[] ="$10M\r";
if(qp.write(buf, 5))
{
printf("-> write()\t-\t[OK]\n\r");
}
else
{
printf("-> write()\t-\t[ERROR]\n\r");
}
qp.flush();
if(!qp.waitForBytesWritten(100))
{
printf("-> WaitForBytesWritten()\t-\t[ERROR]\n\r");
}
qint64 nRdSz=qp.bytesAvailable();
if(nRdSz<1)
{
printf("NoDataToRead\n\r");
}
else
{
QByteArray qa;
qa=qp.readAll();
}
if(qp.isOpen())
qp.close();
return a.exec();
}
#include <QIODevice>
#include <QCoreApplication>
#include <stdio.h>
#include <stdlib.h>
#include <VLCSTR.H>
#include <VLCDSTR.H>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSerialPort qp("COM4");
if(qp.open(QIODevice::ReadWrite))
{
printf("-> QSerialPort.open()\t-\t[OK]\n\r");
}
else
{
printf("-> QSerialPort.open()\t-\t[FAILED]\n\r");
printf("-> Error: %s\n\r", qp.errorString());
}
if(qp.setBaudRate(QSerialPort::Baud57600) &&
qp.setDataBits(QSerialPort::Data8) &&
qp.setStopBits(QSerialPort::OneStop) &&
qp.setParity(QSerialPort::NoParity) &&
qp.setFlowControl(QSerialPort::NoFlowControl))
{
printf("-> port set up\t-\t[OK]\n\r");
}
//CDconString ds;
//ds.CreateDINQuery(16);
char buf[] ="$10M\r";
if(qp.write(buf, 5))
{
printf("-> write()\t-\t[OK]\n\r");
}
else
{
printf("-> write()\t-\t[ERROR]\n\r");
}
qp.flush();
if(!qp.waitForBytesWritten(100))
{
printf("-> WaitForBytesWritten()\t-\t[ERROR]\n\r");
}
qint64 nRdSz=qp.bytesAvailable();
if(nRdSz<1)
{
printf("NoDataToRead\n\r");
}
else
{
QByteArray qa;
qa=qp.readAll();
}
if(qp.isOpen())
qp.close();
return a.exec();
}
Буду рад, если подскажете где именно.
З.Ы.:
Такая же ерунда была под Убунтой на Java, поэтому взял винду и QTCreator. Но с родной утилиты запросы доходят и возвращаются.
Код:
c:\Qt\Qt5.5.0\Examples\Qt-5.5\serialport\
бери за основу пример терминала и приводи к тому что тебе нужно .
Цитата: koderAlex
что значит "немного" ?
там одиннадцать примеров .
бери за основу пример терминала и приводи к тому что тебе нужно .
Код:
c:QtQt5.5.0ExamplesQt-5.5serialport
бери за основу пример терминала и приводи к тому что тебе нужно .
Спасибо, но они тоже посылают, но не принимают. Сделал на Java. Работает отлично, жалко не так шустро, как хотелось бы.