Совершенно невероятная проблема, я работал с QSerialPort не один год, а сейчас даже если порт открывается, сигнал коннектится, то readyRead не срабатывает. Чудовищно простой код, запускается консольная программка, запускается a.exec, должно же приходить. Если открыть порт при помощи minicom то всё прекрасно работает, т.е. в плане железа всё окей. Более того, на оффтопике с Qt 5.4+ тоже всё хорошо уже с этой самой программой.
Подозреваю баг в самом Qt, однако посмотрите пожалуйста код, вдруг что-то новое упустил, может теперь требуется иначе. Нужна работа с портом по сигналам readyRead.
Смешно, но мой коллега тоже сейчас бьется уже несколько дней с проблемой, с этой же самой. В другом софте пашет, в винде Qt 5.4+ пашет, а на Linux нет.
Код: http://paste.org.ru/?jms2g2
#include <QCoreApplication>
#include <QDebug>
#include <scan.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int delay = 100;
QString rs485_pn = "/dev/ttyUSB0";
if(argc >= 2)
{
for(int i = 1; i < argc; i++)
{
QString arg(argv[i]);
qDebug() << "arg=" << arg;
if(arg.contains("/dev/")) rs485_pn = arg;
if(arg.contains("COM")) rs485_pn = arg;
}
}
QList<short> devs;
devs.append(0x2001);
devs.append(0x2002);
for(int i = 0; i < 5; i++)
{
devs.append(0x3001 + i);
devs.append(0x4001 + i);
}
for(int i = 0; i < 5; i++)
{
devs.append(0x1001 + i);
devs.append(0x1011 + i);
}
for(int i = 0; i < 3; i++)
{
devs.append(0x6001 + i);
}
foreach(short dev, devs) qDebug("dev %04X", dev);
qDebug() << "-----";
qDebug() << "scan port=" << rs485_pn;
qDebug() << "delay=" << delay << "ms";
qDebug() << "-----";
scan sc(devs, rs485_pn, delay);
return a.exec();
}